jekyll-menus 0.0.5 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 859faa05008b32a4dc901ab2bf3d4ebf20999a59
4
- data.tar.gz: bd2c4676878bebb4043f0435daf75bdcbc5369ec
3
+ metadata.gz: 23caf21f1f3caca6e45203449759dcf3bac8290f
4
+ data.tar.gz: 2e36f81c8552475453e2d428fe0be32840af0843
5
5
  SHA512:
6
- metadata.gz: e7b2e957ddcf6dd1e3b2e9673a3a6c2e75897551ca09e82bfde65c0cf307076dd5e9af19dda5b58bcccc45acc20e1b0181653696d5c0167fbf14e9f5c63f0c16
7
- data.tar.gz: a1249183b2204a72c7a25608202ef152387a512307a0d4343b0233ad926902d9c0207b2dc77bf5053d22eeac364f147238b27e54d7620a12eaa04c2b3280cf60
6
+ metadata.gz: 629e105dc21e21dca324213daa0b8972aa5db6ac0cfe7a89c0acaaaa2494f4fdb5e486a1921ca6abac736eabac0dc17f21cf02894f126e5bc9e364b7a47db263
7
+ data.tar.gz: fe67cf3459e6ff81dddf6f5cc5ebed7c04d65289cf0bc8c865a2db2f1abdac530d1fa7dcd3909fe472a480191050c56e42878a4823639ed7f6d262f808fbae6b
data/lib/jekyll/menus.rb CHANGED
@@ -14,9 +14,7 @@ module Jekyll
14
14
  #
15
15
 
16
16
  def menus
17
- Utils.deep_merge(
18
- _data_menus, _page_menus
19
- )
17
+ Utils.deep_merge(_data_menus, Utils.deep_merge(_page_menus, _collection_menus))
20
18
  end
21
19
 
22
20
  #
@@ -38,6 +36,8 @@ module Jekyll
38
36
  _validate_config_menu_item(
39
37
  item
40
38
  )
39
+
40
+ item["_frontmatter"] = false
41
41
  end
42
42
 
43
43
  else
@@ -47,7 +47,6 @@ module Jekyll
47
47
  end
48
48
 
49
49
  merge = { key => menu }
50
- merge["_fronmatter"] = false
51
50
  out = Utils.deep_merge(
52
51
  out, merge
53
52
  )
@@ -63,70 +62,93 @@ module Jekyll
63
62
 
64
63
  @site.pages.select { |p| p.data.keys.grep(/menus?/).size > 0 }.each_with_object({}) do |page|
65
64
  [page.data["menus"], page.data["menu"]].flatten.compact.map do |menu|
65
+ out = _front_matter_menu(menu, page, out)
66
+ end
67
+ end
68
+
69
+ out
70
+ end
71
+
72
+ #
73
+
74
+ def _collection_menus
75
+ out = {}
76
+
77
+ @site.collections.each do |collection, pages|
78
+ pages.select { |p| p.data.keys.grep(/menus?/).size > 0 }.each_with_object({}) do |page|
79
+ [page.data["menus"], page.data["menu"]].flatten.compact.map do |menu|
80
+ out = _front_matter_menu(menu, page, out)
81
+ end
82
+ end
83
+ end
84
+
85
+ out
86
+ end
87
+
88
+ #
89
+
90
+ def _front_matter_menu(menu, page, out={})
91
+ # --
92
+ # menu: key
93
+ # menu:
94
+ # - key1
95
+ # - key2
96
+ # --
97
+
98
+ if menu.is_a?(Array) || menu.is_a?(String)
99
+ _simple_front_matter_menu(menu, {
100
+ :mergeable => out, :page => page
101
+ })
102
+
103
+ #
104
+
105
+ elsif menu.is_a?(Hash)
106
+ menu.each do |key, item|
107
+ out[key] ||= []
66
108
 
67
109
  # --
68
- # menu: key
69
110
  # menu:
70
- # - key1
71
- # - key2
111
+ # key: identifier
72
112
  # --
73
113
 
74
- if menu.is_a?(Array) || menu.is_a?(String)
75
- _simple_front_matter_menu(menu, {
76
- :mergeable => out, :page => page
114
+ if item.is_a?(String)
115
+ out[key] << _fill_front_matter_menu({ "identifier" => item }, {
116
+ :page => page
77
117
  })
78
118
 
79
- #
80
-
81
- elsif menu.is_a?(Hash)
82
- menu.each do |key, item|
83
- out[key] ||= []
84
-
85
- # --
86
- # menu:
87
- # key: identifier
88
- # --
89
-
90
- if item.is_a?(String)
91
- out[key] << _fill_front_matter_menu({ "identifier" => item }, {
92
- :page => page
93
- })
94
-
95
- # --
96
- # menu:
97
- # key:
98
- # url: /url
99
- # --
100
-
101
- elsif item.is_a?(Hash)
102
- out[key] << _fill_front_matter_menu(item, {
103
- :page => page
104
- })
105
-
106
- # --
107
- # menu:
108
- # key:
109
- # - url: /url
110
- # --
111
-
112
- else
113
- _throw_invalid_menu_entry(
114
- item
115
- )
116
- end
117
- end
119
+ # --
120
+ # menu:
121
+ # key:
122
+ # url: /url
123
+ # --
124
+
125
+ elsif item.is_a?(Hash)
126
+ out[key] << _fill_front_matter_menu(item, {
127
+ :page => page
128
+ })
118
129
 
119
130
  # --
120
131
  # menu:
121
- # key: 3
132
+ # key:
133
+ # - url: /url
122
134
  # --
123
135
 
124
136
  else
125
137
  _throw_invalid_menu_entry(
126
- menu
138
+ item
127
139
  )
128
140
  end
129
141
  end
142
+
143
+ # --
144
+ # menu:
145
+ # key: 3
146
+ # --
147
+
148
+ else
149
+ _throw_invalid_menu_entry(
150
+ menu
151
+ )
130
152
  end
131
153
 
132
154
  out
@@ -166,15 +188,25 @@ module Jekyll
166
188
  val ||= {}
167
189
 
168
190
  val["url"] ||= page.url
169
- val["identifier"] ||= File.basename(page.name, page.ext)
191
+ val["identifier"] ||= slug(page)
192
+ val["_frontmatter"] = page.relative_path # `page.url` can be changed with permalink frontmatter
170
193
  val["title"] ||= page.data["title"]
171
- val["_frontmatter"] = true
172
194
  val["weight"] ||= -1
173
195
  val
174
196
  end
175
197
 
176
198
  #
177
199
 
200
+ private
201
+ def slug(page)
202
+ out = File.join(File.dirname(page.path), File.basename(page.path, page.ext))
203
+ out.tr("^a-z0-9-_\\/", "").gsub(
204
+ /\/|\-+/, "_"
205
+ )
206
+ end
207
+
208
+ #
209
+
178
210
  private
179
211
  def _validate_config_menu_item(item)
180
212
  if !item.is_a?(Hash) || !item.values_at("url", "title", "identifier").compact.size == 3
@@ -4,6 +4,6 @@
4
4
 
5
5
  module Jekyll
6
6
  class Menus
7
- VERSION = "0.0.5"
7
+ VERSION = "0.1.0"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-menus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordon Bedwell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-03 00:00:00.000000000 Z
11
+ date: 2016-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll