swedbank-pay-design-guide-jekyll-theme 1.5.2.pre.conversion.pre.to.pre.gem.pre.theme012 → 1.6.1.pre.PullRequest0137.pre.0064
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/_includes/front-page.html +35 -50
- data/_layouts/default.html +1 -1
- data/_plugins/sidebar.rb +1 -210
- data/lib/gem_version.rb +10 -0
- data/lib/sidebar.rb +211 -0
- data/lib/swedbank-pay-design-guide-jekyll-theme.rb +2 -3
- metadata +33 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42888091ccc955f38fa0242da4b03d4175f99e449b4aa238b48e97f6fead244c
|
4
|
+
data.tar.gz: 1c55a8d051cbcff4d2d7aff5998713d4146a865b7e520e31ae3f94234ff83ad7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ffcd2a6b3d6e0ae90b56cd7945eca08a1ab61cabb93fe7fb35e42d4e48eb9d72e46d1e104c356c071c850a0a4a7aede9fb84150319a116992b9123aa261cb25a
|
7
|
+
data.tar.gz: a04785e165d25dfccb851beb20397abd6aa7fed6855587b1a1c0769d95a84cb6d23c4bc079322dc52ea76c0d2549179d8c728e7baf08631c0130d1614978c13f
|
data/_includes/front-page.html
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
|
2
1
|
{%- comment -%}
|
3
2
|
**Parameters
|
4
3
|
card_col_class: Grid column class the cards should be wrapped in
|
5
4
|
num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
6
|
-
|
5
|
+
in release-notes
|
7
6
|
{%- endcomment -%}
|
8
7
|
|
9
8
|
{% assign card_col_class = include.card_col_class | default: "col-xxl-3 col-xl-6 col-lg-6" %}
|
@@ -15,7 +14,7 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
15
14
|
<div class="front-page-hero">
|
16
15
|
<h3>Welcome to the Swedbank Pay</h3>
|
17
16
|
<div class="front-page-hero-name">
|
18
|
-
{<span>developer portal</span>}
|
17
|
+
{<span>developer portal</span>}
|
19
18
|
</div>
|
20
19
|
<p>
|
21
20
|
Our developer portal gives you the full tool box for integrating
|
@@ -24,7 +23,7 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
24
23
|
</p>
|
25
24
|
</div>
|
26
25
|
<div class="front-page-intro-cards">
|
27
|
-
<h2 id="front-page-start" class="heading-line heading-line-white"
|
26
|
+
<h2 id="front-page-start" class="heading-line heading-line-white">Start your integration</h2>
|
28
27
|
<div class="row mt-4">
|
29
28
|
<div class="{{ card_col_class }}">
|
30
29
|
{% include card.html title='Checkout'
|
@@ -47,19 +46,10 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
47
46
|
to='/payments'
|
48
47
|
%}
|
49
48
|
</div>
|
50
|
-
<div class="{{ card_col_class }}">
|
51
|
-
{% include card.html title='Gift Cards'
|
52
|
-
title_type="h2"
|
53
|
-
text='Our Gift Cards API allows your customers to pay with
|
54
|
-
prepaid gift cards issued by Swedbank Pay in your Checkout.'
|
55
|
-
icon_content='card_giftcard'
|
56
|
-
to='/gift-cards'
|
57
|
-
%}
|
58
|
-
</div>
|
59
49
|
</div>
|
60
50
|
</div>
|
61
51
|
</div>
|
62
|
-
|
52
|
+
|
63
53
|
<div class="front-page-merchants">
|
64
54
|
<h6>Trusted by</h6>
|
65
55
|
<div class="merchants-container justify-content-xxl-between">
|
@@ -87,35 +77,29 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
87
77
|
</div>
|
88
78
|
</div>
|
89
79
|
</div>
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
</span>
|
80
|
+
|
81
|
+
<a href="https://ecom.externalintegration.payex.com/pspdemoshop" class="front-page-demoshop">
|
82
|
+
<span class="front-page-demoshop-text">
|
83
|
+
<span class="h2">Try our Demoshop<span>.</span></span>
|
84
|
+
<span class="demoshop-text-description">
|
85
|
+
Unsure about how it all works? See how our checkout and payment methods are used
|
86
|
+
in practice!
|
98
87
|
</span>
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
/>
|
111
|
-
<img class="demoshop-link-img-web d-none d-sm-none d-md-flex d-lg-none d-xl-flex"
|
112
|
-
src="/assets/img/demoshop-web.svg"
|
113
|
-
alt="demoshop-web"
|
114
|
-
/>
|
115
|
-
</span>
|
88
|
+
</span>
|
89
|
+
<span class="front-page-demoshop-link">
|
90
|
+
<span class="h3">Go to the demoshop</span>
|
91
|
+
<i class="material-icons">arrow_forward</i>
|
92
|
+
<span class="demoshop-link-img">
|
93
|
+
<img class="demoshop-link-img-mobile d-md-none d-lg-flex d-xl-none d-xxl-flex"
|
94
|
+
src="/assets/img/demoshop-mobile.svg" alt="demoshop-mobile" />
|
95
|
+
<img class="demoshop-link-img-mobile d-none d-md-none d-lg-flex d-xl-none"
|
96
|
+
src="/assets/img/demoshop-mobile2.svg" alt="demoshop-mobile2" />
|
97
|
+
<img class="demoshop-link-img-web d-none d-sm-none d-md-flex d-lg-none d-xl-flex"
|
98
|
+
src="/assets/img/demoshop-web.svg" alt="demoshop-web" />
|
116
99
|
</span>
|
117
|
-
</
|
118
|
-
|
100
|
+
</span>
|
101
|
+
</a>
|
102
|
+
|
119
103
|
<div class="front-page-container">
|
120
104
|
<div class="front-page-cards-sdk">
|
121
105
|
<h2 id="front-page-sdk" class="heading-line heading-line-sdk">Looking for SDKs?</h2>
|
@@ -158,7 +142,7 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
158
142
|
</div>
|
159
143
|
</div>
|
160
144
|
</div>
|
161
|
-
|
145
|
+
|
162
146
|
<div class="front-page-cards-module">
|
163
147
|
<h2 id="front-page-module" class="heading-line heading-line-module">Or perhaps modules?</h2>
|
164
148
|
<div class="row mt-4">
|
@@ -191,13 +175,14 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
191
175
|
</div>
|
192
176
|
</div>
|
193
177
|
</div>
|
194
|
-
|
178
|
+
|
195
179
|
<div class="front-page-release-notes">
|
196
|
-
<h2 id="front-page-release-notes" class="heading-line heading-line-green">What's new in the documentation
|
180
|
+
<h2 id="front-page-release-notes" class="heading-line heading-line-green">What's new in the documentation
|
181
|
+
</h2>
|
197
182
|
{% include release_notes.html num_dates=num_dates %}
|
198
183
|
<a href="/resources/release-notes">See full release notes</a>
|
199
184
|
</div>
|
200
|
-
|
185
|
+
|
201
186
|
<div class="front-page-cards-extra">
|
202
187
|
<h2 id="front-page-extra-resources" class="heading-line">Extra resources</h2>
|
203
188
|
<div class="row mt-4">
|
@@ -232,12 +217,13 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
232
217
|
</div>
|
233
218
|
</div>
|
234
219
|
</div>
|
235
|
-
|
220
|
+
|
236
221
|
<div class="front-page-contact">
|
237
222
|
<div class="front-page-contact-content">
|
238
223
|
<div class="row">
|
239
224
|
<div class="col-xl-7">
|
240
|
-
<h2 id="front-page-contact" class="heading-line heading-line-long">Can't find what you are
|
225
|
+
<h2 id="front-page-contact" class="heading-line heading-line-long">Can't find what you are
|
226
|
+
looking for?</h2>
|
241
227
|
<p>
|
242
228
|
We are always trying to make the developer portal as
|
243
229
|
good as it can be please don’t hesitate to contact us.
|
@@ -249,7 +235,6 @@ num_dates: Amount of rows (based on dates in release_notes) should be displayed
|
|
249
235
|
</div>
|
250
236
|
</div>
|
251
237
|
</div>
|
252
|
-
|
253
|
-
</div>
|
254
|
-
</div>
|
255
238
|
|
239
|
+
</div>
|
240
|
+
</div>
|
data/_layouts/default.html
CHANGED
data/_plugins/sidebar.rb
CHANGED
@@ -1,211 +1,2 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
-
|
3
|
-
require 'jekyll'
|
4
|
-
require 'nokogiri'
|
5
|
-
require 'json'
|
6
|
-
|
7
|
-
module Jekyll
|
8
|
-
class Sidebar
|
9
|
-
attr_accessor :hash_pre_render
|
10
|
-
attr_accessor :filename_with_headers
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@hash_pre_render = {}
|
14
|
-
@filename_with_headers = {}
|
15
|
-
end
|
16
|
-
|
17
|
-
def pre_render(page)
|
18
|
-
menu_order = page['menu-order'].nil? ? 0 : page['menu-order']
|
19
|
-
hide_from_sidebar = page['hide_from_sidebar'].nil? ? false : page['hide_from_sidebar']
|
20
|
-
url = page['url'].gsub('index.html', '').gsub('.html', '')
|
21
|
-
@hash_pre_render[url] = {
|
22
|
-
title: page['title'],
|
23
|
-
url: page['url'].gsub('.html', ''),
|
24
|
-
name: page['name'],
|
25
|
-
menu_order: menu_order,
|
26
|
-
hide_from_sidebar: hide_from_sidebar
|
27
|
-
}
|
28
|
-
end
|
29
|
-
|
30
|
-
def post_write(site)
|
31
|
-
files = []
|
32
|
-
Dir.glob("#{site.config['destination']}/**/*.html") do |filename|
|
33
|
-
doc = File.open(filename) { |f| Nokogiri::HTML(f) }
|
34
|
-
files.push(doc)
|
35
|
-
|
36
|
-
headers = []
|
37
|
-
doc.xpath('//h2 ').each do |header|
|
38
|
-
next unless header['id']
|
39
|
-
|
40
|
-
child = header.last_element_child
|
41
|
-
header = {
|
42
|
-
id: header['id'],
|
43
|
-
title: header.content.strip,
|
44
|
-
hash: (child['href']).to_s
|
45
|
-
}
|
46
|
-
headers.push(header)
|
47
|
-
end
|
48
|
-
sanitized_filename = sanitize_filename(filename)
|
49
|
-
@filename_with_headers[sanitized_filename] = { headers: headers }
|
50
|
-
end
|
51
|
-
|
52
|
-
Dir.glob("#{site.config['destination']}/**/*.html") do |filename|
|
53
|
-
sanitized_filename = sanitize_filename(filename)
|
54
|
-
sidebar = render(sanitized_filename)
|
55
|
-
file = File.open(filename) { |f| Nokogiri::HTML(f) }
|
56
|
-
file.xpath('//*[@id="dx-sidebar-main-nav-ul"]').each do |location|
|
57
|
-
location.inner_html = sidebar
|
58
|
-
end
|
59
|
-
File.open(filename, 'w') { |f| f.write(file.to_html(encoding: 'UTF-8')) }
|
60
|
-
end
|
61
|
-
|
62
|
-
# File.open('_site/sidebar.html', 'w') { |f| f.write(sidebar) }
|
63
|
-
end
|
64
|
-
|
65
|
-
private
|
66
|
-
|
67
|
-
def sanitize_filename(filename)
|
68
|
-
sanitized_filename = filename.match(/(?m)(?<=\b_site).*$/)[0]
|
69
|
-
sanitized_filename = sanitized_filename.gsub('index.html', '')
|
70
|
-
sanitized_filename.gsub('.html', '')
|
71
|
-
end
|
72
|
-
|
73
|
-
def generateSubgroup(filename, key, value, all_subgroups, level)
|
74
|
-
title = value[:title].split('–').last
|
75
|
-
subsubgroup_list = all_subgroups.select do |subsubgroup_key, _subsubgroup_value|
|
76
|
-
subsubgroup_key.include? key and subsubgroup_key != key and \
|
77
|
-
key.split('/').length > level
|
78
|
-
end
|
79
|
-
|
80
|
-
subgroup = ''
|
81
|
-
has_subgroups = !all_subgroups.empty?
|
82
|
-
if value[:headers].any? || !subsubgroup_list.empty?
|
83
|
-
if has_subgroups
|
84
|
-
url = value[:url]
|
85
|
-
active = active?(filename, url, true)
|
86
|
-
# puts "#{url}, #{filename}, #{key}" if active
|
87
|
-
item_class = active || (url.split('/').length > level && filename.start_with?(url)) ? 'nav-subgroup active' : 'nav-subgroup'
|
88
|
-
subgroup << "<li class=\"#{item_class}\">"
|
89
|
-
subgroup << "<div class=\"nav-subgroup-heading\"><i class=\"material-icons\">arrow_right</i><a href=\"#{url}\">#{title}</a></div>"
|
90
|
-
subgroup << '<ul class="nav-ul">'
|
91
|
-
|
92
|
-
if subsubgroup_list.empty?
|
93
|
-
value[:headers].each do |header|
|
94
|
-
subgroup << "<li class=\"nav-leaf\"><a href=\"#{value[:url]}#{header[:hash]}\">#{header[:title]}</a></li>"
|
95
|
-
end
|
96
|
-
else
|
97
|
-
subgroup_leaf_class = active ? 'nav-leaf nav-subgroup-leaf active' : 'nav-leaf nav-subgroup-leaf'
|
98
|
-
subgroup << "<li class=\"#{subgroup_leaf_class}\"><a href=\"#{value[:url]}\">#{title} overview</a></li>"
|
99
|
-
|
100
|
-
subsubgroup_list.each do |subsubgroup_key, subsubgroup_value|
|
101
|
-
subgroup << generateSubgroup(filename, subsubgroup_key, subsubgroup_value, subsubgroup_list, 3)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
subgroup << '</ul>'
|
106
|
-
subgroup << '</li>'
|
107
|
-
else
|
108
|
-
value[:headers].each do |header|
|
109
|
-
subgroup << "<li class=\"nav-leaf\"><a href=\"#{value[:url]}#{header[:hash]}\">#{header[:title]}</a></li>"
|
110
|
-
end
|
111
|
-
end
|
112
|
-
else
|
113
|
-
subgroup << if has_subgroups
|
114
|
-
"<li class=\"nav-leaf nav-subgroup-leaf\"><a href=\"#{value[:url]}\">#{title}</a></li>"
|
115
|
-
else
|
116
|
-
"<li class=\"nav-leaf\"><a href=\"#{value[:url]}\">#{title}</a></li>"
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
subgroup
|
121
|
-
end
|
122
|
-
|
123
|
-
def render(filename)
|
124
|
-
sidebar = ''
|
125
|
-
|
126
|
-
merged = merge(@hash_pre_render, @filename_with_headers).sort_by { |_key, value| value[:menu_order] }
|
127
|
-
merged.select { |key, _value| key.split('/').length <= 2 }.each do |key, value|
|
128
|
-
next if value[:title].nil?
|
129
|
-
next if value[:hide_from_sidebar]
|
130
|
-
|
131
|
-
subgroups = merged.select { |subgroup_key, _subgroup_value| subgroup_key.include? key and subgroup_key != key and key != '/' }
|
132
|
-
|
133
|
-
active = active?(filename, key)
|
134
|
-
# puts "#{filename}, #{key}" if active
|
135
|
-
item_class = active ? 'nav-group active' : 'nav-group'
|
136
|
-
|
137
|
-
child = "<li class=\"#{item_class}\">"
|
138
|
-
child << "<div class=\"nav-group-heading\"><i class=\"material-icons\">arrow_right</i><span>#{value[:title].split('–').first}</span></div>"
|
139
|
-
|
140
|
-
child << '<ul class="nav-ul">'
|
141
|
-
|
142
|
-
subgroup = generateSubgroup(filename, key, value, subgroups, 2)
|
143
|
-
|
144
|
-
child << subgroup
|
145
|
-
|
146
|
-
if subgroups.any?
|
147
|
-
subgroups.select { |subgroup_key, _subgroup_value| subgroup_key.split('/').length <= 3 }.each do |subgroup_key, subgroup_value|
|
148
|
-
subgroup = generateSubgroup(filename, subgroup_key, subgroup_value, subgroups, 2)
|
149
|
-
child << subgroup
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
child << '</ul>'
|
154
|
-
child << '</li>'
|
155
|
-
sidebar << child
|
156
|
-
end
|
157
|
-
|
158
|
-
File.open('_site/sidebar.html', 'w') { |f| f.write(sidebar) }
|
159
|
-
sidebar
|
160
|
-
end
|
161
|
-
|
162
|
-
def active?(filename, url, exact = false)
|
163
|
-
if filename == '/' || url == '/'
|
164
|
-
if filename == '/' && url == '/'
|
165
|
-
return true
|
166
|
-
else
|
167
|
-
return false
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
exact ? filename == url : filename.start_with?(url)
|
172
|
-
end
|
173
|
-
|
174
|
-
def merge(hash1, hash2)
|
175
|
-
all_keys = hash1.keys | hash2.keys
|
176
|
-
result_hash = {}
|
177
|
-
|
178
|
-
all_keys.each do |key|
|
179
|
-
hash_value = {}
|
180
|
-
|
181
|
-
if hash1.key? key
|
182
|
-
value = hash1[key]
|
183
|
-
|
184
|
-
hash_value = value unless value.nil?
|
185
|
-
end
|
186
|
-
|
187
|
-
if hash2.key? key
|
188
|
-
value = hash2[key]
|
189
|
-
|
190
|
-
hash_value = hash_value.merge(value) unless value.nil?
|
191
|
-
end
|
192
|
-
|
193
|
-
result_hash[key] = hash_value
|
194
|
-
end
|
195
|
-
|
196
|
-
result_hash
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
sidebar = Jekyll::Sidebar.new
|
202
|
-
|
203
|
-
Jekyll::Hooks.register :site, :pre_render do |site, _payload|
|
204
|
-
site.pages.each do |page|
|
205
|
-
sidebar.pre_render page
|
206
|
-
end
|
207
|
-
end
|
208
|
-
|
209
|
-
Jekyll::Hooks.register :site, :post_write do |site|
|
210
|
-
sidebar.post_write site
|
211
|
-
end
|
2
|
+
require_relative '../lib/sidebar.rb'
|
data/lib/gem_version.rb
ADDED
data/lib/sidebar.rb
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'jekyll'
|
4
|
+
require 'nokogiri'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module Jekyll
|
8
|
+
class Sidebar
|
9
|
+
attr_accessor :hash_pre_render
|
10
|
+
attr_accessor :filename_with_headers
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@hash_pre_render = {}
|
14
|
+
@filename_with_headers = {}
|
15
|
+
end
|
16
|
+
|
17
|
+
def pre_render(page)
|
18
|
+
menu_order = page['menu-order'].nil? ? 0 : page['menu-order']
|
19
|
+
hide_from_sidebar = page['hide_from_sidebar'].nil? ? false : page['hide_from_sidebar']
|
20
|
+
url = page['url'].gsub('index.html', '').gsub('.html', '')
|
21
|
+
@hash_pre_render[url] = {
|
22
|
+
title: page['title'],
|
23
|
+
url: page['url'].gsub('.html', ''),
|
24
|
+
name: page['name'],
|
25
|
+
menu_order: menu_order,
|
26
|
+
hide_from_sidebar: hide_from_sidebar
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def post_write(site)
|
31
|
+
files = []
|
32
|
+
Dir.glob("#{site.config['destination']}/**/*.html") do |filename|
|
33
|
+
doc = File.open(filename) { |f| Nokogiri::HTML(f) }
|
34
|
+
files.push(doc)
|
35
|
+
|
36
|
+
headers = []
|
37
|
+
doc.xpath('//h2 ').each do |header|
|
38
|
+
next unless header['id']
|
39
|
+
|
40
|
+
child = header.last_element_child
|
41
|
+
header = {
|
42
|
+
id: header['id'],
|
43
|
+
title: header.content.strip,
|
44
|
+
hash: (child['href']).to_s
|
45
|
+
}
|
46
|
+
headers.push(header)
|
47
|
+
end
|
48
|
+
sanitized_filename = sanitize_filename(filename)
|
49
|
+
@filename_with_headers[sanitized_filename] = { headers: headers }
|
50
|
+
end
|
51
|
+
|
52
|
+
Dir.glob("#{site.config['destination']}/**/*.html") do |filename|
|
53
|
+
sanitized_filename = sanitize_filename(filename)
|
54
|
+
sidebar = render(sanitized_filename)
|
55
|
+
file = File.open(filename) { |f| Nokogiri::HTML(f) }
|
56
|
+
file.xpath('//*[@id="dx-sidebar-main-nav-ul"]').each do |location|
|
57
|
+
location.inner_html = sidebar
|
58
|
+
end
|
59
|
+
File.open(filename, 'w') { |f| f.write(file.to_html(encoding: 'UTF-8')) }
|
60
|
+
end
|
61
|
+
|
62
|
+
# File.open('_site/sidebar.html', 'w') { |f| f.write(sidebar) }
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def sanitize_filename(filename)
|
68
|
+
sanitized_filename = filename.match(/(?m)(?<=\b_site).*$/)[0]
|
69
|
+
sanitized_filename = sanitized_filename.gsub('index.html', '')
|
70
|
+
sanitized_filename.gsub('.html', '')
|
71
|
+
end
|
72
|
+
|
73
|
+
def generateSubgroup(filename, key, value, all_subgroups, level)
|
74
|
+
title = value[:title].split('–').last
|
75
|
+
subsubgroup_list = all_subgroups.select do |subsubgroup_key, _subsubgroup_value|
|
76
|
+
subsubgroup_key.include? key and subsubgroup_key != key and \
|
77
|
+
key.split('/').length > level
|
78
|
+
end
|
79
|
+
|
80
|
+
subgroup = ''
|
81
|
+
has_subgroups = !all_subgroups.empty?
|
82
|
+
if value[:headers].any? || !subsubgroup_list.empty?
|
83
|
+
if has_subgroups
|
84
|
+
url = value[:url]
|
85
|
+
active = active?(filename, url, true)
|
86
|
+
# puts "#{url}, #{filename}, #{key}" if active
|
87
|
+
item_class = active || (url.split('/').length > level && filename.start_with?(url)) ? 'nav-subgroup active' : 'nav-subgroup'
|
88
|
+
subgroup << "<li class=\"#{item_class}\">"
|
89
|
+
subgroup << "<div class=\"nav-subgroup-heading\"><i class=\"material-icons\">arrow_right</i><a href=\"#{url}\">#{title}</a></div>"
|
90
|
+
subgroup << '<ul class="nav-ul">'
|
91
|
+
|
92
|
+
if subsubgroup_list.empty?
|
93
|
+
value[:headers].each do |header|
|
94
|
+
subgroup << "<li class=\"nav-leaf\"><a href=\"#{value[:url]}#{header[:hash]}\">#{header[:title]}</a></li>"
|
95
|
+
end
|
96
|
+
else
|
97
|
+
subgroup_leaf_class = active ? 'nav-leaf nav-subgroup-leaf active' : 'nav-leaf nav-subgroup-leaf'
|
98
|
+
subgroup << "<li class=\"#{subgroup_leaf_class}\"><a href=\"#{value[:url]}\">#{title} overview</a></li>"
|
99
|
+
|
100
|
+
subsubgroup_list.each do |subsubgroup_key, subsubgroup_value|
|
101
|
+
subgroup << generateSubgroup(filename, subsubgroup_key, subsubgroup_value, subsubgroup_list, 3)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
subgroup << '</ul>'
|
106
|
+
subgroup << '</li>'
|
107
|
+
else
|
108
|
+
value[:headers].each do |header|
|
109
|
+
subgroup << "<li class=\"nav-leaf\"><a href=\"#{value[:url]}#{header[:hash]}\">#{header[:title]}</a></li>"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
else
|
113
|
+
subgroup << if has_subgroups
|
114
|
+
"<li class=\"nav-leaf nav-subgroup-leaf\"><a href=\"#{value[:url]}\">#{title}</a></li>"
|
115
|
+
else
|
116
|
+
"<li class=\"nav-leaf\"><a href=\"#{value[:url]}\">#{title}</a></li>"
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
subgroup
|
121
|
+
end
|
122
|
+
|
123
|
+
def render(filename)
|
124
|
+
sidebar = ''
|
125
|
+
|
126
|
+
merged = merge(@hash_pre_render, @filename_with_headers).sort_by { |_key, value| value[:menu_order] }
|
127
|
+
merged.select { |key, _value| key.split('/').length <= 2 }.each do |key, value|
|
128
|
+
next if value[:title].nil?
|
129
|
+
next if value[:hide_from_sidebar]
|
130
|
+
|
131
|
+
subgroups = merged.select { |subgroup_key, _subgroup_value| subgroup_key.include? key and subgroup_key != key and key != '/' }
|
132
|
+
|
133
|
+
active = active?(filename, key)
|
134
|
+
# puts "#{filename}, #{key}" if active
|
135
|
+
item_class = active ? 'nav-group active' : 'nav-group'
|
136
|
+
|
137
|
+
child = "<li class=\"#{item_class}\">"
|
138
|
+
child << "<div class=\"nav-group-heading\"><i class=\"material-icons\">arrow_right</i><span>#{value[:title].split('–').first}</span></div>"
|
139
|
+
|
140
|
+
child << '<ul class="nav-ul">'
|
141
|
+
|
142
|
+
subgroup = generateSubgroup(filename, key, value, subgroups, 2)
|
143
|
+
|
144
|
+
child << subgroup
|
145
|
+
|
146
|
+
if subgroups.any?
|
147
|
+
subgroups.select { |subgroup_key, _subgroup_value| subgroup_key.split('/').length <= 3 }.each do |subgroup_key, subgroup_value|
|
148
|
+
subgroup = generateSubgroup(filename, subgroup_key, subgroup_value, subgroups, 2)
|
149
|
+
child << subgroup
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
child << '</ul>'
|
154
|
+
child << '</li>'
|
155
|
+
sidebar << child
|
156
|
+
end
|
157
|
+
|
158
|
+
File.open('_site/sidebar.html', 'w') { |f| f.write(sidebar) }
|
159
|
+
sidebar
|
160
|
+
end
|
161
|
+
|
162
|
+
def active?(filename, url, exact = false)
|
163
|
+
if filename == '/' || url == '/'
|
164
|
+
if filename == '/' && url == '/'
|
165
|
+
return true
|
166
|
+
else
|
167
|
+
return false
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
exact ? filename == url : filename.start_with?(url)
|
172
|
+
end
|
173
|
+
|
174
|
+
def merge(hash1, hash2)
|
175
|
+
all_keys = hash1.keys | hash2.keys
|
176
|
+
result_hash = {}
|
177
|
+
|
178
|
+
all_keys.each do |key|
|
179
|
+
hash_value = {}
|
180
|
+
|
181
|
+
if hash1.key? key
|
182
|
+
value = hash1[key]
|
183
|
+
|
184
|
+
hash_value = value unless value.nil?
|
185
|
+
end
|
186
|
+
|
187
|
+
if hash2.key? key
|
188
|
+
value = hash2[key]
|
189
|
+
|
190
|
+
hash_value = hash_value.merge(value) unless value.nil?
|
191
|
+
end
|
192
|
+
|
193
|
+
result_hash[key] = hash_value
|
194
|
+
end
|
195
|
+
|
196
|
+
result_hash
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
sidebar = Jekyll::Sidebar.new
|
202
|
+
|
203
|
+
Jekyll::Hooks.register :site, :pre_render do |site, _payload|
|
204
|
+
site.pages.each do |page|
|
205
|
+
sidebar.pre_render page
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
Jekyll::Hooks.register :site, :post_write do |site|
|
210
|
+
sidebar.post_write site
|
211
|
+
end
|
metadata
CHANGED
@@ -1,37 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swedbank-pay-design-guide-jekyll-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.1.pre.PullRequest0137.pre.0064
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Swedbank Pay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '5.0'
|
19
|
+
version: 1.0.1
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '5.0'
|
26
|
+
version: 1.0.1
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
28
|
+
name: html-proofer
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - ">="
|
@@ -45,21 +39,27 @@ dependencies:
|
|
45
39
|
- !ruby/object:Gem::Version
|
46
40
|
version: '0'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
|
-
name: jekyll
|
42
|
+
name: jekyll
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
47
|
+
version: '3.7'
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '5.0'
|
54
51
|
type: :runtime
|
55
52
|
prerelease: false
|
56
53
|
version_requirements: !ruby/object:Gem::Requirement
|
57
54
|
requirements:
|
58
55
|
- - ">="
|
59
56
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
57
|
+
version: '3.7'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '5.0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name: jekyll-
|
62
|
+
name: jekyll-github-metadata
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - ">="
|
@@ -73,7 +73,7 @@ dependencies:
|
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
76
|
+
name: jekyll-material-icon-tag
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - ">="
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
90
|
+
name: jemoji
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - ">="
|
@@ -101,21 +101,7 @@ dependencies:
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 1.0.1
|
110
|
-
type: :runtime
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - ">="
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
version: 1.0.1
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: html-proofer
|
104
|
+
name: kramdown-plantuml
|
119
105
|
requirement: !ruby/object:Gem::Requirement
|
120
106
|
requirements:
|
121
107
|
- - ">="
|
@@ -129,19 +115,19 @@ dependencies:
|
|
129
115
|
- !ruby/object:Gem::Version
|
130
116
|
version: '0'
|
131
117
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
118
|
+
name: nokogiri
|
133
119
|
requirement: !ruby/object:Gem::Requirement
|
134
120
|
requirements:
|
135
|
-
- - "
|
121
|
+
- - "~>"
|
136
122
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
123
|
+
version: '1.10'
|
138
124
|
type: :runtime
|
139
125
|
prerelease: false
|
140
126
|
version_requirements: !ruby/object:Gem::Requirement
|
141
127
|
requirements:
|
142
|
-
- - "
|
128
|
+
- - "~>"
|
143
129
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
130
|
+
version: '1.10'
|
145
131
|
- !ruby/object:Gem::Dependency
|
146
132
|
name: rake
|
147
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,19 +143,19 @@ dependencies:
|
|
157
143
|
- !ruby/object:Gem::Version
|
158
144
|
version: '13.0'
|
159
145
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
146
|
+
name: sass
|
161
147
|
requirement: !ruby/object:Gem::Requirement
|
162
148
|
requirements:
|
163
|
-
- - "
|
149
|
+
- - ">="
|
164
150
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
151
|
+
version: '0'
|
166
152
|
type: :runtime
|
167
153
|
prerelease: false
|
168
154
|
version_requirements: !ruby/object:Gem::Requirement
|
169
155
|
requirements:
|
170
|
-
- - "
|
156
|
+
- - ">="
|
171
157
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
158
|
+
version: '0'
|
173
159
|
- !ruby/object:Gem::Dependency
|
174
160
|
name: bundler
|
175
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,7 +172,7 @@ dependencies:
|
|
186
172
|
version: '0'
|
187
173
|
description:
|
188
174
|
email:
|
189
|
-
-
|
175
|
+
- opensource@swedbankpay.com
|
190
176
|
executables: []
|
191
177
|
extensions: []
|
192
178
|
extra_rdoc_files: []
|
@@ -253,6 +239,8 @@ files:
|
|
253
239
|
- assets/tipuesearch/tipuesearch.min.js
|
254
240
|
- assets/tipuesearch/tipuesearch_content.js
|
255
241
|
- assets/tipuesearch/tipuesearch_set.js
|
242
|
+
- lib/gem_version.rb
|
243
|
+
- lib/sidebar.rb
|
256
244
|
- lib/swedbank-pay-design-guide-jekyll-theme.rb
|
257
245
|
homepage: https://github.com/SwedbankPay/swedbank-pay-design-guide-jekyll-theme
|
258
246
|
licenses:
|