juicelang-theme 0.4.4 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c746809007ebaf03a3bf7b3d9c0351ab81e3720b76236cbbfc8098a4e20d2b97
4
- data.tar.gz: 73f56175ee72e9e18f24173bbd1dc4cada95e1aa08d86e027720dc497fde0dcb
3
+ metadata.gz: 0f852df9e1751836546ec0ea84f1db906a60950456da13f4b9544a672a4fe784
4
+ data.tar.gz: c8885eb5faa5508b89a0b04dd6044a3f4d1f1af4739f3a1fe7956a0aa688f40c
5
5
  SHA512:
6
- metadata.gz: 2d1de2220481122b1f90971b166492d5f9c5a28c3430765535c8f7e4b9fa2654ff2daa64f0eb166fff65dd79172e3c99139df76a8c5d046661c17d7289fdc530
7
- data.tar.gz: 01e25c0a3100fd4763e76f404899b4cca4b575c7c26c69656f3ef9ff76ebffd4af0b45a7b85b0a24865c465ae522d83343d285ad5850edda25c7242ada249bd6
6
+ metadata.gz: 27994731614627460d4908dfc7accfa2e36e736b3050dc1128a92ade56104a6c7ffd3bc47c9adc228c82cc04bb2c9399e0844a410f7a21690e7e944f2d8fc6d1
7
+ data.tar.gz: d326873e94ae956149ca4b627fe7f17a37a5b7303fdeeb01cd213b7c3cd9cfe620d5adbc5103ec86e826e9860c06fe6e1903308a0a38c357048dbe053cbd2b81
data/_includes/nav.html CHANGED
@@ -1,6 +1,6 @@
1
1
  <div id="{{ include.id }}" uk-offcanvas="mode: push{% if include.flip %}; flip: true{% endif %}">
2
2
  <div class="uk-offcanvas-bar">
3
- <ul class="uk-nav-default" uk-nav='{"toggle": "> a.nav-parent-toggle"}''>
3
+ <ul class="uk-nav-default" uk-nav='{"toggle": "> a.nav-parent-toggle"}'>
4
4
  {% assign navigation = site.data.navigation[include.navigation] %}
5
5
  {% assign indexPage = site.pages | find: "path", navigation.index_path %}
6
6
  <li class="uk-nav-header"><a href="{{ indexPage | url_without_ext }}">{{ navigation.title }}</a></li>
data/lib/custom_tags.rb CHANGED
@@ -4,8 +4,6 @@ require 'jekyll'
4
4
  require 'kramdown'
5
5
  require 'liquid'
6
6
 
7
- require_relative 'markdown_toc'
8
-
9
7
 
10
8
  class ToCTag < Liquid::Tag
11
9
  def initialize(tag_name, input, tokens)
@@ -15,22 +13,28 @@ class ToCTag < Liquid::Tag
15
13
  def render(context)
16
14
  toc = Kramdown::Document.new(context.registers[:page]['content'], {
17
15
  input: "GFM"
18
- }).to_ToC
19
- build_list(toc.select { |item| item[0] == 2 }, toc.first[1])
16
+ }).to_Toc
17
+ build_list(toc, context)
20
18
  end
21
19
 
22
20
  private
23
21
 
24
- def build_list(toc, topLink)
25
- result = '<li class="uk-active"><a href="#' + topLink + '">Top</a></li>' + "\n"
22
+ def build_list(toc, context)
23
+ top = toc.children.first.value
24
+ result = '<li class="uk-active"><a href="#' + top.attr['id'] + '">' + elementToHTML(top, context) + '</a></li>' + "\n"
26
25
 
27
- for i in 0...toc.count
28
- item = toc[i]
29
- result += '<li><a href="#' + item[1] + '">' + item[2][0].value + "</a></li>\n"
26
+ for item in toc.children.first.children.map { |e| e.value }
27
+ result += '<li><a href="#' + item.attr['id'] + '">' + elementToHTML(item, context) + "</a></li>\n"
30
28
  end
31
29
 
32
30
  result
33
31
  end
32
+
33
+ def elementToHTML(el, context)
34
+ root = Kramdown::Element.new(:root, nil, nil, encoding: context.registers[:page]['content'].encoding)
35
+ root.children = el.children
36
+ Kramdown::Converter::CustomHtml.convert(root).first
37
+ end
34
38
  end
35
39
 
36
40
  Liquid::Template.register_tag('toc', ToCTag)
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.1
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-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -275,7 +275,6 @@ files:
275
275
  - lib/juice_lexer.rb
276
276
  - lib/juicelang-theme.rb
277
277
  - lib/markdown.rb
278
- - lib/markdown_toc.rb
279
278
  homepage: https://github.com/juice-lang/juicelang-theme
280
279
  licenses:
281
280
  - MIT
data/lib/markdown_toc.rb DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'jekyll'
4
- require 'kramdown'
5
-
6
- class Kramdown::Converter::ToC < Kramdown::Converter::Html
7
- def convert(el, indent = -@indent)
8
- result = super
9
- return result unless el.type == :root
10
-
11
- @toc
12
- end
13
- end