bookshop-array-structures 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []