Ejemplo n.º 1
0
 def apply_offset(entity: TypeMessageEntity, inner_offset: int
                  ) -> Optional[TypeMessageEntity]:
     entity = Entity.copy(entity)
     entity.offset += inner_offset
     if entity.offset < 0:
         entity.offset = 0
     elif entity.offset > len(self.text):
         return None
     elif entity.offset + entity.length > len(self.text):
         entity.length = len(self.text) - entity.offset
     return entity
Ejemplo n.º 2
0
def compare_entity(a: TypeMessageEntity,
                   b: TypeMessageEntity,
                   ignore_position: bool = False) -> bool:
    if type(a) != type(b):
        return False

    a_dict = a.to_dict()
    b_dict = b.to_dict()
    if ignore_position:
        for d in (a_dict, b_dict):
            for key in ('offset', 'length'):
                try:
                    del d[key]
                except KeyError:
                    pass

    return a_dict == b_dict
Ejemplo n.º 3
0
 def copy(entity: TypeMessageEntity) -> Optional[TypeMessageEntity]:
     if not entity:
         return None
     kwargs = {
         "offset": entity.offset,
         "length": entity.length,
     }
     if isinstance(entity, Pre):
         kwargs["language"] = entity.language
     elif isinstance(entity, TextURL):
         kwargs["url"] = entity.url
     elif isinstance(entity, (MentionName, InputMentionName)):
         kwargs["user_id"] = entity.user_id
     return entity.__class__(**kwargs)
Ejemplo n.º 4
0
def copy_entity(entity: TypeMessageEntity) -> TypeMessageEntity:
    entity_dict = entity.to_dict()
    del entity_dict['_']
    return type(entity)(**entity_dict)