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 +4 -4
- data/lib/jekyll/menus.rb +85 -53
- data/lib/jekyll/menus/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23caf21f1f3caca6e45203449759dcf3bac8290f
|
4
|
+
data.tar.gz: 2e36f81c8552475453e2d428fe0be32840af0843
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
#
|
71
|
-
# - key2
|
111
|
+
# key: identifier
|
72
112
|
# --
|
73
113
|
|
74
|
-
if
|
75
|
-
|
76
|
-
:
|
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
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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:
|
132
|
+
# key:
|
133
|
+
# - url: /url
|
122
134
|
# --
|
123
135
|
|
124
136
|
else
|
125
137
|
_throw_invalid_menu_entry(
|
126
|
-
|
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"] ||=
|
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
|
data/lib/jekyll/menus/version.rb
CHANGED
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
|
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-
|
11
|
+
date: 2016-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|