swedbank-pay-design-guide-jekyll-theme 1.8.1 → 1.9.4
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/iterator.html +2 -2
- data/_includes/title-header.html +32 -0
- data/_layouts/default.html +13 -32
- data/_layouts/front-page.html +24 -21
- data/_plugins/sidebar.rb +2 -1
- data/_sass/breakpoints.scss +5 -0
- data/_sass/card.scss +1 -0
- data/_sass/front-page.scss +108 -71
- data/_sass/sidebar.scss +33 -3
- data/_sass/swedbank-pay-design-guide-theme.scss +5 -0
- data/_sass/title-header.scss +3 -0
- data/_sass/variables.scss +1 -1
- data/assets/css/pygments-autumn.css +1 -1
- data/lib/gem_version.rb +1 -1
- data/lib/safe_merge.rb +28 -0
- data/lib/sanitized_filename.rb +12 -0
- data/lib/sidebar.rb +23 -196
- data/lib/sidebar_html_builder.rb +154 -0
- data/lib/sidebar_page.rb +181 -0
- data/lib/sidebar_page_collection.rb +36 -0
- data/lib/sidebar_page_title.rb +94 -0
- data/lib/sidebar_parser.rb +95 -0
- data/lib/sidebar_path.rb +62 -0
- data/lib/sidebar_renderer.rb +67 -0
- data/lib/sidebar_text_builder.rb +47 -0
- data/lib/sidebar_tree_builder.rb +86 -0
- metadata +31 -4
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'sidebar_html_builder'
|
4
|
+
|
5
|
+
module SwedbankPay
|
6
|
+
# Renders the Sidebar
|
7
|
+
class SidebarRenderer
|
8
|
+
def initialize(tree)
|
9
|
+
raise ArgumentError, 'pages cannot be nil' if tree.nil?
|
10
|
+
raise ArgumentError, 'pages must be an SidebarTreeBuilder' unless tree.is_a? SidebarTreeBuilder
|
11
|
+
|
12
|
+
@tree = tree
|
13
|
+
@html_builder = SidebarHTMLBuilder.new(@tree)
|
14
|
+
end
|
15
|
+
|
16
|
+
def enrich_jekyll
|
17
|
+
enrich_jekyll_pages(@tree)
|
18
|
+
end
|
19
|
+
|
20
|
+
def render
|
21
|
+
render_pages(@tree)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def render_pages(pages)
|
27
|
+
return if pages.empty?
|
28
|
+
|
29
|
+
pages.each do |page|
|
30
|
+
sidebar_html = render_sidebar(page)
|
31
|
+
name = page.filename || page.name || page.to_s
|
32
|
+
|
33
|
+
if sidebar_html.nil?
|
34
|
+
Jekyll.logger.warn(" Sidebar: No HTML rendered for #{name}.")
|
35
|
+
next
|
36
|
+
end
|
37
|
+
|
38
|
+
if page.sidebar_container.nil?
|
39
|
+
Jekyll.logger.warn(" Sidebar: No sidebar container found in '#{name}'. #{page.filename}")
|
40
|
+
next
|
41
|
+
end
|
42
|
+
|
43
|
+
page.sidebar_container.inner_html = sidebar_html
|
44
|
+
|
45
|
+
page.save
|
46
|
+
|
47
|
+
render_pages(page.children)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def render_sidebar(page)
|
52
|
+
sidebar_html = nil
|
53
|
+
|
54
|
+
begin
|
55
|
+
sidebar_html = @html_builder.build(page)
|
56
|
+
|
57
|
+
File.open('_site/sidebar.html', 'w') { |f| f.write(sidebar_html) }
|
58
|
+
rescue StandardError => e
|
59
|
+
name = page.filename || page.name || page.to_s
|
60
|
+
Jekyll.logger.error(" Sidebar: Unable to render sidebar for '#{name}'.")
|
61
|
+
Jekyll.logger.debug(" Sidebar: #{e.message}. #{e.backtrace.inspect}")
|
62
|
+
end
|
63
|
+
|
64
|
+
sidebar_html
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require_relative 'sidebar_page'
|
4
|
+
|
5
|
+
module SwedbankPay
|
6
|
+
# Builds a plain text representation of a Sidebar, suitable for a terminal.
|
7
|
+
class SidebarTextBuilder
|
8
|
+
def initialize(page)
|
9
|
+
raise ArgumentError, 'Page must be a SidebarPage' unless page.is_a? SidebarPage
|
10
|
+
|
11
|
+
@page = page
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_s
|
15
|
+
name = @page.name == '/' ? '/' : "/#{@page.name}"
|
16
|
+
lead_title = @page.title.nil? ? '?' : @page.title.lead
|
17
|
+
main_title = @page.title.nil? ? '?' : @page.title.main
|
18
|
+
s = "#{indent} #{@page.coordinate}. #{name}: #{lead_title} – #{main_title}\n"
|
19
|
+
|
20
|
+
if @page.children?
|
21
|
+
@page.children.each do |child|
|
22
|
+
s << child.to_s
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Only strip extraneous whitespace at the root page
|
27
|
+
@page.level.zero? ? s.strip : s
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def indent
|
33
|
+
# Return a special character for the first root page
|
34
|
+
return '┍╾' if (@page.number.nil? || @page.number.zero?) && @page.parent.nil?
|
35
|
+
|
36
|
+
increment = @page.level > 1 ? @page.level + 1 : @page.level
|
37
|
+
|
38
|
+
"┝╾#{'─' * increment}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def todo
|
42
|
+
# This 'todo' method exists to circumvent the following RuboCop error:
|
43
|
+
# lib/sidebar_text_builder.rb:39:97: C: Style/AsciiComments: Use only ascii symbols in comments.
|
44
|
+
"TODO: Add logic to find the very last page regardless of level and have indent it with '┕╾─'"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require 'jekyll'
|
4
|
+
require 'forwardable'
|
5
|
+
require_relative 'sidebar_page_collection'
|
6
|
+
|
7
|
+
module SwedbankPay
|
8
|
+
# Arranges Sidebar pages into a tree
|
9
|
+
class SidebarTreeBuilder
|
10
|
+
include Enumerable
|
11
|
+
extend Forwardable
|
12
|
+
def_delegators :@tree, :each, :length, :empty?, :<<, :[], :count
|
13
|
+
|
14
|
+
def initialize(pages)
|
15
|
+
raise ArgumentError, 'pages cannot be nil' if pages.nil?
|
16
|
+
raise ArgumentError, 'pages must be a Hash' unless pages.is_a? Hash
|
17
|
+
|
18
|
+
@tree = tree(pages)
|
19
|
+
enrich_jekyll_pages(@tree)
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
stringify
|
24
|
+
end
|
25
|
+
|
26
|
+
def inspect
|
27
|
+
stringify(inspection: true)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def stringify(inspection: false)
|
33
|
+
output = "<#{self.class} ##{count}"
|
34
|
+
|
35
|
+
if inspection
|
36
|
+
output << ":\n"
|
37
|
+
@tree.each do |page|
|
38
|
+
output << "#{page}\n"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
output << '>'
|
43
|
+
output
|
44
|
+
end
|
45
|
+
|
46
|
+
def tree(pages)
|
47
|
+
tree = []
|
48
|
+
children_of = {}
|
49
|
+
page_number = 0
|
50
|
+
|
51
|
+
sort_by_path_reversed(pages).each do |_, page|
|
52
|
+
children_of[page.path] = [] if children_of[page.path].nil?
|
53
|
+
page.children = children_of[page.path].sort
|
54
|
+
|
55
|
+
if page.parent.nil?
|
56
|
+
# Root pages are pushed directly into the root of the tree
|
57
|
+
page.number = page_number
|
58
|
+
tree.push(page)
|
59
|
+
page_number += 1
|
60
|
+
else
|
61
|
+
children_of[page.parent] = [] if children_of[page.parent].nil?
|
62
|
+
children_of[page.parent].push(page)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# Sort the root pages
|
67
|
+
tree.sort!
|
68
|
+
|
69
|
+
SidebarPageCollection.new(nil, tree)
|
70
|
+
end
|
71
|
+
|
72
|
+
def sort_by_path_reversed(pages)
|
73
|
+
pages.sort_by { |path, _| path }.reverse
|
74
|
+
end
|
75
|
+
|
76
|
+
def enrich_jekyll_pages(pages)
|
77
|
+
return if pages.empty?
|
78
|
+
|
79
|
+
pages.each do |page|
|
80
|
+
page.enrich_jekyll
|
81
|
+
|
82
|
+
enrich_jekyll_pages(page.children)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.9.4
|
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-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -100,6 +100,20 @@ dependencies:
|
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: jekyll-redirect-from
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
103
117
|
- !ruby/object:Gem::Dependency
|
104
118
|
name: jemoji
|
105
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -225,10 +239,12 @@ files:
|
|
225
239
|
- _includes/paragraph-highlight.html
|
226
240
|
- _includes/release_notes.html
|
227
241
|
- _includes/sidebar.html
|
242
|
+
- _includes/title-header.html
|
228
243
|
- _includes/toc.html
|
229
244
|
- _layouts/default.html
|
230
245
|
- _layouts/front-page.html
|
231
246
|
- _plugins/sidebar.rb
|
247
|
+
- _sass/breakpoints.scss
|
232
248
|
- _sass/card.scss
|
233
249
|
- _sass/code-view.scss
|
234
250
|
- _sass/colors.scss
|
@@ -254,7 +270,18 @@ files:
|
|
254
270
|
- assets/tipuesearch/tipuesearch_content.js
|
255
271
|
- assets/tipuesearch/tipuesearch_set.js
|
256
272
|
- lib/gem_version.rb
|
273
|
+
- lib/safe_merge.rb
|
274
|
+
- lib/sanitized_filename.rb
|
257
275
|
- lib/sidebar.rb
|
276
|
+
- lib/sidebar_html_builder.rb
|
277
|
+
- lib/sidebar_page.rb
|
278
|
+
- lib/sidebar_page_collection.rb
|
279
|
+
- lib/sidebar_page_title.rb
|
280
|
+
- lib/sidebar_parser.rb
|
281
|
+
- lib/sidebar_path.rb
|
282
|
+
- lib/sidebar_renderer.rb
|
283
|
+
- lib/sidebar_text_builder.rb
|
284
|
+
- lib/sidebar_tree_builder.rb
|
258
285
|
- lib/swedbank-pay-design-guide-jekyll-theme.rb
|
259
286
|
homepage: https://github.com/SwedbankPay/swedbank-pay-design-guide-jekyll-theme
|
260
287
|
licenses:
|
@@ -268,14 +295,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
268
295
|
requirements:
|
269
296
|
- - ">="
|
270
297
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
298
|
+
version: 2.4.0
|
272
299
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
273
300
|
requirements:
|
274
301
|
- - ">="
|
275
302
|
- !ruby/object:Gem::Version
|
276
303
|
version: '0'
|
277
304
|
requirements: []
|
278
|
-
rubygems_version: 3.1.
|
305
|
+
rubygems_version: 3.1.4
|
279
306
|
signing_key:
|
280
307
|
specification_version: 4
|
281
308
|
summary: Swedbank Pay Design Guide theme for Jekyll
|