swedbank-pay-design-guide-jekyll-theme 1.5.2.pre.conversion.pre.to.pre.gem.pre.theme011 → 1.6.1.pre.PullRequest0137.pre.0063
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
- metadata +32 -59
- data/_plugins/jekyll_asset_pipeline.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5654a68beed4ad710113092cec8394be7e2c65fc15f0bfbc5af24ce2b236470e
|
4
|
+
data.tar.gz: a87c3f11413e9d05b39c05e2cd95c347a5a73cc151fd810d530c7c0020fa66d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ada7c3d822ff780bf3d7a6ef5fad6dfce6a1798dd1e6e61712f3b0735a9b5192f63eb25e566124342d8a995d2225a29a09b425324da39d953113981f6058791
|
7
|
+
data.tar.gz: f68fc6ddf37e60581f13401db8a26c731a6d0e92a76d9f85da623bedd3b805353e2eea233b938f42621e8c2dd4b2d07da743e3a44e3b84ff8c7132bb0d165711
|
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.0063
|
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-08-21 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,35 +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: '
|
54
|
-
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '0'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: jekyll-material-icon-tag
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
47
|
+
version: '3.7'
|
48
|
+
- - "<"
|
66
49
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0'
|
50
|
+
version: '5.0'
|
68
51
|
type: :runtime
|
69
52
|
prerelease: false
|
70
53
|
version_requirements: !ruby/object:Gem::Requirement
|
71
54
|
requirements:
|
72
55
|
- - ">="
|
73
56
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
57
|
+
version: '3.7'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '5.0'
|
75
61
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
62
|
+
name: jekyll-github-metadata
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
78
64
|
requirements:
|
79
65
|
- - ">="
|
@@ -87,7 +73,7 @@ dependencies:
|
|
87
73
|
- !ruby/object:Gem::Version
|
88
74
|
version: '0'
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
76
|
+
name: jekyll-material-icon-tag
|
91
77
|
requirement: !ruby/object:Gem::Requirement
|
92
78
|
requirements:
|
93
79
|
- - ">="
|
@@ -101,7 +87,7 @@ dependencies:
|
|
101
87
|
- !ruby/object:Gem::Version
|
102
88
|
version: '0'
|
103
89
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
90
|
+
name: jemoji
|
105
91
|
requirement: !ruby/object:Gem::Requirement
|
106
92
|
requirements:
|
107
93
|
- - ">="
|
@@ -115,21 +101,7 @@ dependencies:
|
|
115
101
|
- !ruby/object:Gem::Version
|
116
102
|
version: '0'
|
117
103
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
119
|
-
requirement: !ruby/object:Gem::Requirement
|
120
|
-
requirements:
|
121
|
-
- - ">="
|
122
|
-
- !ruby/object:Gem::Version
|
123
|
-
version: 1.0.1
|
124
|
-
type: :runtime
|
125
|
-
prerelease: false
|
126
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
-
requirements:
|
128
|
-
- - ">="
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
version: 1.0.1
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: html-proofer
|
104
|
+
name: kramdown-plantuml
|
133
105
|
requirement: !ruby/object:Gem::Requirement
|
134
106
|
requirements:
|
135
107
|
- - ">="
|
@@ -143,19 +115,19 @@ dependencies:
|
|
143
115
|
- !ruby/object:Gem::Version
|
144
116
|
version: '0'
|
145
117
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
118
|
+
name: nokogiri
|
147
119
|
requirement: !ruby/object:Gem::Requirement
|
148
120
|
requirements:
|
149
|
-
- - "
|
121
|
+
- - "~>"
|
150
122
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
123
|
+
version: '1.10'
|
152
124
|
type: :runtime
|
153
125
|
prerelease: false
|
154
126
|
version_requirements: !ruby/object:Gem::Requirement
|
155
127
|
requirements:
|
156
|
-
- - "
|
128
|
+
- - "~>"
|
157
129
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
130
|
+
version: '1.10'
|
159
131
|
- !ruby/object:Gem::Dependency
|
160
132
|
name: rake
|
161
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,19 +143,19 @@ dependencies:
|
|
171
143
|
- !ruby/object:Gem::Version
|
172
144
|
version: '13.0'
|
173
145
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
146
|
+
name: sass
|
175
147
|
requirement: !ruby/object:Gem::Requirement
|
176
148
|
requirements:
|
177
|
-
- - "
|
149
|
+
- - ">="
|
178
150
|
- !ruby/object:Gem::Version
|
179
|
-
version: '
|
151
|
+
version: '0'
|
180
152
|
type: :runtime
|
181
153
|
prerelease: false
|
182
154
|
version_requirements: !ruby/object:Gem::Requirement
|
183
155
|
requirements:
|
184
|
-
- - "
|
156
|
+
- - ">="
|
185
157
|
- !ruby/object:Gem::Version
|
186
|
-
version: '
|
158
|
+
version: '0'
|
187
159
|
- !ruby/object:Gem::Dependency
|
188
160
|
name: bundler
|
189
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,7 +172,7 @@ dependencies:
|
|
200
172
|
version: '0'
|
201
173
|
description:
|
202
174
|
email:
|
203
|
-
-
|
175
|
+
- opensource@swedbankpay.com
|
204
176
|
executables: []
|
205
177
|
extensions: []
|
206
178
|
extra_rdoc_files: []
|
@@ -242,7 +214,6 @@ files:
|
|
242
214
|
- _includes/sidebar.html
|
243
215
|
- _includes/toc.html
|
244
216
|
- _layouts/default.html
|
245
|
-
- _plugins/jekyll_asset_pipeline.rb
|
246
217
|
- _plugins/sidebar.rb
|
247
218
|
- _sass/card.scss
|
248
219
|
- _sass/code-view.scss
|
@@ -268,6 +239,8 @@ files:
|
|
268
239
|
- assets/tipuesearch/tipuesearch.min.js
|
269
240
|
- assets/tipuesearch/tipuesearch_content.js
|
270
241
|
- assets/tipuesearch/tipuesearch_set.js
|
242
|
+
- lib/gem_version.rb
|
243
|
+
- lib/sidebar.rb
|
271
244
|
homepage: https://github.com/SwedbankPay/swedbank-pay-design-guide-jekyll-theme
|
272
245
|
licenses:
|
273
246
|
- Apache-2.0
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'jekyll_asset_pipeline'
|
4
|
-
|
5
|
-
module JekyllAssetPipeline
|
6
|
-
# Converts .scss files to CSS.
|
7
|
-
class SassConverter < JekyllAssetPipeline::Converter
|
8
|
-
require 'sass'
|
9
|
-
|
10
|
-
def self.filetype
|
11
|
-
'.scss'
|
12
|
-
end
|
13
|
-
|
14
|
-
def convert
|
15
|
-
load_paths = [
|
16
|
-
@dirname,
|
17
|
-
File.join(__dir__, '_sass'),
|
18
|
-
File.join(__dir__, '..', '_sass')
|
19
|
-
]
|
20
|
-
Sass::Engine.new(@content, syntax: :scss, load_paths: load_paths).render
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|