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.
@@ -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.8.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-09-17 00:00:00.000000000 Z
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: '0'
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.2
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