Skip to content

Commit 3ed2db8

Browse files
authored
Add Gemfile.lock lexer (& ruby improvements) (#1269)
This PR adds highlighting for [Bundler](https://bundler.io)'s lockfiles, and adds a few Ruby file extensions to the list. - `*.json.jbuilder` for the [`jbuilder`](https://github.com/rails/jbuilder) gem - `.pryrc` for [`pry`](https://pry.github.io/)'s configuration file - `Appraisals` for the [`appraisal`](https://github.com/thoughtbot/appraisal) gem
1 parent 41fb546 commit 3ed2db8

4 files changed

Lines changed: 189 additions & 0 deletions

File tree

lexers/embedded/gemfile_lock.xml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
<lexer>
2+
<config>
3+
<name>Gemfile.lock</name>
4+
<alias>gemfile-lock</alias>
5+
<alias>gemfilelock</alias>
6+
<filename>Gemfile.lock</filename>
7+
<filename>*.gemfile.lock</filename>
8+
</config>
9+
<rules>
10+
<state name="root">
11+
<rule pattern="^(GIT|PATH|GEM|PLUGIN SOURCE|PLATFORMS|DEPENDENCIES|BUNDLED WITH|RUBY VERSION|CHECKSUMS)$">
12+
<token type="Keyword"/>
13+
</rule>
14+
<rule pattern="^([ \t]+)(remote|revision|ref|branch|tag|submodules|specs|glob)(:)">
15+
<bygroups>
16+
<token type="Text"/>
17+
<token type="NameAttribute"/>
18+
<token type="Punctuation"/>
19+
</bygroups>
20+
</rule>
21+
<rule pattern="\(">
22+
<token type="Punctuation"/>
23+
<push state="version"/>
24+
</rule>
25+
<rule pattern="!">
26+
<token type="Operator"/>
27+
</rule>
28+
<rule pattern="https?://\S+">
29+
<token type="LiteralStringSymbol"/>
30+
</rule>
31+
<rule pattern="git@\S+">
32+
<token type="LiteralStringSymbol"/>
33+
</rule>
34+
<rule pattern="sha\d+=[A-Fa-f0-9]+">
35+
<token type="LiteralNumberHex"/>
36+
</rule>
37+
<rule pattern="\b[a-f0-9]{7,40}\b">
38+
<token type="LiteralNumberHex"/>
39+
</rule>
40+
<rule pattern="\b\d[\w.]*">
41+
<token type="LiteralNumber"/>
42+
</rule>
43+
<rule pattern="[A-Za-z_][A-Za-z0-9_.-]*">
44+
<token type="Name"/>
45+
</rule>
46+
<rule pattern="\n">
47+
<token type="Text"/>
48+
</rule>
49+
<rule pattern="[ \t]+">
50+
<token type="Text"/>
51+
</rule>
52+
<rule pattern=".">
53+
<token type="Text"/>
54+
</rule>
55+
</state>
56+
<state name="version">
57+
<rule pattern="\)">
58+
<token type="Punctuation"/>
59+
<pop depth="1"/>
60+
</rule>
61+
<rule pattern="(~&gt;|&gt;=|&lt;=|!=|=|&lt;|&gt;)">
62+
<token type="Operator"/>
63+
</rule>
64+
<rule pattern="[0-9][\w.]*">
65+
<token type="LiteralNumber"/>
66+
</rule>
67+
<rule pattern="[A-Za-z][\w.-]*">
68+
<token type="Name"/>
69+
</rule>
70+
<rule pattern=",">
71+
<token type="Punctuation"/>
72+
</rule>
73+
<rule pattern="\s+">
74+
<token type="Text"/>
75+
</rule>
76+
<rule pattern=".">
77+
<token type="Text"/>
78+
</rule>
79+
</state>
80+
</rules>
81+
</lexer>

lexers/embedded/ruby.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
<filename>*.rbx</filename>
1313
<filename>*.duby</filename>
1414
<filename>Gemfile</filename>
15+
<filename>*.gemfile</filename>
1516
<filename>Vagrantfile</filename>
17+
<filename>Appraisals</filename>
18+
<filename>.pryrc</filename>
19+
<filename>*.json.jbuilder</filename>
1620
<mime_type>text/x-ruby</mime_type>
1721
<mime_type>application/x-ruby</mime_type>
1822
<dot_all>true</dot_all>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
GEM
2+
remote: https://rubygems.org/
3+
specs:
4+
actionpack (7.0.4)
5+
rack (~> 2.0, >= 2.2.0)
6+
7+
GIT
8+
remote: https://github.com/foo/bar.git
9+
revision: abc123def4567890abc123def4567890abc12345
10+
ref: main
11+
12+
DEPENDENCIES
13+
rails (~> 7.0)
14+
some-gem!
15+
16+
CHECKSUMS
17+
rack (2.2.0) sha256=deadbeefcafebabe1234567890abcdef1234567890abcdef1234567890abcdef
18+
19+
RUBY VERSION
20+
ruby 3.2.0p0
21+
22+
BUNDLED WITH
23+
2.4.1
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
[
2+
{"type":"Keyword","value":"GEM"},
3+
{"type":"Text","value":"\n "},
4+
{"type":"NameAttribute","value":"remote"},
5+
{"type":"Punctuation","value":":"},
6+
{"type":"Text","value":" "},
7+
{"type":"LiteralStringSymbol","value":"https://rubygems.org/"},
8+
{"type":"Text","value":"\n "},
9+
{"type":"NameAttribute","value":"specs"},
10+
{"type":"Punctuation","value":":"},
11+
{"type":"Text","value":"\n "},
12+
{"type":"Name","value":"actionpack"},
13+
{"type":"Text","value":" "},
14+
{"type":"Punctuation","value":"("},
15+
{"type":"LiteralNumber","value":"7.0.4"},
16+
{"type":"Punctuation","value":")"},
17+
{"type":"Text","value":"\n "},
18+
{"type":"Name","value":"rack"},
19+
{"type":"Text","value":" "},
20+
{"type":"Punctuation","value":"("},
21+
{"type":"Operator","value":"~\u003e"},
22+
{"type":"Text","value":" "},
23+
{"type":"LiteralNumber","value":"2.0"},
24+
{"type":"Punctuation","value":","},
25+
{"type":"Text","value":" "},
26+
{"type":"Operator","value":"\u003e="},
27+
{"type":"Text","value":" "},
28+
{"type":"LiteralNumber","value":"2.2.0"},
29+
{"type":"Punctuation","value":")"},
30+
{"type":"Text","value":"\n\n"},
31+
{"type":"Keyword","value":"GIT"},
32+
{"type":"Text","value":"\n "},
33+
{"type":"NameAttribute","value":"remote"},
34+
{"type":"Punctuation","value":":"},
35+
{"type":"Text","value":" "},
36+
{"type":"LiteralStringSymbol","value":"https://github.com/foo/bar.git"},
37+
{"type":"Text","value":"\n "},
38+
{"type":"NameAttribute","value":"revision"},
39+
{"type":"Punctuation","value":":"},
40+
{"type":"Text","value":" "},
41+
{"type":"LiteralNumberHex","value":"abc123def4567890abc123def4567890abc12345"},
42+
{"type":"Text","value":"\n "},
43+
{"type":"NameAttribute","value":"ref"},
44+
{"type":"Punctuation","value":":"},
45+
{"type":"Text","value":" "},
46+
{"type":"Name","value":"main"},
47+
{"type":"Text","value":"\n\n"},
48+
{"type":"Keyword","value":"DEPENDENCIES"},
49+
{"type":"Text","value":"\n "},
50+
{"type":"Name","value":"rails"},
51+
{"type":"Text","value":" "},
52+
{"type":"Punctuation","value":"("},
53+
{"type":"Operator","value":"~\u003e"},
54+
{"type":"Text","value":" "},
55+
{"type":"LiteralNumber","value":"7.0"},
56+
{"type":"Punctuation","value":")"},
57+
{"type":"Text","value":"\n "},
58+
{"type":"Name","value":"some-gem"},
59+
{"type":"Operator","value":"!"},
60+
{"type":"Text","value":"\n\n"},
61+
{"type":"Keyword","value":"CHECKSUMS"},
62+
{"type":"Text","value":"\n "},
63+
{"type":"Name","value":"rack"},
64+
{"type":"Text","value":" "},
65+
{"type":"Punctuation","value":"("},
66+
{"type":"LiteralNumber","value":"2.2.0"},
67+
{"type":"Punctuation","value":")"},
68+
{"type":"Text","value":" "},
69+
{"type":"LiteralNumberHex","value":"sha256=deadbeefcafebabe1234567890abcdef1234567890abcdef1234567890abcdef"},
70+
{"type":"Text","value":"\n\n"},
71+
{"type":"Keyword","value":"RUBY VERSION"},
72+
{"type":"Text","value":"\n "},
73+
{"type":"Name","value":"ruby"},
74+
{"type":"Text","value":" "},
75+
{"type":"LiteralNumber","value":"3.2.0p0"},
76+
{"type":"Text","value":"\n\n"},
77+
{"type":"Keyword","value":"BUNDLED WITH"},
78+
{"type":"Text","value":"\n "},
79+
{"type":"LiteralNumber","value":"2.4.1"},
80+
{"type":"Text","value":"\n"}
81+
]

0 commit comments

Comments
 (0)