Implements latex escape in queries.
This commit is contained in:
parent
cff028d345
commit
1bcbf65dd8
@ -1,3 +1,4 @@
|
||||
from bibtexparser.latexenc import latex_to_unicode
|
||||
from . import bibstruct
|
||||
|
||||
|
||||
@ -24,15 +25,16 @@ class QueryFilter(object):
|
||||
if case_sensitive is None:
|
||||
case_sensitive = not query.islower()
|
||||
self.case = case_sensitive
|
||||
self.query = self._lower(query)
|
||||
self.query = self._normalize(query)
|
||||
|
||||
def __call__(self, paper):
|
||||
raise NotImplementedError
|
||||
|
||||
def _is_query_in(self, field_value):
|
||||
return self.query in self._lower(field_value)
|
||||
return self.query in self._normalize(field_value)
|
||||
|
||||
def _lower(self, s):
|
||||
def _normalize(self, s):
|
||||
s = latex_to_unicode(s)
|
||||
return s if self.case else s.lower()
|
||||
|
||||
|
||||
|
@ -84,6 +84,14 @@ class TestCheckField(unittest.TestCase):
|
||||
self.assertFalse(
|
||||
FieldFilter('title', 'nice', case_sensitive=True)(doe_paper))
|
||||
|
||||
def test_latex_enc(self):
|
||||
latexenc_paper = doe_paper.deepcopy()
|
||||
latexenc_paper.bibentry['Doe2013']['title'] = "{G}r{\\\"u}n"
|
||||
self.assertTrue(
|
||||
FieldFilter('title', 'Grün')(latexenc_paper))
|
||||
self.assertTrue(
|
||||
FieldFilter('title', 'Gr{\\\"u}n')(latexenc_paper))
|
||||
|
||||
|
||||
class TestCheckQueryBlock(unittest.TestCase):
|
||||
|
||||
@ -122,6 +130,14 @@ class TestFilterPaper(unittest.TestCase):
|
||||
self.assertFalse(get_paper_filter(['author:doe', 'year:2014-'])(doe_paper))
|
||||
self.assertFalse(get_paper_filter(['author:doee', 'year:2014'])(doe_paper))
|
||||
|
||||
def test_latex_enc(self):
|
||||
latexenc_paper = doe_paper.deepcopy()
|
||||
latexenc_paper.bibentry['Doe2013']['title'] = "{E}l Ni{\~n}o"
|
||||
latexenc_paper.bibentry['Doe2013']['author'][0] = "Erd\H{o}s, Paul"
|
||||
self.assertTrue(get_paper_filter(['title:El'])(latexenc_paper))
|
||||
self.assertTrue(get_paper_filter(['title:Niño'])(latexenc_paper))
|
||||
self.assertTrue(get_paper_filter(['author:erdős'])(latexenc_paper))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user