hlt 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/hlt.rb +62 -59
  4. data.tar.gz.sig +0 -0
  5. metadata +30 -30
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe7f80ff3054de3be9e6ad0b980863475b1cfe846e469a9b652b05dd5bc1c8ff
4
- data.tar.gz: ca2b70a31f12a7860a7c20e3ce1c808107f3dae148035c14a920f98fa0d2ea74
3
+ metadata.gz: 48ef4fe61faa5abb7df415fe54610141405c880325c0ab12e63cdf0d5d82887b
4
+ data.tar.gz: 27b5664cc8436b75db26e926c626e3da1c9727346e73e3cf9d8e6bc56c482ffe
5
5
  SHA512:
6
- metadata.gz: 51caac2ea386985124fa3967ce26202ab0dade79f5c18602738f68fad2d077c954a62b3a2a2d2087c60654b8d50bb13fde6ff7882a8b3e32be916b9d8a25a57d
7
- data.tar.gz: c9819e4c34b028f699400a963f32cc22db6e658eb96da284e091ab094f4ff90e250216c882e743cec8d17f4ddae66c4473c39c80ad0018eba342e5ec32fb8c9d
6
+ metadata.gz: 7ceb3873c51582d0b17bd87dbeaa0059ccb7659dc1c0d843690e52937c348d095fcc926363dcedebcb217e9b6b1446db9a513a2ff2af02bbde3ed17ca4dabe4a
7
+ data.tar.gz: 2a05a52b8e1b4be7108595396f5719824f9263bfbdda48c8a50cfe1a18b74610a1405e9059acc296fdd71e3e60702ce710f1b62e8e9806f453c61c5ae38fb501
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/hlt.rb CHANGED
@@ -12,16 +12,16 @@ class Hlt
12
12
 
13
13
  attr_reader :to_html, :to_doc
14
14
 
15
- def initialize(raw_s, pretty: true, declaration: true, style: true,
16
- debug: false)
17
-
18
-
15
+ def initialize(raw_s, pretty: true, declaration: true, style: true,
16
+ nocomment: true, debug: false)
17
+
18
+
19
19
  @debug = debug
20
20
  # strip out lines which are blank or only contain a comment
21
21
  #s = raw_s.lines.to_a.reject!{|x| x[/(^\s+\#\s)|(^\s*$)/] }
22
-
22
+
23
23
  raw_s.strip!
24
-
24
+
25
25
  s2, martile = fetch_martile raw_s
26
26
  puts 'martile: ' + martile.inspect if @debug
27
27
  s, xml_list = filter_xml(s2)
@@ -34,16 +34,16 @@ class Hlt
34
34
  puts ('a_code: ' + a_code.inspect).debug if @debug
35
35
  s.gsub!(/\n\[[^\]]+\]\B/, " !CODE\n")
36
36
 
