jekyll-generator-single-source 0.0.9 → 0.0.11
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/generator-single-source/doc_nav_config.rb +10 -9
- data/lib/jekyll/generator-single-source/doc_nav_item/src.rb +3 -1
- data/lib/jekyll/generator-single-source/doc_nav_item/without_src.rb +3 -1
- data/lib/jekyll/generator-single-source/generator.rb +1 -1
- data/lib/jekyll/generator-single-source/generator_config.rb +3 -3
- data/lib/jekyll/generator-single-source/liquid/drops/release.rb +31 -0
- data/lib/jekyll/generator-single-source/liquid/tags/version_is.rb +5 -19
- data/lib/jekyll/generator-single-source/product/edition.rb +41 -0
- data/lib/jekyll/generator-single-source/product/release.rb +87 -0
- data/lib/jekyll/generator-single-source/single_source_page.rb +9 -10
- data/lib/jekyll/generator-single-source/version.rb +1 -1
- data/lib/jekyll/generator-single-source.rb +3 -1
- metadata +7 -5
- data/lib/jekyll/generator-single-source/versions.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 253e5fa9d7d9bb93a522582300e462ed95aacf538537b75f366227b746324d55
|
4
|
+
data.tar.gz: cab91867c2467dbc009b072d331f17e36485e72e3d37ba43e516051dc9a7936e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c39a9d017eef7e7f15e13cf8b1d0e96e63afcfa10252d4fa1ca4a99adfb6f6e719eda55f90769839a5511e28be3fb9d6dcfc42247f7788ee23a649b7a6e2d0ee
|
7
|
+
data.tar.gz: a447aadeb5a01e7d09331ee0668f449c9e6c4b316e0d9a420dd4560cf375147c532764e2d6eb037a953886b9ce3d772dddbc365f16ffaedbb52e4d04a0ac24bb
|
@@ -5,14 +5,15 @@ module Jekyll
|
|
5
5
|
class DocNavConfig
|
6
6
|
attr_reader :file_path, :site
|
7
7
|
|
8
|
-
def initialize(file_path, site
|
8
|
+
def initialize(file_path, site)
|
9
9
|
@file_path = file_path
|
10
10
|
@site = site
|
11
|
-
@versions_from_file = versions_from_file
|
12
11
|
end
|
13
12
|
|
14
13
|
def skip_generation?
|
15
|
-
|
14
|
+
# skip if release is not available because it
|
15
|
+
# was skipped using an ENV variable
|
16
|
+
!(config.is_a?(Hash) && config['generate']) || release.nil?
|
16
17
|
end
|
17
18
|
|
18
19
|
def assume_generated?
|
@@ -31,11 +32,13 @@ module Jekyll
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def release
|
34
|
-
@release ||=
|
35
|
+
@release ||= edition.releases.detect do |r|
|
36
|
+
r.value == config['release']
|
37
|
+
end
|
35
38
|
end
|
36
39
|
|
37
40
|
def versions
|
38
|
-
@versions ||=
|
41
|
+
@versions ||= release.versions
|
39
42
|
end
|
40
43
|
|
41
44
|
def generate_pages
|
@@ -54,10 +57,8 @@ module Jekyll
|
|
54
57
|
|
55
58
|
private
|
56
59
|
|
57
|
-
def
|
58
|
-
@
|
59
|
-
v['edition'] == product && v['release'] == release
|
60
|
-
end
|
60
|
+
def edition
|
61
|
+
@edition ||= Product::Edition.new(edition: product, site:)
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|
@@ -28,7 +28,9 @@ module Jekyll
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def dest_path
|
31
|
-
if
|
31
|
+
if @item_config['absolute_url']
|
32
|
+
File.join(@item_config['url'], '/')
|
33
|
+
elsif multiple_products?
|
32
34
|
File.join(product, release, @item_config['url'], '/')
|
33
35
|
else
|
34
36
|
File.join(base_dest_path, release, @item_config['url'], '/')
|
@@ -11,10 +11,10 @@ module Jekyll
|
|
11
11
|
@site = site
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
@
|
14
|
+
def editions
|
15
|
+
@editions ||= SafeYAML.load(File.read(
|
16
16
|
File.expand_path(versions_file, @site.source)
|
17
|
-
))
|
17
|
+
)).group_by { |e| e['edition'] }
|
18
18
|
end
|
19
19
|
|
20
20
|
def layout
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module GeneratorSingleSource
|
5
|
+
module Liquid
|
6
|
+
module Drops
|
7
|
+
class Release < ::Liquid::Drop
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
attr_reader :release
|
11
|
+
|
12
|
+
def initialize(release)
|
13
|
+
@release = release
|
14
|
+
end
|
15
|
+
|
16
|
+
def_delegators :@release, :value, :label, :latest?, :to_s, :to_str, :versions
|
17
|
+
|
18
|
+
def hash
|
19
|
+
@hash ||= "#{@release.edition}-#{@release.value}".hash
|
20
|
+
end
|
21
|
+
|
22
|
+
def ==(other)
|
23
|
+
return @release.value == other if other.is_a?(String)
|
24
|
+
|
25
|
+
@release.to_h == other.release.to_h
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -18,34 +18,24 @@ module Jekyll
|
|
18
18
|
def render(context) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
19
19
|
page = context.environments.first['page']
|
20
20
|
|
21
|
-
current_version = to_version(page['
|
21
|
+
current_version = to_version(page['release'].value)
|
22
22
|
|
23
23
|
# If there's an exact match, check only that
|
24
24
|
if @params.key?(:eq)
|
25
25
|
version = to_version(@params[:eq])
|
26
|
-
|
27
|
-
return '' unless current_version == version
|
28
|
-
else
|
29
|
-
return '' unless version > to_version(page['latest_released_version'])
|
30
|
-
end
|
26
|
+
return '' unless current_version == version
|
31
27
|
end
|
32
28
|
|
33
29
|
# If there's a greater than or equal to check, fail if it's lower
|
34
30
|
if @params.key?(:gte)
|
35
31
|
version = to_version(@params[:gte])
|
36
|
-
|
37
|
-
return '' unless current_version >= version
|
38
|
-
end
|
32
|
+
return '' unless current_version >= version
|
39
33
|
end
|
40
34
|
|
41
35
|
# If there's a less than or equal to heck, fail if it's higher
|
42
36
|
if @params.key?(:lte)
|
43
37
|
version = to_version(@params[:lte])
|
44
|
-
|
45
|
-
return '' unless current_version <= version
|
46
|
-
else
|
47
|
-
return '' unless version > to_version(page['latest_released_version'])
|
48
|
-
end
|
38
|
+
return '' unless current_version <= version
|
49
39
|
end
|
50
40
|
|
51
41
|
# Don't evaluate the liquid block unconditionally,
|
@@ -72,11 +62,7 @@ module Jekyll
|
|
72
62
|
end
|
73
63
|
|
74
64
|
def to_version(input)
|
75
|
-
|
76
|
-
Gem::Version.new(input.gsub(/\.x$/, '.0'))
|
77
|
-
else
|
78
|
-
input
|
79
|
-
end
|
65
|
+
Gem::Version.new(input.to_s.gsub(/\.x$/, '.0'))
|
80
66
|
end
|
81
67
|
end
|
82
68
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module GeneratorSingleSource
|
5
|
+
module Product
|
6
|
+
class Edition
|
7
|
+
|
8
|
+
def self.all(site:)
|
9
|
+
GeneratorConfig.new(site).editions
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(edition:, site:)
|
13
|
+
@edition = edition
|
14
|
+
@site = site
|
15
|
+
end
|
16
|
+
|
17
|
+
def releases
|
18
|
+
@releases ||= releases_data
|
19
|
+
.map { |r| Product::Release.new(r) }
|
20
|
+
.reject do |r|
|
21
|
+
r.label && ENV["SKIP_#{name.upcase.gsub('-','_')}_#{r.label.upcase}"]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def latest_release
|
26
|
+
@latest_release ||= releases.detect(&:latest?)
|
27
|
+
end
|
28
|
+
|
29
|
+
def name
|
30
|
+
@name ||= @edition
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def releases_data
|
36
|
+
@releases_data ||= self.class.all(site: @site).fetch(@edition, [])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
module GeneratorSingleSource
|
5
|
+
module Product
|
6
|
+
class Release
|
7
|
+
attr_reader :release_hash
|
8
|
+
|
9
|
+
def initialize(release_hash)
|
10
|
+
@release_hash = release_hash
|
11
|
+
|
12
|
+
validate!
|
13
|
+
end
|
14
|
+
|
15
|
+
def edition
|
16
|
+
@edition ||= @release_hash.fetch('edition')
|
17
|
+
end
|
18
|
+
|
19
|
+
def value
|
20
|
+
@value ||= @release_hash['release']
|
21
|
+
end
|
22
|
+
|
23
|
+
def latest?
|
24
|
+
@release_hash['latest']
|
25
|
+
end
|
26
|
+
|
27
|
+
def label
|
28
|
+
@label ||= @release_hash['label']
|
29
|
+
end
|
30
|
+
|
31
|
+
def versions
|
32
|
+
@versions ||= begin
|
33
|
+
if @release_hash.has_key?('version')
|
34
|
+
{ 'default' => @release_hash['version'] }
|
35
|
+
else
|
36
|
+
versions_without_suffix
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def default_version
|
42
|
+
@default_version ||= versions['default']
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_str
|
46
|
+
if @release_hash.key?('label')
|
47
|
+
label
|
48
|
+
else
|
49
|
+
value
|
50
|
+
end
|
51
|
+
end
|
52
|
+
alias :to_s :to_str
|
53
|
+
|
54
|
+
def to_semver
|
55
|
+
value.gsub('-x', '.x').gsub(/\.x/, '.0')
|
56
|
+
end
|
57
|
+
|
58
|
+
def to_liquid
|
59
|
+
Liquid::Drops::Release.new(self)
|
60
|
+
end
|
61
|
+
|
62
|
+
def to_h
|
63
|
+
@release_hash
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def validate!
|
69
|
+
if @release_hash.has_key?('version') &&
|
70
|
+
@release_hash.keys.any? { |k| k.end_with?('-version') }
|
71
|
+
raise SyntaxError.new(
|
72
|
+
"Invalid config. `version` and `*-version` present in #{@release_hash}."
|
73
|
+
)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def versions_without_suffix
|
78
|
+
@versions_without_suffix ||= @release_hash.each_with_object({}) do |(k, v), h|
|
79
|
+
if k.end_with?('-version')
|
80
|
+
h[k.sub('-version', '')] = v
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -29,16 +29,19 @@ module Jekyll
|
|
29
29
|
@data['is_dir_index'] = nav_item.source.dir?
|
30
30
|
|
31
31
|
# Set the current release and concrete version
|
32
|
-
|
33
|
-
@data['
|
34
|
-
@data['
|
32
|
+
release = nav_item.release
|
33
|
+
@data['release'] = Liquid::Drops::Release.new(release)
|
34
|
+
@data['edition'] = release.edition
|
35
|
+
@data['version'] = release.default_version
|
36
|
+
@data['versions'] = release.versions
|
37
|
+
|
35
38
|
@data['nav_items'] = nav_item.config
|
36
39
|
|
37
40
|
# Set the layout if it's not already provided
|
38
41
|
@data['layout'] ||= GeneratorConfig.new(@site).layout
|
39
42
|
|
40
43
|
# Apply any overrides
|
41
|
-
current = to_version(
|
44
|
+
current = to_version(release.value)
|
42
45
|
@data['overrides']&.each do |key, entries|
|
43
46
|
entries.each do |value, conditions|
|
44
47
|
gte = conditions['gte'] ? to_version(conditions['gte']) : nil
|
@@ -63,12 +66,8 @@ module Jekyll
|
|
63
66
|
@relative_path = nav_item.source.file_path
|
64
67
|
end
|
65
68
|
|
66
|
-
|
67
|
-
|
68
|
-
Gem::Version.new(input.gsub(/\.x$/, '.0'))
|
69
|
-
else
|
70
|
-
input
|
71
|
-
end
|
69
|
+
def to_version(input)
|
70
|
+
Gem::Version.new(input.to_s.gsub(/\.x$/, '.0'))
|
72
71
|
end
|
73
72
|
end
|
74
73
|
end
|
@@ -18,4 +18,6 @@ require_relative 'generator-single-source/generator_config'
|
|
18
18
|
require_relative 'generator-single-source/generator'
|
19
19
|
require_relative 'generator-single-source/single_source_page'
|
20
20
|
require_relative 'generator-single-source/version'
|
21
|
-
require_relative 'generator-single-source/
|
21
|
+
require_relative 'generator-single-source/product/release'
|
22
|
+
require_relative 'generator-single-source/product/edition'
|
23
|
+
require_relative 'generator-single-source/liquid/drops/release'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-generator-single-source
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabian Rodriguez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -93,6 +93,7 @@ files:
|
|
93
93
|
- lib/jekyll/generator-single-source/generator.rb
|
94
94
|
- lib/jekyll/generator-single-source/generator_config.rb
|
95
95
|
- lib/jekyll/generator-single-source/hooks/version_is.rb
|
96
|
+
- lib/jekyll/generator-single-source/liquid/drops/release.rb
|
96
97
|
- lib/jekyll/generator-single-source/liquid/tags/version_is.rb
|
97
98
|
- lib/jekyll/generator-single-source/nav_config/base.rb
|
98
99
|
- lib/jekyll/generator-single-source/nav_config/hash_config.rb
|
@@ -100,12 +101,13 @@ files:
|
|
100
101
|
- lib/jekyll/generator-single-source/nav_config/patch.rb
|
101
102
|
- lib/jekyll/generator-single-source/nav_config/path_rewriter.rb
|
102
103
|
- lib/jekyll/generator-single-source/nav_config/trimmer.rb
|
104
|
+
- lib/jekyll/generator-single-source/product/edition.rb
|
105
|
+
- lib/jekyll/generator-single-source/product/release.rb
|
103
106
|
- lib/jekyll/generator-single-source/single_source_page.rb
|
104
107
|
- lib/jekyll/generator-single-source/source/base.rb
|
105
108
|
- lib/jekyll/generator-single-source/source/dir_source.rb
|
106
109
|
- lib/jekyll/generator-single-source/source/file_source.rb
|
107
110
|
- lib/jekyll/generator-single-source/version.rb
|
108
|
-
- lib/jekyll/generator-single-source/versions.rb
|
109
111
|
homepage: https://github.com/kong/jekyll-generator-single-source
|
110
112
|
licenses:
|
111
113
|
- Apache-2.0
|
@@ -118,14 +120,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
120
|
requirements:
|
119
121
|
- - ">="
|
120
122
|
- !ruby/object:Gem::Version
|
121
|
-
version: 3.
|
123
|
+
version: 3.2.2
|
122
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
125
|
requirements:
|
124
126
|
- - ">="
|
125
127
|
- !ruby/object:Gem::Version
|
126
128
|
version: '0'
|
127
129
|
requirements: []
|
128
|
-
rubygems_version: 3.
|
130
|
+
rubygems_version: 3.4.20
|
129
131
|
signing_key:
|
130
132
|
specification_version: 4
|
131
133
|
summary: A Jekyll plugin to dynamically generate pages from a single source file
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Jekyll
|
4
|
-
module GeneratorSingleSource
|
5
|
-
class Versions
|
6
|
-
def self.extract(version_hash)
|
7
|
-
new(version_hash).versions
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(version)
|
11
|
-
@version = version
|
12
|
-
|
13
|
-
validate!
|
14
|
-
end
|
15
|
-
|
16
|
-
def versions
|
17
|
-
if @version.has_key?('version')
|
18
|
-
{ 'default' => @version['version'] }
|
19
|
-
else
|
20
|
-
versions_without_suffix
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
private
|
25
|
-
|
26
|
-
def validate!
|
27
|
-
if @version.has_key?('version') &&
|
28
|
-
@version.keys.any? { |k| k.end_with?('-version') }
|
29
|
-
raise SyntaxError.new(
|
30
|
-
"Invalid config. `version` and `*-version` present in #{@version}."
|
31
|
-
)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def versions_without_suffix
|
36
|
-
@versions_without_suffix ||= @version.each_with_object({}) do |(k, v), h|
|
37
|
-
if k.end_with?('-version')
|
38
|
-
h[k.sub('-version', '')] = v
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|