yatoc 0.1.0 → 0.2.0

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/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}��