37
- s2 = s.lines.to_a.map!{|line|
37
+ s2 = s.lines.to_a.map!{|line|
38
38
 
39
39
  hash = "(\s*\{[^\}]+\})?"
40
-
40
+
41
41
  line.prepend ' '
42
42
 
43
43
  line.sub!(/^(\s*)\w+: /,'\0' + "\n" + '\1')
44
-
45
- r = line.sub(/^\s*(\w+)?(?:[\.#]\w+){1,}#{hash}/) do |x|
46
-
44
+
45
+ r = line.sub(/^\s*(\w+)?(?:[\.#]\w+){1,}#{hash}/) do |x|
46
+
47
47
  raw_attrs = x.slice!(/\{.*\}/)
48
48
  attrs = raw_attrs[1..-2] if raw_attrs
49
49
 
@@ -51,7 +51,7 @@ class Hlt
51
51
  tag = x[/(^\s*\w*)[#\.]/,1] || 'div'
52
52
  tag += 'div' if tag.strip.empty?
53
53
 
54
- x.sub(/(?:\.\w+){1,}/) do |x2|
54
+ x.sub(/(?:\.\w+){1,}/) do |x2|
55
55
  a = x2[/(?:\.\w+){1,}/].split('.')
56
56
  a.shift
57
57
  a2 << "class: '%s'" % a.join(' ')
@@ -66,68 +66,71 @@ class Hlt
66
66
 
67
67
  r
68
68
  }
69
-
69
+
70
70
  s2.unshift "root\n"
71
71
  s3 = s2.join.gsub(/^(\s*)-\s+/,'\1templatecode ').\
72
72
  gsub(/^(\s*)=\s+/,'\1templateoutput ')
73
73
 
74
74
  puts ('s3: ' + s3.inspect).debug if @debug
75
-
75
+
76
76
  raw_html = LineTree.new(*s3, ignore_non_element: false, debug: debug).to_xml
77
77
  puts ('raw_html: ' + raw_html.inspect).debug if @debug
78
78
 
79
- html = raw_html.gsub('!CODE').with_index do |x,i|
79
+ html = raw_html.gsub('!CODE').with_index do |x,i|
80
80
  "\n\n" + a_code[i].lines.map{|x| ' ' * 4 + x}.join + "\n"
81
81
  end
82
82
 
83
83
  martile.each.with_index do |x,i|
84
-
84
+
85
85
  if @debug then
86
86
  puts ('i: ' + i.inspect).debug
87
87
  puts ('x: ' + x.inspect).debug
88
88
  puts ('html: ' + html.inspect).debug
89
89
  end
90
-
90
+
91
91
  html.sub!(/<mar(tile|kdown):#{i.to_s}\/>/, RDiscount.new(\
92
92
  Martile.new(x).to_s).to_html\
93
93
  .gsub(/<(\w+)>\s*{style:\s*['"]([^'"]+)[^\}]+\}/,\
94
94
  '<\1 style=\'\2\'>'))
95
95
  end
96
-
96
+
97
97
  puts ('html_: ' + html.inspect).debug if @debug
98
-
98
+
99
99
  doc = Rexle.new(html)
100
-
100
+
101
101
  xml_list.each.with_index do |xml,i|
102
102
  e = doc.root.element('//xml:' + i.to_s)
103
103
  e.insert_before Rexle.new(xml).root
104
104
  e.delete
105
105
  end
106
-
106
+
107
107
  # remove the style attributes from the document if style == false
108
108
  #
109
109
  if style == false then
110
- doc.root.xpath('//.[@style]').each do |e|
110
+ doc.root.xpath('//.[@style]').each do |e|
111
111
  unless e.attributes[:style][/^clear:/] then
112
- e.attributes.delete :style
112
+ e.attributes.delete :style
113
113
  end
114
114
  end
115
- end
116
-
117
-
115
+ end
116
+
117
+
118
118
  @doc = doc
119
119
  h = {declaration: declaration, pretty: pretty, style: style}
120
120
  html = doc.root.xpath('*'){|x| x.xml(h)}.join("\n")
121
-
121
+
122
122
  time = Time.now
123
123
  timestamp = time.strftime("#{ordinalize(time.day)} %B %Y @ %H:%M")
124
- comment = "\n <!-- Generated by Hlt-site_builder on the %s -->\n" % timestamp
125
124
 
126
- html.sub!(/(?=<\/html>)/, comment)
125
+ unless nocomment
126
+ comment = "\n <!-- Generated by Hlt-site_builder on the %s -->\n" % timestamp
127
+ html.sub!(/(?=<\/html>)/, comment)
128
+ end
129
+
127
130
  @to_html = html
128
131
 
129
132
  end
130
-
133
+
131
134
  def render(locals: {})
132
135
 
133
136
  variables = locals.map do |key, value|
@@ -138,24 +141,24 @@ class Hlt
138
141
  s << scanbuild(@doc.to_a)
139
142
 
140
143
  a = eval variables.join("\n") + "\n" + s
141
-
144
+
142
145
  Rexle.new(a).element('root/.')
143
146
 
144
147
  end
145
-
148
+
146
149
  def to_doc()
147
150
  @doc
148
151
  end
149
-
152
+
150
153
  private
151
-
154
+
152
155
  def filter_xml(s)
153
-
156
+
154
157
  n = s =~ /</
155
158
  return [s,[]] unless n
156
-
159
+
157
160
  end_pos = s.length - (s =~ />[^>]+$/)
158
-
161
+
159
162
 
160
163
  i = 0
161
164
  xml = []
@@ -178,9 +181,9 @@ class Hlt
178
181
 
179
182
  n = s =~ /</
180
183
  end
181
-
184
+
182
185
  [s, xml]
183
-
186
+
184
187
  end
185
188
 
186
189
  def fetch_martile(raw_s)
@@ -200,13 +203,13 @@ class Hlt
200
203
  martile = []
201
204
 
202
205
  s2 = s.lines.map do |line|
203
-
206
+
204
207
  puts ('line: ' + line.inspect).debug if @debug
205
-
208
+
206
209
  if state == :martile then
207
-
210
+
208
211
  spaces = line[/^\s+/].to_s.length
209
-
212
+
210
213
  if spaces > md_spaces then
211
214
  martile[index] << line[(md_spaces + 2)..-1]
212
215
  line = ''
@@ -214,27 +217,27 @@ class Hlt
214
217
  martile[index].strip!
215
218
  index += 1
216
219
  state = :default
217
-
220
+
218
221
  r = line[/^(\s+)martile:/,1]
219
222
 
220
- if r then
223
+ if r then
221
224
 
222
- state = :martile
223
- md_spaces = r.length
225
+ state = :martile
226
+ md_spaces = r.length
224
227
 
225
228
  line.sub!(/mar(kdown|tile):/,'\0' + index.to_s)
226
229
  martile[index] = ''
227
230
  end
228
- end
231
+ end
229
232
 
230
233
  else
231
234
 
232
235
  r = line[/^(\s+)mar(kdown|tile):/,1]
233
236
 
234
- if r then
237
+ if r then
235
238
 
236
- state = :martile
237
- md_spaces = r.length
239
+ state = :martile
240
+ md_spaces = r.length
238
241
  line.sub!(/mar(kdown|tile):/,'\0' + index.to_s)
239
242
 
240
243
  martile[index] = ''
@@ -248,20 +251,20 @@ class Hlt
248
251
 
249
252
  [s2.join, martile]
250
253
  end
251
-
254
+
252
255
  def ordinalize(n)
253
- n.to_s + ( (10...20).include?(n) ? 'th' :
256
+ n.to_s + ( (10...20).include?(n) ? 'th' :
254
257
  %w{ th st nd rd th th th th th th }[n % 10] )
255
258
  end
256
-
257
-
259
+
260
+
258
261
  def v(x)
259
262
 
260
263
  if x then
261
264
  var = x[/^=\s+(.*)/,1]
262
265
  var ? var : x.inspect
263
266
  end
264
-
267
+
265
268
  end
266
269
 
267
270
  def scanbuild(x, indent=0)
@@ -271,9 +274,9 @@ class Hlt
271
274
  children = remaining.shift
272
275
  text = ''
273
276
 
274
-
277
+
275
278
  if children.is_a? Array then
276
- nested = scanbuild(children, indent+1)
279
+ nested = scanbuild(children, indent+1)
277
280
  elsif children
278
281
  text = children
279
282
  end
@@ -299,7 +302,7 @@ class Hlt
299
302
  while remaining.any? do
300
303
  children = remaining.shift
301
304
  if children and children.is_a? Array then
302
- s2 << "\n" + scanbuild(children, indent+1)
305
+ s2 << "\n" + scanbuild(children, indent+1)
303
306
  end
304
307
  end
305
308
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hlt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwNDIyMTI1NzM1WhcN
15
- MjAwNDIxMTI1NzM1WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCoASEq
17
- AFCQN84SfWink5sE/abq1gr0FSKE/B3791pPDPUJWGWSz/LsVUFdrQjyXr2qKnWc
18
- RhThN7fTw4+CVfTdTts/7jp3zDvAgEabSKjwjFdM8gukq06ZCOfy1AE3G85cUeVE
19
- dyIk8d63EDiQk/DkVDPFXnj/sbdvg6UnJq9Y1j7Xg4XD8jmkya/BlF6rvAB0jMMp
20
- Jpf8sVJDzn7UAFATAEYx5qIeblGlsmoCC23exahclW8Ov2tyfx1HNBonc00DyswO
21
- mWf546eVdvnY9zdGWlPYgB5NrNNWrai1FF6ogVRK4mlaaCJSSC49pxhS3kiXHllU
22
- wg5ey4MyYLCg0xgZWlm1h1yyO4BY+BwSJco9z6TUsG3npp/uQUQTtGucma3McxoU
23
- RoVzr6t3zLrF6B9ElKhjc5zFPMlthHoTvbMk7P4YFqlCNhumixRrYpzEIjebsy6w
24
- 54e/AeTOACY7j57Ir/ZU075idwLaycqwAjEElSQd9JQvEvc7LtsyO0EF5NUCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUYl5WCbPb
26
- bN3pqLPkwjBDE7SfnaAwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwNDA2MTUyODQ3WhcN
15
+ MjMwNDA2MTUyODQ3WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCk7o70
17
+ ZqZrzvVBcLuB90CxEk97gJh05MkB0Xg9yB8oJquZSV18OQa+FHJGM8hQ4qvzH/R/
18
+ sbRLA2z3qqRTHJ/nDlioEJj8j1a3M+ewYmBpeBl2i5qq1PJQPLHtXDjezEv8hKFF
19
+ /xFqXJlQADr9DpAtYif/SFHQasMZvBbxlCBzNKD6sTBFTKsXPKDoQYwjT8JJf4ID
20
+ vBeHs3RIG/puUa46g3Rng/P1s0/dL9wJdvJKHbm8Zv/3XkCk2IMcpCdmEz8kDzDn
21
+ Xit4kK8IegvjmmV33uazZWHYiAU9FyI3PYGU2tKE2IDgAGYCTTDgbZ88bmMaCjIC
22
+ NYWm3bXOiE3LlOBxzT4bCexiJQL7B+MQN2t5XncO1l3YmbflC+YmeM5ZAo8TIx14
23
+ W0hs0wdG0vHiBAROV3mihDu0TxCNny/Ojtb4IyP7amylWPnEKwueCH7457oiWw4t
24
+ ckw1F/2Np2RwhTk9Zm7bJdwmBAq6tfwyuYF605k+K0xbQtXr8M5MFAh94G8CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUdPQbCMGB
26
+ WvkRRcebFanOZUnn/9MwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAVLkUo4DhikdX5FihhTxCbaZSVRjwYANB20tvsUlv
29
- aEK50lGseGySoaMPDvFNed03YOSnx8JephXi9iSgborJyarRdIH7c68LzSvtAL6x
30
- HpazP7uPfOD91SwFIeFPab5wyYymi9g3frfPW/NhNpqXKACh/GD0Q6S/REVdI46I
31
- vMLjWuO5Gowatr31VqzVFLDO2eNoENRH2lSOfwbzYsAJugKqaQVB2V1pbsatemlW
32
- SpSnRNYlsjs3nK34YC7pPwK/Kk5AijMaf9E3yb8B0+lDxV63CsARs5YBsS9vbJ5I
33
- 3B8B04yJZt0F+gPBsa2UWzxeQOqwy8cm37IuUz7+3QAiooZaksIc8t8z9NQMC43g
34
- ZU68dzjiF1T9xxwywptlJ53jTv8SPCpHQjWqKQvKPoQDnRDf/vxeMhCGWOxn9Nnj
35
- JR7HLO1Kix+z5BF5wd5IpA16Z+fG8bIfbJy2r/33GHbSfFfAyUzCNXXkOjKNcxAj
36
- hF/PZED/nIMabH86ci6/SaAr
28
+ BgkqhkiG9w0BAQsFAAOCAYEAQIQvhDYxcPIAvRlgmjxk7SDuZppb1WwAfFbYB9P5
29
+ YHxrokRZb4b/p0p2Jey7II44ik5t98lFDjkhqPuPph7oYJw5T06Z7FJAdudS68fh
30
+ G4qZ0Nh1A6HcQe9yGV0lYxr3rR6Fumk5nkb7Srq9pK8j8Vpkyjy4spIuks8egG2R
31
+ fU33f4/smPNubEk6m4qWSS+eE6p88uLC0nb0CzUfxPkn9LHO3dm692YZYLrZVHD9
32
+ y6hv9n0PgEpfRrvCFhCUoEQY6v7+49KEaQcHPzJXXgOUKZZUFy7ywxWgVMGvJpr1
33
+ edBjqd6rMwug+FAgXReYkqer0BRUIkbc6p9RWavsfV07JUcbYbO+dzZ27L9GXLmV
34
+ 3oMnD+s3/Xvg8QBWtznvsPA4UmwNRK7iyjUGcT8rDIl2GZx3kM2I2DAgQ6kLKOKp
35
+ siUpSxLYLAnXUjn6nTDDJSkzsajG/UPWQCTPUsvEnJK6oyzAdcb83xZ56B05bA1e
36
+ PpVYUtAiq8MU2gnelzudj7EY
37
37
  -----END CERTIFICATE-----
38
- date: 2019-04-22 00:00:00.000000000 Z
38
+ date: 2022-04-06 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: martile
@@ -43,22 +43,22 @@ dependencies:
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.1'
46
+ version: '1.5'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 1.1.8
49
+ version: 1.5.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: '1.1'
56
+ version: '1.5'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 1.1.8
59
+ version: 1.5.0
60
60
  description:
61
- email: james@jamesrobertson.eu
61
+ email: digital.robertson@gmail.com
62
62
  executables: []
63
63
  extensions: []
64
64
  extra_rdoc_files: []
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  requirements: []
86
- rubygems_version: 3.0.1
86
+ rubygems_version: 3.2.22
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: Intended for building HTML from a kind of Slim template.
metadata.gz.sig CHANGED
Binary file