martile 1.4.0 → 1.4.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8fb9f0c5d9cf0623795ba66a2116f33dc06a756de0aea99a8cf954b82cd1a088
4
- data.tar.gz: 918cff6aa70177d109dae4a82bd7da1eb69a0e3cf821e0cdf80223462c9bd6b3
3
+ metadata.gz: 8cac99545ba0c3f73fcffcd71c8de008cbc7b0074034c7417d302eff401419e8
4
+ data.tar.gz: f9726561ce6eb1df19f5e01c473e359a9211bb89149e334a791db8f5d3d89733
5
5
  SHA512:
6
- metadata.gz: '0788c91db51446b301d09e5010e6b9578a0b0e937df178cbcb61ec17c3cc7a829e09ae6c287ef49e672aa6caa6d4bdc1ebe4081a29e3b8d6ef3b32233138dc2a'
7
- data.tar.gz: ecfbe6d3e77975c97f315c3fb8d52258eac355412e6a4fbef5fe44d0898873442c017a8d6502b209f9a97dbca2339a42d8d87d72bc4a88b25b23232832995dd4
6
+ metadata.gz: 1582650be2cf7c13d675fe849b30e428c7e8d3e5ecf33266863f753623ce16f2d8ae1aed61882b25d9ee3986d4bba7790839a25987fb551c1b0ff944e6e6771b
7
+ data.tar.gz: 134872da40df6a1ab83760e64eb928d9b268ee74bf432c4b78b873fb515a43c2ce37f6bfc098624727c87b0987d15a81ea4c1761dc67ff6c8730ed046278e3a5
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -15,6 +15,14 @@ require 'jsmenubuilder'
15
15
  require 'htmlcom'
16
16
 
17
17
 
18
+ # feature: 01-Sep-2020 Introduced the nomarkdown tag and nomarkdown2 tag.
19
+ # The nomarkdown2 tag has the advantage of being used
20
+ # inside tags which other Markdown parse don't read.
21
+ # The tag will remove itself before completion to_s.
22
+ # feature: 08-Aug-2020 Implemented #to_Webpage
23
+ # improvement: 23-Apr-2020 A self-closing sidenav tag is now valid
24
+ # feature: 01-Mar-2020 A src attribute can now be used in the sidenav tag
25
+ # feature: 29-Feb-2020 The sidenav tag can now contain a raw hierachical list
18
26
  # feature: 22-Jan-2020 An HtmlCom::Accordion component can now be generated
19
27
  # using the tag <accordion>
20
28
  # feature: 16-Sep-2019 An HTML Tree component can now be generated when
@@ -111,10 +119,11 @@ class Martile
111
119
  #puts 's1 : ' + s1.inspect
112
120
  s40 = apply_filter(s30) {|x| code_block_to_html(x.strip + "\n") }
113
121
 
122
+ s45 = s40.gsub(/<pre/,'{::nomarkdown}\0').gsub(/<\/pre>/,'\0{:/}')
114
123
  #puts 's2 : ' + s2.inspect
115
124
  #s3 = apply_filter(s2, %w(ol ul)) {|x| explicit_list_to_html x }
116
125
  #puts 's3 : ' + s3.inspect
117
- s50 = apply_filter(s40) {|x| ordered_list_to_html x }
126
+ s50 = apply_filter(s45) {|x| ordered_list_to_html x }
118
127
  #puts 's4 : ' + s4.inspect
119
128
 
120
129
  s60 = apply_filter(s50) {|x| unordered_list_to_html x }
@@ -156,10 +165,10 @@ class Martile
156
165
  s220 = apply_filter(s210) {|x| svgtag x }
157
166
  s230 = apply_filter(s220) {|x| embedtag x }
158
167
  s240 = apply_filter(s230) {|x| script_out x }
168
+ s245 = s240.gsub(/\{::nomarkdown2\}/,'').gsub(/\{:2\/\}/,'')
169
+ @to_s = s245.to_s
159
170
 
160
- @to_s = s240.to_s
161
-
162
- s250 = apply_filter(s240) {|x| nomarkdown x }
171
+ s250 = apply_filter(s245) {|x| nomarkdown x }
163
172
  s252 = sidenav(s250)
164
173
  s253 = bang_xml(s252)
165
174
  puts ('s235 after bang_xml: ' + s253.inspect).debug if @debug
@@ -230,6 +239,30 @@ class Martile
230
239
  @js.join("\n")
231
240
  end
232
241
 
