martile 1.3.0 → 1.4.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 +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/martile.rb +111 -10
  5. metadata +13 -33
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b385e21a3ab1023ef2d570da9bb2a62efc26146250a5bfd4e20fd3ec990ef06d
4
- data.tar.gz: f5acf9194da31afc5e1cf2b4d37cb6f69e6f6b52f41aac6cafca07969f3bb7d1
3
+ metadata.gz: 9c7e7a5129c34656f11828831a861f08e63fcc47767219d8657a56b484cdf7f0
4
+ data.tar.gz: 79988d64a4ae83816cd20c182c75b73549217cb5ddc060771483474faae04907
5
5
  SHA512:
6
- metadata.gz: 88ea1fea26b15988059043ffcf375a18249d1d8b1dec70c16c5522e18fc223ab43080e698bbb2bfb117aa987b6a4d43e2e06c01fd917970fff833141d2782c91
7
- data.tar.gz: 5d46d533bc864562d45a362bb41bc0d92fb565d6a8ed30f17749a549ab35c4b2abe66316b5228966594d2f76ec3ed1be90820175df205de1fe8af5d7d96b45b8
6
+ metadata.gz: 02cbcdc557b6f9085881da520e6c3d12975937e9a9c599614b85c36f697099fab2bf752fd8b5ef57f9dfdffcd31e7d648439e833e5897bd92123cffd01c8c276
7
+ data.tar.gz: 9d1ce499b5ee42bd05e5c2741be92a274e4f90e25237439932790f469ebebc5ba9a2bddaaf9cbaf7d8551ed5b8bffbc7c1a32ce6ecd516697c0aeeb48b21a0de
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -12,8 +12,15 @@ require 'rqrcode'
12
12
  require 'mindmapdoc'
13
13
  require 'flowchartviz'
14
14
  require 'jsmenubuilder'
15
+ require 'htmlcom'
15
16
 
16
17
 
18
+ # feature: 08-Aug-2020 Implemented #to_Webpage
19
+ # improvement: 23-Apr-2020 A self-closing sidenav tag is now valid
20
+ # feature: 01-Mar-2020 A src attribute can now be used in the sidenav tag
21
+ # feature: 29-Feb-2020 The sidenav tag can now contain a raw hierachical list
22
+ # feature: 22-Jan-2020 An HtmlCom::Accordion component can now be generated
23
+ # using the tag <accordion>
17
24
  # feature: 16-Sep-2019 An HTML Tree component can now be generated when
18
25
  # the tag <sidebar/> is used
19
26
  # feature: 16-Jul-2019 An HTML Tabs component can now be created from XML
@@ -164,12 +171,14 @@ class Martile
164
171
  s255 = tabs(s253)
165
172
  puts ('s255 after tabs: ' + s255.inspect).debug if @debug
166
173
 
