yatoc 0.1.0 → 0.2.0

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/lib/yatoc.rb +24 -40
  4. data.tar.gz.sig +0 -0
  5. metadata +4 -24
  6. metadata.gz.sig +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2bb843d88e06a813cf01c3a47842d006a92b336f62d0c54b978cc852176d8a9
4
- data.tar.gz: ab4b2bebe5992d53ca6006c1a7e5d48393130c7be1c5cae7d05b838cf1082a2e
3
+ metadata.gz: 12802d5b494cdbe07c289ecf38cf66cce80d78aa8baa19820db8d6442c24c03c
4
+ data.tar.gz: 4bffd78ece9d1c9f7654f34ce347fa24683ee2d6cbeebd8962b2fb25a0e384b0
5
5
  SHA512:
6
- metadata.gz: 97966191c212ecf6a7487f35f8fdeef8d6c61e89ab0a437c10a099c8f748af29881979ebac7fc2ff0ed912f992fa5b0155693ad560eee53c2deaad780fc05a18
7
- data.tar.gz: 319f11e91e8c7c551978dd1450e86f0a8d14c18b50035259b1864a129cbaad490ccf5d7f391ee58208b7741dc54fb220396d8e23ee9fe49e537091635d9830ec
6
+ metadata.gz: 9d6e8b68cae40b38e7ce6e0adb4efb9741f39b9b57e21fb1d40d3827ce8f27ad6e9bcc9776d417e431179dfa82f1f69d118c6b41ed4beb999d227b6a6dcffddd
7
+ data.tar.gz: 7db1142efef3b831edf2e334391aeeba192b680d4455d1f11e03d2c90adfea7e013803f5c3aa218b3578a92c1c72e3bbd5288d4b2ffef737866928e7b53dca0f
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/yatoc.rb CHANGED
@@ -4,8 +4,6 @@
4
4
 
5
5
  # description: Yet Another Table Of Contents HTML generator
6
6
 
7
-
8
- require 'c32'
9
7
  require 'line-tree'
10
8
 
11
9
 
@@ -18,65 +16,52 @@ class Yatoc
18
16
 
19
17
  @debug = debug
20
18
 
21
- @to_html = html.scan(/<h\d+/).length > 3 ? gen_toc(html) : html
19
+ @to_html = html.scan(/<h\d+/).length > min_sections ? gen_toc(html) : html
22
20
 
23
21
  end
24
22
 
23
+ private
24
+
25
25
  def gen_toc(html)
26
26
 
27
27
  a = scan_headings html
28
- puts a.inspect.debug if @debug
28
+ puts ('a: ' + a.inspect).debug if @debug
29
29
 
30
30
  a2 = make_tree(a)
31
31
  puts a2.inspect.debug if @debug
32
+ raw_html = LineTree.new(a2).to_html(numbered: true)
32
33
 
33
- a3 = LineTree.new(a2).to_a
34
- puts a3.inspect.debug if @debug
35
-
36
- toc = "<ul>%s</ul>" % make_headings(a3)
34
+ puts ('raw_html: ' + raw_html.inspect).debug if @debug
35
+ toc = make_linkable(raw_html)
37
36
  @to_toc = toc
38
37
 
39
38
  pos = html =~ /<h2/
40
39
  html.insert(pos, "<div id='toc' class='toc'>\n%s\n</div>\n\n" % toc)
41
40
 
42
- end
43
-
44
- private
45
-
46
- def make_headings(a, indent=-1, count=nil)
47
-
48
- items = a.map.with_index do |x, i|
49
-
50
- if x.is_a? Array then
41
+ end
51
42
 
52
- id, head, tail = if count then
53
-
54
- [
55
- count.to_s + '.' + i.to_s,
56
- i == 1 ? "<ul>\n" : '',
57
- i == a.length - 1 ? "</li>\n</ul></li>" : \
58
- i == a.length - 1 ? '</ul></li>' : ''
59
- ]
43
+ def make_linkable(html)
60
44
 