242
+ def to_webpage()
243
+
244
+ a = RexleBuilder.build do |xml|
245
+ xml.html do
246
+ xml.head do
247
+ xml.meta name: "viewport", content: \
248
+ "width=device-width, initial-scale=1"
249
+ xml.style "\nbody {font-family: Arial;}\n\n" + @css.join("\n")
250
+ end
251
+ xml.body to_html()
252
+ end
253
+ end
254
+
255
+ doc = Rexle.new(a)
256
+
257
+ doc.root.element('body').add \
258
+ Rexle::Element.new('script').add_text "\n" +
259
+ @js.join("\n").gsub(/^ +\/\/[^\n]+\n/,'')
260
+
261
+ "<!DOCTYPE html>\n" + doc.xml(pretty: true, declaration: false)\
262
+ .gsub(/<\/div>/,'\0' + "\n").gsub(/\n *<!--[^>]+>/,'')
263
+
264
+ end
265
+
233
266
  private
234
267
 
235
268
  def accordion(s1)
@@ -474,15 +507,16 @@ class Martile
474
507
 
475
508
  @filter = []
476
509
 
477
- a = s.split(/(?=<pre)/).map.with_index do |row, i|
510
+ a = s.split(/(?=\{::nomarkdown2?\})/).map.with_index do |row, i|
478
511
 
479
- row.sub(/<pre.*<\/pre>/m) do |pattern|
512
+ row.sub(/\{::nomarkdown2?\}.*{:2?\/}/m) do |pattern|
480
513
  placeholder = '!' + Time.now.to_i.to_s + i.to_s
481
514
  @filter << [placeholder, pattern]
482
515
  placeholder
483
516
  end
484
517
 
485
518
  end
519
+
486
520
  a.join
487
521
 
488
522
  end
@@ -776,13 +810,45 @@ class Martile
776
810
  def sidenav(s1)
777
811
 
778
812
  s = s1.clone
779
- if s =~ /^<sidenav\/>/ then
813
+ if s =~ /^<sidenav/ then
814
+
815
+ content = s[/(<sidenav[^>]+\/>|<sidenav[^>]+>([^<]*<[^>]+>)?)/]
816
+ puts ('content: ' + content.inspect) if @debug
817
+
818
+ doc = if content then
819
+
820
+ s.sub!(content,'')
821
+ doc2 = Rexle.new(content)
822
+
823
+ h = doc2.root.attributes
824
+ target = h[:target] || 'pgview'
825
+
826
+ txt = if h[:src] then
827
+ RXFHelper.read(h[:src]).first.sub(/<\?links[^>]+>\n/,'')
828
+ else
829
+ doc2.root.text
830
+ end
831
+
832
+ puts 'txt: ' + txt.inspect if @debug
833
+
834
+ html = HtmlCom::Tree.new(txt).to_webpage
835
+ puts 'html: ' + html.inspect if @debug
836
+
837
+ doc2 = Rexle.new(html)
838
+
839
+ doc2.root.xpath('body/ul[@class="sidenav"]/li//a').each do |node|
840
+ node.attributes[:target] = target
841
+ end
842
+
843
+ doc2
844
+
845
+ else
846
+ s.sub!(/^<sidenav\/>/,'')
847
+ html = HtmlCom::Tree.new(s).to_webpage
848
+ Rexle.new(html)
849
+ end
850
+
780
851
 
781
- s.sub!(/^<sidenav\/>/,'')
782
- #jtb = JsTreeBuilder.new :tree, {src: tree, debug: true}
783
- jtb = JsTreeBuilder.new(:sidebar, {src: s, hn: 2, debug: @debug})
784
- html = jtb.to_webpage
785
- doc = Rexle.new(html)
786
852
  html2 = Kramdown::Document.new(Martile.new(s, toc: false).to_html)\
787
853
  .to_html
788
854
  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.4.0
4
+ version: 1.4.5
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: 2020-01-22 00:00:00.000000000 Z
38
+ date: 2020-09-01 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: yatoc
@@ -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.10
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.10
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,27 +136,7 @@ dependencies:
156
136
  version: '0.2'
157
137
  - - ">="
158
138
  - !ruby/object:Gem::Version
159
- version: 0.2.2
160
- - !ruby/object:Gem::Dependency
161
- name: htmlcom
162
- requirement: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: 0.2.0
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '0.2'
170
- type: :runtime
171
- prerelease: false
172
- version_requirements: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - ">="
175
- - !ruby/object:Gem::Version
176
- version: 0.2.0
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '0.2'
139
+ version: 0.2.4
180
140
  description:
181
141
  email: james@jamesrobertson.eu
182
142
  executables: []
metadata.gz.sig CHANGED
Binary file