juicelang-theme 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/custom_tags.rb +3 -3
  3. data/lib/juice_lexer.rb +181 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c746809007ebaf03a3bf7b3d9c0351ab81e3720b76236cbbfc8098a4e20d2b97
4
- data.tar.gz: 73f56175ee72e9e18f24173bbd1dc4cada95e1aa08d86e027720dc497fde0dcb
3
+ metadata.gz: d091d794594724f2fd4ddd2a8cc25650237a83517536a4bfd13ced599aac2a9c
4
+ data.tar.gz: 7645974aa4ce62c401c117905c266df4a23986b7dc1b31928baa03082900086e
5
5
  SHA512:
6
- metadata.gz: 2d1de2220481122b1f90971b166492d5f9c5a28c3430765535c8f7e4b9fa2654ff2daa64f0eb166fff65dd79172e3c99139df76a8c5d046661c17d7289fdc530
7
- data.tar.gz: 01e25c0a3100fd4763e76f404899b4cca4b575c7c26c69656f3ef9ff76ebffd4af0b45a7b85b0a24865c465ae522d83343d285ad5850edda25c7242ada249bd6
6
+ metadata.gz: bf17f82e1968ada92376d0fadf83f4cab66fa9cf97fbf9ade047f6f779dacc6ce31c76a0045d2ac8b3eeeef921318fc9c4461457a457b0fdbe06de47d5059b84
7
+ data.tar.gz: 7bf696530ca7be79464512b87b728f2379867a96e3667e308012b9d86f281c633c2c6d5a0ef0ad8e0ac22d614f4e74bf324d1c20d1ab55c76e9522cb8d8dfde1
data/lib/custom_tags.rb CHANGED
@@ -16,13 +16,13 @@ class ToCTag < Liquid::Tag
16
16
  toc = Kramdown::Document.new(context.registers[:page]['content'], {
17
17
  input: "GFM"
18
18
  }).to_ToC
19
- build_list(toc.select { |item| item[0] == 2 }, toc.first[1])
19
+ build_list(toc.select { |item| item[0] == 2 }, toc.first)
20
20
  end
21
21
 
22
22
  private
23
23
 
24
- def build_list(toc, topLink)
25
- result = '<li class="uk-active"><a href="#' + topLink + '">Top</a></li>' + "\n"
24
+ def build_list(toc, top)
25
+ result = '<li class="uk-active"><a href="#' + top[1] + '">' + top[2][0].value + '</a></li>' + "\n"
26
26
 
27
27
  for i in 0...toc.count
28
28
  item = toc[i]
data/lib/juice_lexer.rb CHANGED
@@ -14,7 +14,187 @@ Jekyll::Hooks.register :site, :pre_render do |site|
14
14
  filenames '*.juice'
15
15
 
16
16
  state :root do
