hlt 0.6.1 → 0.6.4

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 (6) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/hlt.rb +79 -68
  4. data.tar.gz.sig +0 -0
  5. metadata +32 -68
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7c84fd69fa082a907a0df5c140bd1cc3519dd0c7
4
- data.tar.gz: ab6a2d8d68c17930659bb7326da904ce7c738ff5
2
+ SHA256:
3
+ metadata.gz: 48ef4fe61faa5abb7df415fe54610141405c880325c0ab12e63cdf0d5d82887b
4
+ data.tar.gz: 27b5664cc8436b75db26e926c626e3da1c9727346e73e3cf9d8e6bc56c482ffe
5
5
  SHA512:
6
- metadata.gz: e83dcfb9bfb9fc044fb463c7ccfedfd0b6d61756ac953be3f4a3867c12b7c793ec78e2f482550ec7b0680254a79de7989a8833af4833852e647428eb09ef8230
7
- data.tar.gz: b8b5406e5838d29f87d0f06397328ed190f1c74cbf96aafd7a34ed4858257e3afb7a0be1b19c0bcb1c3de5255bb282e4e0c12ee7d23a8186d60b653e660eb7ec
6
+ metadata.gz: 7ceb3873c51582d0b17bd87dbeaa0059ccb7659dc1c0d843690e52937c348d095fcc926363dcedebcb217e9b6b1446db9a513a2ff2af02bbde3ed17ca4dabe4a
7
+ data.tar.gz: 2a05a52b8e1b4be7108595396f5719824f9263bfbdda48c8a50cfe1a18b74610a1405e9059acc296fdd71e3e60702ce710f1b62e8e9806f453c61c5ae38fb501
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/hlt.rb CHANGED
@@ -2,43 +2,48 @@
2
2
 
3
3
  # file: hlt.rb
4
4
 
5
+
5
6
  require 'martile'
6
- require 'line-tree'
7
7
  require 'rexle-builder'
8
8
 
9
9
 
10
10
  class Hlt
11
+ using ColouredText
11
12
 
12
13
  attr_reader :to_html, :to_doc
13
14
 
14
- def initialize(raw_s, pretty: true, declaration: true, style: true,
15
- debug: false)
16
-
17
-
15
+ def initialize(raw_s, pretty: true, declaration: true, style: true,
16
+ nocomment: true, debug: false)
17
+
18
+
19
+ @debug = debug
18
20
  # strip out lines which are blank or only contain a comment
19
21
  #s = raw_s.lines.to_a.reject!{|x| x[/(^\s+\#\s)|(^\s*$)/] }
20
-
22
+
21
23
  raw_s.strip!
22
-
24
+
23
25
  s2, martile = fetch_martile raw_s
26
+ puts 'martile: ' + martile.inspect if @debug
24
27
  s, xml_list = filter_xml(s2)
25
28
 
26
29
  #s = raw_s
27
30
  # strip out the text from the line containing a comment
28
31
  s.gsub!(/((^#\s|\s#\s).*)/,'').strip if s[/((^#\s|\s#\s).*)/]
29
- a_code = s.scan(/^\[([^\]]+)\]\n/).map(&:first)
30
- s.gsub!(/\n\[[^\]]+\]\n/, " !CODE\n")
32
+ puts ('s: ' + s.inspect).debug if @debug
33
+ a_code = s.scan(/^\[([^\]]+)\]\B/).map(&:first)
34
+ puts ('a_code: ' + a_code.inspect).debug if @debug
35
+ s.gsub!(/\n\[[^\]]+\]\B/, " !CODE\n")
31
36
 
