middleman-toc 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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