mirror of
https://github.com/alecthomas/chroma.git
synced 2026-06-20 11:35:42 +02:00
pygments2chroma updates (#509)
This commit is contained in:
+26
-23
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user