61
- else
62
- [i+1, '', '']
63
- end
45
+ doc = Rexle.new(html)
46
+ doc.root.each_recursive do |node|
64
47
 
65
- head + make_headings(x, indent+1, id) + tail
48
+ if node.name == 'li' then
66
49
 
67
- else
50
+ link = node.text ? '#' + node.text.strip.downcase.gsub(' ', '-') : ''
51
+ anchor = Rexle::Element.new('a', attributes: {href: link})
52
+ anchor.add Rexle::Element.new('span', value: node\
53
+ .attributes[:id][1..-1].gsub('-','.'))
54
+
55
+ anchor.children << ' ' + node.text if node.text
68
56
 
69
- #"%s%s %s" % [' ' * indent, count, x]
70
- r = "%s<li><a href='#%s'><span>%s</span> %s</a>" % \
71
- [' ' * indent, x.downcase.gsub(' ','-'), count, x]
72
- i == 1 ? "<ul>" + r : r
57
+ node.add anchor
58
+ node.text = ''
59
+ node.attributes.delete :id
73
60
 
74
61
  end
75
-
76
62
  end
77
-
78
- items.join("\n")
79
-
63
+
64
+ doc.xml declaration: false
80
65
  end
81
66
 
82
67
 
@@ -88,13 +73,12 @@ class Yatoc
88
73
  end
89
74
 
90
75
  a.map.with_index do |x, i|
91
-
92
76
 
93
77
  puts ('x: ' + x.inspect).debug if @debug
94
78
 
95
79
  if x.is_a? Array then
96
80
 
97
- puts 'before make_true()'.info if @debug
81
+ puts 'before make_tree()'.info if @debug
98
82
 
99
83
  make_tree(x, indent+1)
100
84
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yatoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  7RVV+J+oYjvww0tYfGq6N2tECM5thrQYj3cKLzAEEPYBjoWcPA5bqRXBTNta+k+K
36
36
  tc7DELyeAZoKgZBO2wAc4FQ6
37
37
  -----END CERTIFICATE-----
38
- date: 2018-12-17 00:00:00.000000000 Z
38
+ date: 2018-12-18 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: line-tree
@@ -46,7 +46,7 @@ dependencies:
46
46
  version: '0.7'
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.7.0
49
+ version: 0.7.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,27 +56,7 @@ dependencies:
56
56
  version: '0.7'
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.7.0
60
- - !ruby/object:Gem::Dependency
61
- name: c32
62
- requirement: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '0.1'
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- version: 0.1.2
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '0.1'
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 0.1.2
59
+ version: 0.7.1
80
60
  description:
81
61
  email: james@jamesrobertson.eu
82
62
  executables: []
metadata.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- �!���C��W�$&U\����b�}�������x��h���h|�1��t��wjdz-3��nྗb����=�E�8��!^ e�P�|���\,!� ���B��m&��</>'��;-��P�Z�0�gٕ��4�XN/�:�
2
- ��2 �H7(Hv�E��^B�?�Bt��U%Ҿ?�� bL�wV`�0�����Ԉ���I!���y�I,S*Ւ6���q�;����3N��R_N;��e ���<�U�k��c�Ji�[�R�Ԍ��a~��ɭ���9Yd��0���UXmu9���l/�k��/����Í��F��̦�M�V�ɦMG�r��,DN���)(1M�&�j�����W�x�����!���Mwp�ʔ ꆆP�^˵�~���
1
+ g~4w����������x�s����a5n# x!(���Nc߄�bI�� <���8b
2
+ �op^
3
+ jr�WtE��L���U����F�e������ԅ���:oK$R���C%J��{>c/�U�9��6Yr�7o��Qi1ֿjҔ��D�Dy5���6% ����3�|md��`c1��4i����\ʝ�$y��/���} <�'u��0�`��؈�I��r�3U(�$�<5p[hq�g����@*�܌a����kp���j
4
+ Y�g5�y����ȇ&����Y"�O�����'N<�W�����e���C'E-3}��