Exemplo n.º 1
0
    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, '')
Exemplo n.º 2
0
    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, '')
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
        ("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}"),
Exemplo n.º 5
0
 def specs(self):
     return {
         "macros": [std_macro("RequirePackage", True, 1)]
     }
Exemplo n.º 6
0
 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, '[{{{')
Exemplo n.º 7
0
 def test_idiom_2b(self):
     spec = std_macro(('cmd', True, 3), )
     self.assertEqual(spec.macroname, 'cmd')
     self.assertEqual(spec.args_parser.argspec, '[{{{')
Exemplo n.º 8
0
 def test_idiom_2(self):
     spec = std_macro(('cmd', '*[{['), )
     self.assertEqual(spec.macroname, 'cmd')
     self.assertEqual(spec.args_parser.argspec, '*[{[')
Exemplo n.º 9
0
 def test_idiom_1c(self):
     spec = std_macro('cmd', None, '{{{')
     self.assertEqual(spec.macroname, 'cmd')
     self.assertEqual(spec.args_parser.argspec, '{{{')