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
|
from . import bibstruct
|
||||||
|
|
||||||
|
|
||||||
@ -24,15 +25,16 @@ class QueryFilter(object):
|
|||||||
if case_sensitive is None:
|
if case_sensitive is None:
|
||||||
case_sensitive = not query.islower()
|
case_sensitive = not query.islower()
|
||||||
self.case = case_sensitive
|
self.case = case_sensitive
|
||||||
self.query = self._lower(query)
|
self.query = self._normalize(query)
|
||||||
|
|
||||||
def __call__(self, paper):
|
def __call__(self, paper):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def _is_query_in(self, field_value):
|
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()
|
return s if self.case else s.lower()
|
||||||
|
|
||||||
|
|
||||||
|
@ -84,6 +84,14 @@ class TestCheckField(unittest.TestCase):
|
|||||||
self.assertFalse(
|
self.assertFalse(
|
||||||
FieldFilter('title', 'nice', case_sensitive=True)(doe_paper))
|
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):
|
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:doe', 'year:2014-'])(doe_paper))
|
||||||
self.assertFalse(get_paper_filter(['author:doee', '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__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user