middleman-toc 0.0.3 → 0.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9878fe65c1884c356621be680c01b083115a5c36
4
- data.tar.gz: bc806aa5c08d4f29cfbc8ab318e4935e388bcb29
3
+ metadata.gz: 7bc1e2253bcba841a75573300dfd44ca6f57ef3d
4
+ data.tar.gz: 1430b8ff2d93597089a94f67d3a19e57a7016f11
5
5
  SHA512:
6
- metadata.gz: 3ce628078149e15537da2e668693c394a919f0b8bfb42332ca27af6a219422c3779b0b17e37feb67820c42ca25bedf9edda07e8e2ede676515295ee6e4da8c99
7
- data.tar.gz: b50206b8fa190abaafe5f93d7e3962b2837fbd4824461b4d8b3f64effa4a33fa8cac062df2fd8c55fda674a38fa9a539f175f951c4611e732b2b5fe0d8283632
6
+ metadata.gz: 7c31e72f1652b99d8a5d7806b4e0236635e9e3b28cfd33c2d705738ec26847ae7ca54ece1d84c24fb7dcf0bf0e925cff4287b9660ac47e4d1c59c8effadab911
7
+ data.tar.gz: cf1e88729729b3b83fb04470176af715c78bd7c70a62a6bbdf14569757a87f0f4c6904778cab41677a39fa973d856cdac3669bf04e15d9224704e5ebbaf339ee
@@ -4,10 +4,6 @@ module MiddlemanToc
4
4
  class Node < Struct.new(:level, :path, :title, :children)
5
5
  attr_reader :active
6
6
 
7
- def find(path)
8
- flatten.detect { |node| node.path == path }
9
- end
10
-
11
7
  def flatten
12
8
  [self, children.map(&:flatten)].flatten
13
9
  end
@@ -15,37 +15,62 @@ module MiddlemanToc
15
15
  end
16
16
 
17
17
  def prev_page(path)
18
- node = root.find(normalize_path(path)).try(:prev)
19
- Tag.new(:a, node.path, 'Previous', class: 'prev').render if node
18
+ node = prev_node(path)
19
+ Tag.new(:a, 'Previous', class: 'prev', href: "/#{node.path}.html").render if node
20
20
  end
21
21
 
22
22
  def next_page(path)
23
- node = root.find(normalize_path(path)).try(:next)
24
- Tag.new(:a, node.path, 'Next', class: 'next').render if node
23
+ node = next_node(path)
24
+ Tag.new(:a, 'Next', class: 'next', href: "/#{node.path}.html").render if node
25
25
  end
26
26
 
27
- def normalize_path(path)
28
- path.sub('.html', '')
29
- end
27
+ private
30
28
 
31
- def manifest
32
- raise 'Could not load data/toc.yml' unless File.exists?('data/toc.yml')
33
- normalize_nodes(YAML.load_file('data/toc.yml'))
34
- end
29
+ def normalize_path(path)
30
+ path.sub('.html', '')
31
+ end
32
+
33
+ def manifest
34
+ raise 'Could not load data/toc.yml' unless File.exists?('data/toc.yml')
35
+ normalize_nodes(YAML.load_file('data/toc.yml'))
36
+ end
37
+
38
+ def nodes
39
+ @nodes ||= root.flatten
40
+ end
41
+
42
+ def find(path)
43
+ nodes.detect { |node| node.path == path }
44
+ end
45
+
46
+ def index(path)
47
+ node = find(normalize_path(path))
48
+ nodes.index(node)
49
+ end
50
+
51
+ def prev_node(path)
52
+ ix = index(path)
53
+ nodes[ix - 1] if ix
54
+ end
55
+
56
+ def next_node(path)
57
+ ix = index(path)
58
+ nodes[ix + 1] if ix
59
+ end
35
60
 
36
- def normalize_nodes(nodes)
37
- Array(nodes).map do |node|
38
- case node
39
- when Array
40
- normalize_nodes(node)
41
- when String
42
- { 'path' => node }
43
- when Hash
44
- node.merge('children' => normalize_nodes(node['children']))
45
- else
46
- node
61
+ def normalize_nodes(nodes)
62
+ Array(nodes).map do |node|
63
+ case node
64
+ when Array
65
+ normalize_nodes(node)
66
+ when String
67
+ { 'path' => node }
68
+ when Hash
69
+ node.merge('children' => normalize_nodes(node['children']))
70
+ else
71
+ node
72
+ end
47
73
  end
48
74
  end
49
- end
50
75
  end
51
76
  end
@@ -1,3 +1,3 @@
1
1
  module MiddlemanToc
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-toc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Fuchs