pygments2chroma updates (#509)

This commit is contained in:
Ville Skyttä
2021-05-19 08:15:25 +10:00
committed by GitHub
parent 9391121b92
commit d964e7c774
2 changed files with 29 additions and 26 deletions
+26 -23
View File
@@ -12,41 +12,43 @@ from pygments.token import _TokenType
TEMPLATE = r'''
package lexers
package {{package}}
import (
. "github.com/alecthomas/chroma" // nolint
"github.com/alecthomas/chroma/lexers/internal"
. "github.com/alecthomas/chroma" // nolint
"github.com/alecthomas/chroma/lexers/internal"
)
// {{upper_name}} lexer.
var {{upper_name}} = internal.Register(MustNewLazyLexer(
&Config{
Name: "{{name}}",
Aliases: []string{ {{#aliases}}"{{.}}", {{/aliases}} },
Filenames: []string{ {{#filenames}}"{{.}}", {{/filenames}} },
MimeTypes: []string{ {{#mimetypes}}"{{.}}", {{/mimetypes}} },
&Config{
Name: "{{name}}",
{{=<% %>=}}
Aliases: []string{<%#aliases%>"<%.%>", <%/aliases%>},
Filenames: []string{<%#filenames%>"<%.%>", <%/filenames%>},
MimeTypes: []string{<%#mimetypes%>"<%.%>", <%/mimetypes%>},
<%={{ }}=%>
{{#re_not_multiline}}
NotMultiline: true,
NotMultiline: true,
{{/re_not_multiline}}
{{#re_dotall}}
DotAll: true,
DotAll: true,
{{/re_dotall}}
{{#re_ignorecase}}
CaseInsensitive: true,
CaseInsensitive: true,
{{/re_ignorecase}}
},
func() Rules {
return Rules{
},
func() Rules {
return Rules{
{{#tokens}}
"{{state}}": {
{{#rules}}
{{{.}}},
{{/rules}}
},
"{{state}}": {
{{#rules}}
{{{.}}},
{{/rules}}
},
{{/tokens}}
}
},
}
},
))
'''
@@ -150,7 +152,7 @@ def translate_rules(rules):
modifier = 'Push("%s")' % '", "'.join(rule[2])
else:
raise ValueError('unsupported modifier %r' % (rule[2],))
out.append('{{ {}, {}, {} }}'.format(regex, emitter, modifier))
out.append('{{{}, {}, {}}}'.format(regex, emitter, modifier))
elif isinstance(rule, pygments_lexer.include):
out.append('Include("{}")'.format(rule))
elif isinstance(rule, pygments_lexer.default):
@@ -185,9 +187,10 @@ def main():
assert issubclass(lexer_cls, pygments_lexer.RegexLexer), 'can only translate from RegexLexer'
print(pystache.render(TEMPLATE, TemplateView(
package=lexer_cls.name.lower()[0],
name=lexer_cls.name,
regex_flags=lexer_cls.flags,
upper_name=to_camel_case(lexer_cls.name),
upper_name=to_camel_case(re.sub(r'\W', '_', lexer_cls.name)),
aliases=lexer_cls.aliases,
filenames=lexer_cls.filenames,
mimetypes=lexer_cls.mimetypes,