bookshop-array-structures 1.4.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,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cae28d99204e71be4b50c3914d3611b3f83c0c34a0c9096a351b1742531772cf
4
+ data.tar.gz: 1992b1c1c7c7fb997a678d2ec2a51294c47f4d47de029f301bc8848eb488a068
5
+ SHA512:
6
+ metadata.gz: e3a8af2c91fff8e31022ed10e8a979f80f70f04e462edab487bbfe3e2c1e33c39dc48f6a465885d6f263977c2c2f56f2e56d614964f3af7a8cc1c33823422804
7
+ data.tar.gz: b5cafb5ecaef22aa99a319829627c5d80baf061185f1d71d2c1c1ba90b57f12c071883d2680c899fb5bc19afe11f682d92671402bb68ab7c795d3fcdb02794ed
@@ -0,0 +1,25 @@
1
+ require_relative 'lib/bookshop-array-structures/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "bookshop-array-structures"
5
+ spec.version = Bookshop::Arraystructures::VERSION
6
+ spec.authors = ["Tate"]
7
+ spec.email = ["tate@cloudcannon.com"]
8
+ spec.homepage = "https://github.com/cloudcannon/bookshop"
9
+ spec.summary = "A Jekyll plugin to generate array structures from bookshop"
10
+
11
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
12
+
13
+ # Specify which files should be added to the gem when it is released.
14
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
15
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
16
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ end
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+ spec.license = "MIT"
22
+
23
+ spec.add_dependency "jekyll", ">= 3.7", "< 5.0"
24
+ spec.add_dependency "toml-rb", ">= 2.0", "< 3.0"
25
+ end
@@ -0,0 +1,85 @@
1
+ require "jekyll"
2
+ require "toml-rb"
3
+
4
+ module Bookshop
5
+ class ArrayStructures
6
+ def self.get_story_name(path)
7
+ basename = path.split("/").last.split(".").first
8
+ return basename.split("-").map(&:capitalize).join(" ")
9
+ end
10
+
11
+ def self.transform_component(component, site)
12
+ result = {}
13
+ component.each_pair { |storyname, story|
14
+ story.each_pair {|key, value|
15
+ if result.has_key?(key) && storyname != "defaults"
16
+ next
17
+ end
18
+
19
+ if key.include? "--repeat"
20
+ new_key = key.split("--").first
21
+ result[new_key] = []
22
+ site.config["_array_structures"][new_key] ||= {
23
+ "values" => []
24
+ }
25
+
26
+ label = new_key.split("_").map(&:capitalize).join(" ")
27
+ if site.config["_array_structures"][new_key]["values"].select{|value| value.label == label}.length > 0
28
+ next
29
+ end
30
+ site.config["_array_structures"][new_key]["values"].push({
31
+ "label" => label,
32
+ "value" => value
33
+ })
34
+ elsif key.include? "--select" or key.include? "--radio" or key.include? "--inline-radio"
35
+ new_key = key.split("--").first
36
+ result[new_key] = nil
37
+ site.config["_select_data"][new_key+"s"] = []
38
+ value.each_value{|option|
39
+ if site.config["_select_data"][new_key+"s"].select{|value| value == option}.length > 0
40
+ next
41
+ end
42
+ site.config["_select_data"][new_key+"s"].push(option)
43
+ }
44
+ elsif key.include? "--multi-select" or key.include? "--check" or key.include? "--inline-check"
45
+ new_key = key.split("--").first
46
+ result[new_key] = []
47
+ site.config["_select_data"][new_key] = []
48
+ value.each_value{|option|
49
+ if site.config["_select_data"][new_key].select{|value| value == option}.length > 0
50
+ next
51
+ end
52
+ site.config["_select_data"][new_key].push(option)
53
+ }
54
+ else
55
+ result[key] = value
56
+ end
57
+ }
58
+ }
59
+ return result
60
+ end
61
+
62
+ def self.build_array_structures(site)
63
+ base_path = ""
64
+ if !site.theme.nil?
65
+ base_path = site.theme.root + "/_bookshop/components/"
66
+ end
67
+ site.config["_select_data"] ||= {}
68
+ site.config["_array_structures"] ||= {}
69
+ site.config["_array_structures"]["components"] ||= {
70
+ "values" => []
71
+ }
72
+ Dir.glob("**/*.stories.{toml,tml,tom,tm}", base: base_path).each do |f|
73
+ component = TomlRB.load_file(base_path + f)
74
+ site.config["_array_structures"]["components"]["values"].push({
75
+ "label" => get_story_name(f),
76
+ "value" => transform_component(component, site)
77
+ })
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ Jekyll::Hooks.register :site, :after_init do |site|
84
+ Bookshop::ArrayStructures.build_array_structures(site)
85
+ end
@@ -0,0 +1,5 @@
1
+ module Bookshop
2
+ module Arraystructures
3
+ VERSION = "1.4.4"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bookshop-array-structures
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.4.4
5
+ platform: ruby
6
+ authors:
7
+ - Tate
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-10-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.7'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.7'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: toml-rb
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.0'
53
+ description:
54
+ email:
55
+ - tate@cloudcannon.com
56
+ executables: []
57
+ extensions: []
58
+ extra_rdoc_files: []
59
+ files:
60
+ - bookshop-array-structures.gemspec
61
+ - lib/bookshop-array-structures.rb
62
+ - lib/bookshop-array-structures/version.rb
63
+ homepage: https://github.com/cloudcannon/bookshop
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 2.3.0
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubygems_version: 3.0.3
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: A Jekyll plugin to generate array structures from bookshop
86
+ test_files: []