Add basic document snippets.
This commit is contained in:
parent
caf36174e4
commit
922af24e1b
|
@ -230,6 +230,9 @@ class XanaDoc(Item):
|
|||
|
||||
id = Column(Integer, ForeignKey(Item.id), primary_key=True)
|
||||
|
||||
def snippet(self):
|
||||
return self.text
|
||||
|
||||
class XanaLink(Item):
|
||||
__tablename__ = 'xanalink'
|
||||
__mapper_args__ = {'polymorphic_identity': 'xanalink'}
|
||||
|
@ -274,6 +277,9 @@ class XanaLink(Item):
|
|||
titles[item] = source_of_title.text[start:length + start]
|
||||
return titles
|
||||
|
||||
def snippet(self):
|
||||
return self.text
|
||||
|
||||
class SourceDoc(Item):
|
||||
__tablename__ = 'sourcedoc'
|
||||
__mapper_args__ = {'polymorphic_identity': 'sourcedoc'}
|
||||
|
@ -290,6 +296,16 @@ class SourceDoc(Item):
|
|||
def price_per_character(self):
|
||||
return self.db_price_per_character or self.db_document_price / len(self.text)
|
||||
|
||||
def snippet(self, length=255, killwords=False, end='...', leeway=5):
|
||||
s = self.text
|
||||
assert length >= len(end), 'expected length >= %s, got %s' % (len(end), length)
|
||||
assert leeway >= 0, 'expected leeway >= 0, got %s' % leeway
|
||||
if len(s) <= length + leeway:
|
||||
return s
|
||||
if killwords:
|
||||
return s[:length - len(end)] + end
|
||||
result = s[:length - len(end)].rsplit(' ', 1)[0]
|
||||
return result + end
|
||||
|
||||
|
||||
configure_mappers()
|
||||
|
|
Loading…
Reference in a new issue