167
- toc = false if s255 =~ /class=['"]sidenav['"]>/
174
+ s257 = accordion(s255)
175
+
176
+ toc = false if s257 =~ /class=['"]sidenav['"]>/
168
177
 
169
178
  s260 = if toc then
170
- Yatoc.new(Kramdown::Document.new(s255).to_html, debug: debug).to_html
179
+ Yatoc.new(Kramdown::Document.new(s257).to_html, debug: debug).to_html
171
180
  else
172
- s255
181
+ s257
173
182
  end
174
183
 
175
184
  puts ('s260: ' + s260.inspect).debug if debug
@@ -225,8 +234,67 @@ class Martile
225
234
  @js.join("\n")
226
235
  end
227
236
 
237
+ def to_webpage()
238
+
239
+ a = RexleBuilder.build do |xml|
240
+ xml.html do
241
+ xml.head do
242
+ xml.meta name: "viewport", content: \
243
+ "width=device-width, initial-scale=1"
244
+ xml.style "\nbody {font-family: Arial;}\n\n" + @css.join("\n")
245
+ end
246
+ xml.body to_html()
247
+ end
248
+ end
249
+
250
+ doc = Rexle.new(a)
251
+
252
+ doc.root.element('body').add \
253
+ Rexle::Element.new('script').add_text "\n" +
254
+ @js.join("\n").gsub(/^ +\/\/[^\n]+\n/,'')
255
+
256
+ "<!DOCTYPE html>\n" + doc.xml(pretty: true, declaration: false)\
257
+ .gsub(/<\/div>/,'\0' + "\n").gsub(/\n *<!--[^>]+>/,'')
258
+
259
+ end
260
+
228
261
  private
229
262
 
263
+ def accordion(s1)
264
+
265
+ s = s1.clone
266
+
267
+ doc = Rexle.new("<root>#{s}</root>")
268
+ puts 'doc.root.xml: ' + doc.root.xml.inspect if @debug
269
+ a = doc.root.xpath('accordion').map.with_index do |e, i |
270
+
271
+ build = HtmlCom::Accordion.new(e.xml, debug: false)
272
+
273
+ if i < 1 then
274
+ @css << build.to_css
275
+ @js << build.to_js
276
+ end
277
+
278
+ build.to_html
279
+
280
+
281
+ end
282
+ puts 'accordion a:' + a.inspect if @debug
283
+
284
+ # replaces the <accordion> XML with HTML
285
+ a.each do |html|
286
+
287
+ istart = s =~ /^<accordion[^>]*>/
288
+ iend = s =~ /<\/accordion>/
289
+ s.slice!(istart, (iend - istart) + '</accordion>'.length + 1)
290
+ s.insert(istart, html)
291
+
292
+ end
293
+
294
+ return s
295
+
296
+ end
297
+
230
298
  def audiotag(s)
231
299
 
232
300
  s.gsub(/\B!a\[\]\((https?:\/\/[^\)]+)\)\B/) do |x|
@@ -305,7 +373,8 @@ class Martile
305
373
  x[2..-1].sub(/(.*)[^\+]+\n\+/m) do |x2|
306
374
 
307
375
  summary, detail = x2.split(/----+/,2)
308
- "<details><summary>%s</summary>%s</details>" % [summary, detail.chop]
376
+ "<details><summary>%s</summary>%s</details>" % \
377
+ [summary, Martile.new(detail.chop).to_html]
309
378
 
310
379
  end
311
380
 
@@ -735,13 +804,45 @@ class Martile
735
804
  def sidenav(s1)
736
805
 
737
806
  s = s1.clone
738
- if s =~ /^<sidenav\/>/ then
807
+ if s =~ /^<sidenav/ then
808
+
809
+ content = s[/(<sidenav[^>]+\/>|<sidenav[^>]+>([^<]*<[^>]+>)?)/]
810
+ puts ('content: ' + content.inspect) if @debug
811
+
812
+ doc = if content then
813
+
814
+ s.sub!(content,'')
815
+ doc2 = Rexle.new(content)
816
+
817
+ h = doc2.root.attributes
818
+ target = h[:target] || 'pgview'
819
+
820
+ txt = if h[:src] then
821
+ RXFHelper.read(h[:src]).first.sub(/<\?links[^>]+>\n/,'')
822
+ else
823
+ doc2.root.text
824
+ end
825
+
826
+ puts 'txt: ' + txt.inspect if @debug
827
+
828
+ html = HtmlCom::Tree.new(txt).to_webpage
829
+ puts 'html: ' + html.inspect if @debug
830
+
831
+ doc2 = Rexle.new(html)
832
+
833
+ doc2.root.xpath('body/ul[@class="sidenav"]/li//a').each do |node|
834
+ node.attributes[:target] = target
835
+ end
836
+
837
+ doc2
838
+
839
+ else
840
+ s.sub!(/^<sidenav\/>/,'')
841
+ html = HtmlCom::Tree.new(s).to_webpage
842
+ Rexle.new(html)
843
+ end
844
+
739
845
 
740
- s.sub!(/^<sidenav\/>/,'')
741
- #jtb = JsTreeBuilder.new :tree, {src: tree, debug: true}
742
- jtb = JsTreeBuilder.new(:sidebar, {src: s, hn: 2, debug: true})
743
- html = jtb.to_webpage
744
- doc = Rexle.new(html)
745
846
  html2 = Kramdown::Document.new(Martile.new(s, toc: false).to_html)\
746
847
  .to_html
747
848
  div = Rexle.new("<div class='main'>%s</div>" % html2)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: martile
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  g0+rPDPUCWKVNHo7BG5zGRDcLsJO0QeIILy/AQaSAE3lQiHmC47nhsiBK0qNehWa
36
36
  47XiKvz0ZVCGgrz4GEb723WC
37
37
  -----END CERTIFICATE-----
38
- date: 2019-09-16 00:00:00.000000000 Z
38
+ date: 2020-08-08 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: yatoc
@@ -61,22 +61,22 @@ dependencies:
61
61
  name: rqrcode
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 1.0.0
67
64
  - - "~>"
68
65
  - !ruby/object:Gem::Version
69
- version: '1.0'
66
+ version: '1.1'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.1.2
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 1.0.0
77
74
  - - "~>"
78
75
  - !ruby/object:Gem::Version
79
- version: '1.0'
76
+ version: '1.1'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 1.1.2
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: mindmapdoc
82
82
  requirement: !ruby/object:Gem::Requirement
@@ -118,27 +118,7 @@ dependencies:
118
118
  - !ruby/object:Gem::Version
119
119
  version: 0.1.6
120
120
  - !ruby/object:Gem::Dependency
121
- name: jsmenubuilder
122
- requirement: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - "~>"
125
- - !ruby/object:Gem::Version
126
- version: '0.2'
127
- - - ">="
128
- - !ruby/object:Gem::Version
129
- version: 0.2.3
130
- type: :runtime
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '0.2'
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: 0.2.3
140
- - !ruby/object:Gem::Dependency
141
- name: jstreebuilder
121
+ name: htmlcom
142
122
  requirement: !ruby/object:Gem::Requirement
143
123
  requirements:
144
124
  - - "~>"
@@ -146,7 +126,7 @@ dependencies:
146
126
  version: '0.2'
147
127
  - - ">="
148
128
  - !ruby/object:Gem::Version
149
- version: 0.2.2
129
+ version: 0.2.4
150
130
  type: :runtime
151
131
  prerelease: false
152
132
  version_requirements: !ruby/object:Gem::Requirement
@@ -156,7 +136,7 @@ dependencies:
156
136
  version: '0.2'
157
137
  - - ">="
158
138
  - !ruby/object:Gem::Version
159
- version: 0.2.2
139
+ version: 0.2.4
160
140
  description:
161
141
  email: james@jamesrobertson.eu
162
142
  executables: []
metadata.gz.sig CHANGED
Binary file