Skip to content

Commit d964e7c

Browse files
authored
pygments2chroma updates (#509)
1 parent 9391121 commit d964e7c

File tree

2 files changed

+29
-26
lines changed

2 files changed

+29
-26
lines changed

Diff for: README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,10 @@ using the included Python 3 script `pygments2chroma.py`. I use something like
210210
the following:
211211

212212
```sh
213-
python3 ~/Projects/chroma/_tools/pygments2chroma.py \
213+
python3 _tools/pygments2chroma.py \
214214
pygments.lexers.jvm.KotlinLexer \
215-
> ~/Projects/chroma/lexers/kotlin.go \
216-
&& gofmt -s -w ~/Projects/chroma/lexers/*.go
215+
> lexers/k/kotlin.go \
216+
&& gofmt -s -w lexers/k/kotlin.go
217217
```
218218

219219
See notes in [pygments-lexers.txt](https://github.com/alecthomas/chroma/blob/master/pygments-lexers.txt)

Diff for: _tools/pygments2chroma.py

+26-23
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,43 @@
1212

1313

1414
TEMPLATE = r'''
15-
package lexers
15+
package {{package}}
1616
1717
import (
18-
. "github.com/alecthomas/chroma" // nolint
19-
"github.com/alecthomas/chroma/lexers/internal"
18+
. "github.com/alecthomas/chroma" // nolint
19+
"github.com/alecthomas/chroma/lexers/internal"
2020
)
2121
2222
// {{upper_name}} lexer.
2323
var {{upper_name}} = internal.Register(MustNewLazyLexer(
24-
&Config{
25-
Name: "{{name}}",
26-
Aliases: []string{ {{#aliases}}"{{.}}", {{/aliases}} },
27-
Filenames: []string{ {{#filenames}}"{{.}}", {{/filenames}} },
28-
MimeTypes: []string{ {{#mimetypes}}"{{.}}", {{/mimetypes}} },
24+
&Config{
25+
Name: "{{name}}",
26+
{{=<% %>=}}
27+
Aliases: []string{<%#aliases%>"<%.%>", <%/aliases%>},
28+
Filenames: []string{<%#filenames%>"<%.%>", <%/filenames%>},
29+
MimeTypes: []string{<%#mimetypes%>"<%.%>", <%/mimetypes%>},
30+
<%={{ }}=%>
2931
{{#re_not_multiline}}
30-
NotMultiline: true,
32+
NotMultiline: true,
3133
{{/re_not_multiline}}
3234
{{#re_dotall}}
33-
DotAll: true,
35+
DotAll: true,
3436
{{/re_dotall}}
3537
{{#re_ignorecase}}
36-
CaseInsensitive: true,
38+
CaseInsensitive: true,
3739
{{/re_ignorecase}}
38-
},
39-
func() Rules {
40-
return Rules{
40+
},
41+
func() Rules {
42+
return Rules{
4143
{{#tokens}}
42-
"{{state}}": {
43-
{{#rules}}
44-
{{{.}}},
45-
{{/rules}}
46-
},
44+
"{{state}}": {
45+
{{#rules}}
46+
{{{.}}},
47+
{{/rules}}
48+
},
4749
{{/tokens}}
48-
}
49-
},
50+
}
51+
},
5052
))
5153
'''
5254

@@ -150,7 +152,7 @@ def translate_rules(rules):
150152
modifier = 'Push("%s")' % '", "'.join(rule[2])
151153
else:
152154
raise ValueError('unsupported modifier %r' % (rule[2],))
153-
out.append('{{ {}, {}, {} }}'.format(regex, emitter, modifier))
155+
out.append('{{{}, {}, {}}}'.format(regex, emitter, modifier))
154156
elif isinstance(rule, pygments_lexer.include):
155157
out.append('Include("{}")'.format(rule))
156158
elif isinstance(rule, pygments_lexer.default):
@@ -185,9 +187,10 @@ def main():
185187
assert issubclass(lexer_cls, pygments_lexer.RegexLexer), 'can only translate from RegexLexer'
186188

187189
print(pystache.render(TEMPLATE, TemplateView(
190+
package=lexer_cls.name.lower()[0],
188191
name=lexer_cls.name,
189192
regex_flags=lexer_cls.flags,
190-
upper_name=to_camel_case(lexer_cls.name),
193+
upper_name=to_camel_case(re.sub(r'\W', '_', lexer_cls.name)),
191194
aliases=lexer_cls.aliases,
192195
filenames=lexer_cls.filenames,
193196
mimetypes=lexer_cls.mimetypes,

0 commit comments

Comments
 (0)