17
- rule %r/./m, Text
17
+ mixin :whitespace
18
+ mixin :keyword
19
+ mixin :operator
20
+ mixin :punctuation
21
+ mixin :identifier
22
+ mixin :literal
23
+ end
24
+
25
+ state :whitespace do
26
+ rule %r/[\x20\x0A\x0D\x09\x0B\x0C\x00]+/, Text::Whitespace
27
+ rule %r(//.*\n), Comment::Single
28
+ rule %r(/\*), Comment::Multiline, :multiline_comment
29
+ end
30
+
31
+ state :multiline_comment do
32
+ rule %r/(?:[^\*\/]|\*(?!\/)|\/(?!\*))+/, Comment::Multiline
33
+
34
+ rule %r(/\*), Comment::Multiline, :multiline_comment
35
+ rule %r(\*/), Comment::Multiline, :pop!
36
+ end
37
+
38
+ state :keyword do
39
+ rule %r/binary|enum|extension|func|import|init|internal|let|module|operator|private|precedencegroup|public|static|struct|subscript|throws|trait|type|typeprivate|var/, Keyword::Declaration
40
+ rule %r/break|case|catch|continue|default|defer|do|else|fallthrough|for|guard|if|in|loop|match|return|throw|where|while/, Keyword
41
+ rule %r/as|case|is|self|try/, Keyword
42
+ rule %r/any|some|throws|_/, Keyword::Type
43
+ rule %r/_/, Keyword
44
+ rule %r/above|associativity|below|binary|didSet|get|indirect|left|none|postfix|prefix|right|set|Type|value|willSet/, Keyword
45
+ end
46
+
47
+ state :operator do
48
+ rule %r/[+\-\*\/%<>=&\|\^!\?~]+/, Operator
49
+ rule %r/\.[+\-\*\/%<>=&\|\^!\?~\.]+/, Operator
50
+ end
51
+
52
+ state :punctuation do
53
+ rule %r/\(|\)|\[|\]|\{|\}|\.|,|:|;|=|&|->|=>|`|\?|!/, Punctuation
54
+ end
55
+
56
+ state :identifier do
57
+ rule %r/[_A-Za-z][_A-Za-z0-9]*/, Name
58
+ rule %r/`[_A-Za-z][_A-Za-z0-9]*`/, Name
59
+ end
60
+
61
+ state :literal do
62
+ rule %r/true|false|nil/, Keyword::Constant
63
+ rule %r/'/, Str::Delimiter, :character_literal
64
+
65
+ rule %r/(#*)"""/ do |m|
66
+ token Str::Delimiter
67
+ @multiline = true
68
+ @rawLevel = m[1].length
69
+ push :string_literal
70
+ end
71
+
72
+ rule %r/(#*)"/ do |m|
73
+ token Str::Delimiter
74
+ @multiline = false
75
+ @rawLevel = m[1].length
76
+ push :string_literal
77
+ end
78
+
79
+ rule %r/[0-9][0-9_]*(?:\.[0-9][0-9_]*(?:[eE][+-]?[0-9][0-9_]*)?|[eE][+-]?[0-9][0-9_]*)/, Num::Float
80
+ rule %r/[0-9][0-9_]*/, Num::Integer
81
+ rule %r/0b[01][01_]*/, Num::Bin
82
+ rule %r/0o[0-7][0-7_]*/, Num::Oct
83
+ rule %r/0x[0-9a-fA-F][0-9a-fA-F_]*/, Num::Hex
84
+ end
85
+
86
+ state :character_literal do
87
+ rule %r/[^\\']/ do
88
+ token Str::Char
89
+ goto :character_literal_ending
90
+ end
91
+
92
+ rule %r/\\/ do
93
+ token Str::Escape
94
+ goto :character_literal_ending
95
+ push :escape
96
+ end
97
+ end
98
+
99
+ state :character_literal_ending do
100
+ rule %r/'/, Str::Delimiter, :pop!
101
+ end
102
+
103
+ state :string_literal do
104
+ rule %r/[^\\"\$]+/, Str
105
+ rule %r/"""/ do
106
+ if @multiline
107
+ if @rawLevel > 0
108
+ @delimiter = '"""'
109
+ @currentRawLevel = @rawLevel
110
+ goto :raw_string_literal_ending
111
+ else
112
+ token Str::Delimiter
113
+ pop!
114
+ end
115
+ else
116
+ token Error
117
+ pop!
118
+ end
119
+ end
120
+
121
+ rule %r/"/ do
122
+ if !@multiline
123
+ if @rawLevel > 0
124
+ @delimiter = '"'
125
+ @currentRawLevel = @rawLevel
126
+ goto :raw_string_literal_ending
127
+ else
128
+ token Str::Delimiter
129
+ pop!
130
+ end
131
+ else
132
+ token Str
133
+ end
134
+ end
135
+
136
+ rule %r/\\?\n/ do
137
+ if @multiline
138
+ token Str
139
+ else
140
+ token Error
141
+ pop!
142
+ end
143
+ end
144
+
145
+ rule %r/(\\)(#*)/ do |m|
146
+ if m[2].length < @rawLevel
147
+ token Str
148
+ elsif m[2].length == @rawLevel
149
+ token Str::Escape
150
+ push :escape
151
+ else
152
+ token Error
153
+ end
154
+ end
155
+
156
+ rule %r/\$\{/, Str::Interpol, :interpolation
157
+ end
158
+
159
+ state :raw_string_literal_ending do
160
+ rule %r/#/ do
161
+ @delimiter += '#'
162
+
163
+ if @currentRawLevel > 1
164
+ @currentRawLevel -= 1
165
+ else
166
+ token Str::Delimiter, @delimiter
167
+ pop!
168
+ end
169
+ end
170
+
171
+ rule %r/[^#]/ do
172
+ token Str, @delimiter
173
+ token Str
174
+ goto :string_literal
175
+ end
176
+
177
+ rule %r/\n/ do
178
+ if @multiline
179
+ token Str, @delimiter
180
+ token Str
181
+ goto :string_literal
182
+ else
183
+ token Error
184
+ pop!
185
+ end
186
+ end
187
+ end
188
+
189
+ state :interpolation do # TODO
190
+ rule %r/[^\{\}]+/, Str::Interpol
191
+ rule %r/\{/, Str::Interpol, :interpolation
192
+ rule %r/\}/, Str::Interpol, :pop!
193
+ end
194
+
195
+ state :escape do
196
+ rule %r/0|\\|t|n|r|"|'|\$/, Str::Escape, :pop!
197
+ rule %r/u\{[0-9a-fA-F]{1,8}\}/, Str::Escape, :pop!
18
198
  end
19
199
  end
20
200
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: juicelang-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josef Zoller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-03 00:00:00.000000000 Z
11
+ date: 2022-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll