jekyll-menus 0.0.5 → 0.1.0

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: 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