32
- s2 = s.lines.to_a.map!{|line|
37
+ s2 = s.lines.to_a.map!{|line|
33
38
 
34
39
  hash = "(\s*\{[^\}]+\})?"
35
-
40
+
36
41
  line.prepend ' '
37
42
 
38
43
  line.sub!(/^(\s*)\w+: /,'\0' + "\n" + '\1')
39
-
40
- r = line.sub(/^\s*(\w+)?(?:[\.#]\w+){1,}#{hash}/) do |x|
41
-
44
+
45
+ r = line.sub(/^\s*(\w+)?(?:[\.#]\w+){1,}#{hash}/) do |x|
46
+
42
47
  raw_attrs = x.slice!(/\{.*\}/)
43
48
  attrs = raw_attrs[1..-2] if raw_attrs
44
49
 
@@ -46,7 +51,7 @@ class Hlt
46
51
  tag = x[/(^\s*\w*)[#\.]/,1] || 'div'
47
52
  tag += 'div' if tag.strip.empty?
48
53
 
49
- x.sub(/(?:\.\w+){1,}/) do |x2|
54
+ x.sub(/(?:\.\w+){1,}/) do |x2|
50
55
  a = x2[/(?:\.\w+){1,}/].split('.')
51
56
  a.shift
52
57
  a2 << "class: '%s'" % a.join(' ')
@@ -61,65 +66,71 @@ class Hlt
61
66
 
62
67
  r
63
68
  }
64
-
69
+
65
70
  s2.unshift "root\n"
66
71
  s3 = s2.join.gsub(/^(\s*)-\s+/,'\1templatecode ').\
67
72
  gsub(/^(\s*)=\s+/,'\1templateoutput ')
68
73
 
69
- raw_html = LineTree.new(s3, ignore_non_element: false).to_xml
74
+ puts ('s3: ' + s3.inspect).debug if @debug
70
75
 
71
- html = raw_html.gsub('!CODE').with_index do |x,i|
76
+ raw_html = LineTree.new(*s3, ignore_non_element: false, debug: debug).to_xml
77
+ puts ('raw_html: ' + raw_html.inspect).debug if @debug
78
+
79
+ html = raw_html.gsub('!CODE').with_index do |x,i|
72
80
  "\n\n" + a_code[i].lines.map{|x| ' ' * 4 + x}.join + "\n"
73
81
  end
74
82
 
75
83
  martile.each.with_index do |x,i|
76
-
84
+
77
85
  if @debug then
78
- puts 'i: ' + i.inspect
79
- puts 'x: ' + x.inspect
80
- puts 'html: ' + html.inspect
86
+ puts ('i: ' + i.inspect).debug
87
+ puts ('x: ' + x.inspect).debug
88
+ puts ('html: ' + html.inspect).debug
81
89
  end
82
-
90
+
83
91
  html.sub!(/<mar(tile|kdown):#{i.to_s}\/>/, RDiscount.new(\
84
92
  Martile.new(x).to_s).to_html\
85
93
  .gsub(/<(\w+)>\s*{style:\s*['"]([^'"]+)[^\}]+\}/,\
86
94
  '<\1 style=\'\2\'>'))
87
95
  end
88
-
89
- puts 'html_: ' + html.inspect if @debug
90
-
96
+
97
+ puts ('html_: ' + html.inspect).debug if @debug
98
+
91
99
  doc = Rexle.new(html)
92
-
100
+
93
101
  xml_list.each.with_index do |xml,i|
94
102
  e = doc.root.element('//xml:' + i.to_s)
95
103
  e.insert_before Rexle.new(xml).root
96
104
  e.delete
97
105
  end
98
-
106
+
99
107
  # remove the style attributes from the document if style == false
100
108
  #
101
109
  if style == false then
102
- doc.root.xpath('//.[@style]').each do |e|
110
+ doc.root.xpath('//.[@style]').each do |e|
103
111
  unless e.attributes[:style][/^clear:/] then
104
- e.attributes.delete :style
112
+ e.attributes.delete :style
105
113
  end
106
114
  end
107
- end
108
-
109
-
115
+ end
116
+
117
+
110
118
  @doc = doc
111
119
  h = {declaration: declaration, pretty: pretty, style: style}
112
120
  html = doc.root.xpath('*'){|x| x.xml(h)}.join("\n")
113
-
121
+
114
122
  time = Time.now
115
123
  timestamp = time.strftime("#{ordinalize(time.day)} %B %Y @ %H:%M")
116
- comment = "\n <!-- Generated by Hlt-site_builder on the %s -->\n" % timestamp
117
124
 
118
- 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
+
119
130
  @to_html = html
120
131
 
121
132
  end
122
-
133
+
123
134
  def render(locals: {})
124
135
 
125
136
  variables = locals.map do |key, value|
@@ -130,24 +141,24 @@ class Hlt
130
141
  s << scanbuild(@doc.to_a)
131
142
 
132
143
  a = eval variables.join("\n") + "\n" + s
133
-
144
+
134
145
  Rexle.new(a).element('root/.')
135
146
 
136
147
  end
137
-
148
+
138
149
  def to_doc()
139
150
  @doc
140
151
  end
141
-
152
+
142
153
  private
143
-
154
+
144
155
  def filter_xml(s)
145
-
156
+
146
157
  n = s =~ /</
147
158
  return [s,[]] unless n
148
-
159
+
149
160
  end_pos = s.length - (s =~ />[^>]+$/)
150
-
161
+
151
162
 
152
163
  i = 0
153
164
  xml = []
@@ -170,9 +181,9 @@ class Hlt
170
181
 
171
182
  n = s =~ /</
172
183
  end
173
-
184
+
174
185
  [s, xml]
175
-
186
+
176
187
  end
177
188
 
178
189
  def fetch_martile(raw_s)
@@ -192,13 +203,13 @@ class Hlt
192
203
  martile = []
193
204
 
194
205
  s2 = s.lines.map do |line|
195
-
196
- puts 'line: ' + line.inspect if @debug
197
-
206
+
207
+ puts ('line: ' + line.inspect).debug if @debug
208
+
198
209
  if state == :martile then
199
-
210
+
200
211
  spaces = line[/^\s+/].to_s.length
201
-
212
+
202
213
  if spaces > md_spaces then
203
214
  martile[index] << line[(md_spaces + 2)..-1]
204
215
  line = ''
@@ -206,54 +217,54 @@ class Hlt
206
217
  martile[index].strip!
207
218
  index += 1
208
219
  state = :default
209
-
220
+
210
221
  r = line[/^(\s+)martile:/,1]
211
222
 
212
- if r then
223
+ if r then
213
224
 
214
- state = :martile
215
- md_spaces = r.length
225
+ state = :martile
226
+ md_spaces = r.length
216
227
 
217
228
  line.sub!(/mar(kdown|tile):/,'\0' + index.to_s)
218
229
  martile[index] = ''
219
230
  end
220
- end
231
+ end
221
232
 
222
233
  else
223
234
 
224
235
  r = line[/^(\s+)mar(kdown|tile):/,1]
225
236
 
226
- if r then
237
+ if r then
227
238
 
228
- state = :martile
229
- md_spaces = r.length
239
+ state = :martile
240
+ md_spaces = r.length
230
241
  line.sub!(/mar(kdown|tile):/,'\0' + index.to_s)
231
242
 
232
243
  martile[index] = ''
233
244
  end
234
245
  end
235
246
 
236
- puts 'line: ' + line.inspect
247
+ puts ('line: ' + line.inspect).debug if @debug
237
248
  line
238
249
 
239
250
  end
240
251
 
241
252
  [s2.join, martile]
242
253
  end
243
-
254
+
244
255
  def ordinalize(n)
245
- n.to_s + ( (10...20).include?(n) ? 'th' :
256
+ n.to_s + ( (10...20).include?(n) ? 'th' :
246
257
  %w{ th st nd rd th th th th th th }[n % 10] )
247
258
  end
248
-
249
-
259
+
260
+
250
261
  def v(x)
251
262
 
252
263
  if x then
253
264
  var = x[/^=\s+(.*)/,1]
254
265
  var ? var : x.inspect
255
266
  end
256
-
267
+
257
268
  end
258
269
 
259
270
  def scanbuild(x, indent=0)
@@ -263,9 +274,9 @@ class Hlt
263
274
  children = remaining.shift
264
275
  text = ''
265
276
 
266
-
277
+
267
278
  if children.is_a? Array then
268
- nested = scanbuild(children, indent+1)
279
+ nested = scanbuild(children, indent+1)
269
280
  elsif children
270
281
  text = children
271
282
  end
@@ -291,7 +302,7 @@ class Hlt
291
302
  while remaining.any? do
292
303
  children = remaining.shift
293
304
  if children and children.is_a? Array then
294
- s2 << "\n" + scanbuild(children, indent+1)
305
+ s2 << "\n" + scanbuild(children, indent+1)
295
306
  end
296
307
  end
297
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.1
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,90 +10,55 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMjEwMDAxMzQ2WhcN
15
- MTkwMjEwMDAxMzQ2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1DKcr
17
- ZJqTkN/2W8tQkpcSqw/2qdUkMKcDXPHPdb3KYRNkfBaf3GUdzxpeRMIypqJdLLbQ
18
- dmMJ/TTdWuU2Natuo+maUfe3KYjNyF50sFNoUK+3vsjNgPdu41sUS4YYbeAf5LJU
19
- i70OLumscEqQjkLT/+AaeY2BMIhy7Q72aFRfogBpyE4MMm1UUOMbUhIf+8r+hkJr
20
- Yo98xe4YrMEuvBFYSUYGIrLGIK7PT/ieMDiMpq6YuhXON8xsA2BM8Ka+dn5TsXyI
21
- pLAtHuTP+znsbEdVqwPD9GOAOvs/ShD9vyzpHEoRfs3WDuSlpzM58+qgJWgs9upv
22
- vBKIGFKyfrs4pkRxAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
- HQYDVR0OBBYEFNL5Tu/AFptXATDkCWJ77vlCEaYmMCYGA1UdEQQfMB2BG2dlbW1h
24
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
- ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAE91DAZ7Ro/8NT3FjK0U
26
- RVGzA5HwMJT7MqIcDYbriiakBOmYKfZP2Ai89OkKEb65rj8bTff3glxSacrrm4EI
27
- vQqLX3X18CnEsnhUXNu6CKsiwBqya8QHa+hhWVPvN45BBQu3QJxEZH9b8cZQd2bm
28
- WiKfVXqlQK09eoozx+ruGoma0mRCC1ss8BCEJVqxGXRx0iKtia8llJN80ITt5elK
29
- F1tUlULjsrCnaho1orlXyk1R9Uherdfq+NjW3SWHWz45dWW99Ezn9PhuTdRAQpg/
30
- sRlrGDTopksgnOiLC2QX128tctCCXvdHQlcLPOIqakOkwdqA+fWvzX/vBL+R3LDJ
31
- dgw=
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
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
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
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
32
37
  -----END CERTIFICATE-----
33
- date: 2018-02-10 00:00:00.000000000 Z
38
+ date: 2022-04-06 00:00:00.000000000 Z
34
39
  dependencies:
35
- - !ruby/object:Gem::Dependency
36
- name: line-tree
37
- requirement: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '0.6'
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: 0.6.4
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - "~>"
50
- - !ruby/object:Gem::Version
51
- version: '0.6'
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 0.6.4
55
40
  - !ruby/object:Gem::Dependency
56
41
  name: martile
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - "~>"
60
45
  - !ruby/object:Gem::Version
61
- version: '0.8'
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: 0.8.3
65
- type: :runtime
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '0.8'
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 0.8.3
75
- - !ruby/object:Gem::Dependency
76
- name: rexle-builder
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '0.3'
46
+ version: '1.5'
82
47
  - - ">="
83
48
  - !ruby/object:Gem::Version
84
- version: 0.3.7
49
+ version: 1.5.0
85
50
  type: :runtime
86
51
  prerelease: false
87
52
  version_requirements: !ruby/object:Gem::Requirement
88
53
  requirements:
89
54
  - - "~>"
90
55
  - !ruby/object:Gem::Version
91
- version: '0.3'
56
+ version: '1.5'
92
57
  - - ">="
93
58
  - !ruby/object:Gem::Version
94
- version: 0.3.7
59
+ version: 1.5.0
95
60
  description:
96
- email: james@jamesrobertson.eu
61
+ email: digital.robertson@gmail.com
97
62
  executables: []
98
63
  extensions: []
99
64
  extra_rdoc_files: []
@@ -118,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
83
  - !ruby/object:Gem::Version
119
84
  version: '0'
120
85
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.6.13
86
+ rubygems_version: 3.2.22
123
87
  signing_key:
124
88
  specification_version: 4
125
89
  summary: Intended for building HTML from a kind of Slim template.
metadata.gz.sig CHANGED
Binary file