def test_filter_context_4(self): db = LatexContextDb() db.set_unknown_macro_spec(MacroSpec('<macro unknown>')) db.set_unknown_environment_spec(EnvironmentSpec('<env unknown>')) db.add_context_category('cat1', [ std_macro('aaa', '{'), std_macro('bbb', '[{[') ], [ std_environment('eaaa', '{'), std_environment('ebbb', '[{[') ]) db.add_context_category('cat2', [ std_macro('aaa', '[{'), std_macro('ccc', None) ], [ std_environment('eaaa', '[{'), std_environment('eccc', None) ]) db.add_context_category('cat3', [ std_macro('ccc', '*{'), std_macro('ddd', '{{[') ], [ std_environment('eccc', '*{'), std_environment('eddd', '{{[') ], prepend=True) db2 = db.filter_context(keep_categories=['cat1', 'cat3'], exclude_categories=['cat3'], keep_which=['environments']) # no macros should exist any longer self.assertEqual(db2.get_macro_spec('aaa').macroname, '<macro unknown>') self.assertEqual(db2.get_macro_spec('aaa').args_parser.argspec, '') self.assertEqual(db2.get_macro_spec('ddd').macroname, '<macro unknown>') self.assertEqual(db2.get_macro_spec('ddd').args_parser.argspec, '') # this should give 'eaaa' from cat1 self.assertEqual(db2.get_environment_spec('eaaa').environmentname, 'eaaa') self.assertEqual(db2.get_environment_spec('eaaa').args_parser.argspec, '{') # this should no longer exist self.assertEqual(db2.get_environment_spec('eddd').environmentname, '<env unknown>') self.assertEqual(db2.get_environment_spec('eddd').args_parser.argspec, '')
def test_can_get_macro_spec(self): db = LatexContextDb() db.set_unknown_macro_spec(MacroSpec('<unknown>')) db.add_context_category( 'cat1', [std_macro('aaa', '{'), std_macro('bbb', '[{[')], []) db.add_context_category( 'cat2', [std_macro('aaa', '[{'), std_macro('ccc', None)], []) db.add_context_category( 'cat3', [std_macro('ccc', '*{'), std_macro('ddd', '{{[')], [], prepend=True) self.assertEqual(list(db.categories()), ['cat3', 'cat1', 'cat2']) self.assertEqual(db.get_macro_spec('aaa').macroname, 'aaa') self.assertEqual(db.get_macro_spec('aaa').args_parser.argspec, '{') self.assertEqual(db.get_macro_spec('bbb').macroname, 'bbb') self.assertEqual(db.get_macro_spec('bbb').args_parser.argspec, '[{[') self.assertEqual(db.get_macro_spec('ccc').macroname, 'ccc') self.assertEqual(db.get_macro_spec('ccc').args_parser.argspec, '*{') self.assertEqual(db.get_macro_spec('ddd').macroname, 'ddd') self.assertEqual(db.get_macro_spec('ddd').args_parser.argspec, '{{[') # default for unknown self.assertEqual( db.get_macro_spec('nonexistent').macroname, '<unknown>') self.assertEqual( db.get_macro_spec('nonexistent').args_parser.argspec, '')
def test_filter_context_0(self): db = LatexContextDb() db.set_unknown_macro_spec(MacroSpec('<macro unknown>')) db.set_unknown_environment_spec(EnvironmentSpec('<env unknown>')) db.add_context_category('cat1', [ std_macro('aaa', '{'), std_macro('bbb', '[{[') ], [ std_environment('eaaa', '{'), std_environment('ebbb', '[{[') ]) db.add_context_category('cat2', [ std_macro('aaa', '[{'), std_macro('ccc', None) ], [ std_environment('eaaa', '[{'), std_environment('eccc', None) ]) db.add_context_category('cat3', [ std_macro('ccc', '*{'), std_macro('ddd', '{{[') ], [ std_environment('eccc', '*{'), std_environment('eddd', '{{[') ], prepend=True) db2 = db.filter_context(keep_categories=['cat1', 'cat2']) # this should give 'ccc' from cat2, not cat3 self.assertEqual(db2.get_macro_spec('ccc').macroname, 'ccc') self.assertEqual(db2.get_macro_spec('ccc').args_parser.argspec, '') # this should no longer exist self.assertEqual(db2.get_macro_spec('ddd').macroname, '<macro unknown>') self.assertEqual(db2.get_macro_spec('ddd').args_parser.argspec, '') # this should give 'eccc' from cat2, not cat3 self.assertEqual(db2.get_environment_spec('eccc').environmentname, 'eccc') self.assertEqual(db2.get_environment_spec('eccc').args_parser.argspec, '') # this should no longer exist self.assertEqual(db2.get_environment_spec('eddd').environmentname, '<env unknown>') self.assertEqual(db2.get_environment_spec('eddd').args_parser.argspec, '') # "unknowns" should be preserved self.assertEqual(db2.unknown_macro_spec, db.unknown_macro_spec) self.assertEqual(db2.unknown_environment_spec, db.unknown_environment_spec) self.assertEqual(db2.unknown_specials_spec, db.unknown_specials_spec)
("C", "\N{DOUBLE-STRUCK CAPITAL C}"), ("N", "\N{DOUBLE-STRUCK CAPITAL N}"), ("Q", "\N{DOUBLE-STRUCK CAPITAL Q}"), ("R", "\N{DOUBLE-STRUCK CAPITAL R}"), ("Z", "\N{DOUBLE-STRUCK CAPITAL Z}"), ("set", "{%s}"), ("sqbrk", "[%s]"), ("tuple", "(%s)"), # Overrides ("implies", "\N{RIGHTWARDS DOUBLE ARROW}"), ) ] ARGS = [ # MathJax std_macro("above", False, 2), std_macro("cfrac", False, 2), std_macro("dfrac", False, 2), std_macro("frac", False, 2), std_macro("over", False, 2), std_macro("sqrt", True, 1), std_macro("tfrac", False, 2), # ProofWiki std_macro("paren", False, 1), std_macro("set", False, 1), std_macro("sqbrk", False, 1), std_macro("tuple", False, 1), ] ACCENTS = ( ("bcancel", "\N{COMBINING LONG SOLIDUS OVERLAY}"),
def specs(self): return { "macros": [std_macro("RequirePackage", True, 1)] }
def test_idiom_3(self): # spec is already a `MacroSpec` -- no-op spec = std_macro(std_macro('cmd', True, 3)) self.assertEqual(spec.macroname, 'cmd') self.assertEqual(spec.args_parser.argspec, '[{{{')
def test_idiom_2b(self): spec = std_macro(('cmd', True, 3), ) self.assertEqual(spec.macroname, 'cmd') self.assertEqual(spec.args_parser.argspec, '[{{{')
def test_idiom_2(self): spec = std_macro(('cmd', '*[{['), ) self.assertEqual(spec.macroname, 'cmd') self.assertEqual(spec.args_parser.argspec, '*[{[')
def test_idiom_1c(self): spec = std_macro('cmd', None, '{{{') self.assertEqual(spec.macroname, 'cmd') self.assertEqual(spec.args_parser.argspec, '{{{')