stylegen 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6880c6848932f2c2f954860a1885cfd20fda16e99f6ea01dd8c5fe5731658c45
4
- data.tar.gz: b7f49e94a5c19dbe464b3c246cf1834b7477b118c006aea1eed9ebd0c548acd6
3
+ metadata.gz: 1f3c7f3c64e0c2b99ca8ab6fa2f200f4a47af401b9e1c2547983eaed4f6a339e
4
+ data.tar.gz: 870d75d1e851c2cf8d1f8958f0eed6ceff39b2537d28f81e199a6cb8f683caee
5
5
  SHA512:
6
- metadata.gz: d16722e424e033cd0d29b73ffa65358de4bdc490a3bf44736202f403bba405b6d4cb64499646dead5cc6185c71e0708d0977ac9688c4fd3baffd88f69ec6e546
7
- data.tar.gz: 264639f5ff9bf1541f3670cf428c7390ec72d3746144501fa039eae7ce5a4b28f7bd3dfb72cc02ade6ce3ee9db6bdd844646ad1e11657dba9068afd9e70b0c5a
6
+ metadata.gz: 9e18ecf6503daef89a5cc9fdc9f4fda1a90a2872ff701f750d924a2e3d4f4efedc3ca74cd9a4803fd4b3ee2001defc877e07d40feada9cfa96c845fa3c0e79d2
7
+ data.tar.gz: 8365c8bad165c4f518502185e5f639c5e9beebe664c6018d2ea9ec1175bc6f720fa8dc6fc21b879fb76a9dea59e1e071222a360f0235519fcae5a72a087e5440
@@ -21,10 +21,7 @@ jobs:
21
21
  steps:
22
22
  - uses: actions/checkout@v2
23
23
  - name: Set up Ruby
24
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
25
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
26
- # uses: ruby/setup-ruby@v1
27
- uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
24
+ uses: ruby/setup-ruby@v1
28
25
  with:
29
26
  ruby-version: ${{ matrix.ruby-version }}
30
27
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ require:
3
3
  - rubocop-minitest
4
4
 
5
5
  AllCops:
6
- TargetRubyVersion: 2.4
6
+ TargetRubyVersion: 2.5
7
7
  NewCops: enable
8
8
 
9
9
  Style/StringLiterals:
data/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ ## v0.4.0
5
+ ### Added
6
+ - Added support for color descriptions.
7
+
8
+ ## v0.3.1
9
+ ### Changed
10
+ - Increased precision of HEX color conversion to avoid truncation.
11
+
12
+ ## v0.3.0
13
+ ### Added
14
+ - SwiftUI support.
15
+
16
+ ## v0.2.0
17
+ ### Added
18
+ - `stylegen init` command.
19
+
20
+ ## v0.1.0
21
+ - Initial release.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stylegen (0.2.0)
4
+ stylegen (0.4.0)
5
5
  dry-inflector (~> 0.2.0)
6
6
  gli (~> 2.1)
7
7
  json_schemer (~> 0.2.0)
@@ -9,38 +9,38 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- ast (2.4.1)
12
+ ast (2.4.2)
13
13
  dry-inflector (0.2.0)
14
14
  ecma-re-validator (0.3.0)
15
15
  regexp_parser (~> 2.0)
16
- gli (2.20.0)
16
+ gli (2.20.1)
17
17
  hana (1.3.7)
18
- json_schemer (0.2.17)
18
+ json_schemer (0.2.18)
19
19
  ecma-re-validator (~> 0.3)
20
20
  hana (~> 1.3)
21
21
  regexp_parser (~> 2.0)
22
22
  uri_template (~> 0.7)
23
- minitest (5.14.3)
23
+ minitest (5.14.4)
24
24
  parallel (1.20.1)
25
- parser (3.0.0.0)
25
+ parser (3.0.1.1)
26
26
  ast (~> 2.4.1)
27
27
  rainbow (3.0.0)
28
28
  rake (13.0.3)
29
- regexp_parser (2.0.3)
30
- rexml (3.2.4)
31
- rubocop (1.8.1)
29
+ regexp_parser (2.1.1)
30
+ rexml (3.2.5)
31
+ rubocop (1.14.0)
32
32
  parallel (~> 1.10)
33
33
  parser (>= 3.0.0.0)
34
34
  rainbow (>= 2.2.2, < 4.0)
35
35
  regexp_parser (>= 1.8, < 3.0)
36
36
  rexml
37
- rubocop-ast (>= 1.2.0, < 2.0)
37
+ rubocop-ast (>= 1.5.0, < 2.0)
38
38
  ruby-progressbar (~> 1.7)
39
39
  unicode-display_width (>= 1.4.0, < 3.0)
40
- rubocop-ast (1.4.0)
41
- parser (>= 2.7.1.5)
42
- rubocop-minitest (0.10.3)
43
- rubocop (>= 0.87, < 2.0)
40
+ rubocop-ast (1.5.0)
41
+ parser (>= 3.0.1.1)
42
+ rubocop-minitest (0.12.1)
43
+ rubocop (>= 0.90, < 2.0)
44
44
  rubocop-rake (0.5.1)
45
45
  rubocop
46
46
  ruby-progressbar (1.11.0)
data/README.md CHANGED
@@ -38,6 +38,9 @@ The generated YAML file will look similar to this:
38
38
  # Path of generated Swift file.
39
39
  output_path: "Colors.swift"
40
40
 
41
+ # Enables SwiftUI support
42
+ # swiftui: false
43
+
41
44
  # Key-value pairs of theme colors.
42
45
  colors:
43
46
 
@@ -65,6 +68,7 @@ colors:
65
68
  alpha: 0.6
66
69
 
67
70
  primary_background:
71
+ description: The color for the main background of your interface.
68
72
  light: "#FFFFFF"
69
73
  dark:
70
74
  # Value for base (non-elevated) level
@@ -101,5 +105,5 @@ colors. The name of the namespacing function gets inferred from the `system_name
101
105
 
102
106
  * ~~`$ stylegen init` command~~
103
107
  * Option to specify target frameworks: AppKit, UIKit, Core Graphics, and SwiftUI
104
- * SwiftUI support
108
+ * ~~SwiftUI support~~
105
109
  * AppKit support
@@ -7,6 +7,9 @@
7
7
  # Path of generated Swift file.
8
8
  output_path: "Colors.swift"
9
9
 
10
+ # Enables SwiftUI support
11
+ # swiftui: false
12
+
10
13
  # Key-value pairs of theme colors.
11
14
  colors:
12
15
 
@@ -34,6 +37,8 @@ colors:
34
37
  alpha: 0.6
35
38
 
36
39
  primary_background:
40
+ # Use `description` to document your colors (optional).
41
+ description: The color for the main background of your interface.
37
42
  light: "#FFFFFF"
38
43
  dark:
39
44
  # Value for base (non-elevated) level
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Stylegen
4
4
  class BaseElevatedColor
5
+ attr_reader :description
6
+
5
7
  def initialize(base, elevated)
6
8
  @base, @elevated = base, elevated
7
9
  end
@@ -21,20 +21,30 @@ module Stylegen
21
21
  raise ArgumentError, "Invalid color syntax: #{hex}"
22
22
  end
23
23
 
24
- max_digits = 2
24
+ max_precision = 16
25
25
 
26
- Color.new(r.round(max_digits), g.round(max_digits), b.round(max_digits), alpha || 1.0)
26
+ Color.new(r.round(max_precision), g.round(max_precision), b.round(max_precision), alpha || 1.0)
27
27
  end
28
28
 
29
29
  def grayscale?
30
30
  @red == @green && @green == @blue
31
31
  end
32
32
 
33
- def to_s(struct_name, _indent = 0)
33
+ def to_s(struct_name, indent = 0)
34
34
  if grayscale?
35
35
  "#{struct_name}(white: #{@red}, alpha: #{@alpha})"
36
36
  else
37
- "#{struct_name}(red: #{@red}, green: #{@green}, blue: #{@blue}, alpha: #{@alpha})"
37
+ indent_prefix = " " * indent
38
+
39
+ result = []
40
+ result << "#{struct_name}("
41
+ result << "#{indent_prefix} red: #{@red},"
42
+ result << "#{indent_prefix} green: #{@green},"
43
+ result << "#{indent_prefix} blue: #{@blue},"
44
+ result << "#{indent_prefix} alpha: #{@alpha}"
45
+ result << "#{indent_prefix})"
46
+
47
+ result.join("\n")
38
48
  end
39
49
  end
40
50
  end
data/lib/stylegen/data.rb CHANGED
@@ -30,6 +30,10 @@ module Stylegen
30
30
  @data["output_path"]
31
31
  end
32
32
 
33
+ def swiftui?
34
+ @data["swiftui"] || false
35
+ end
36
+
33
37
  def basename
34
38
  File.basename(@data["output_path"])
35
39
  end
@@ -42,9 +46,13 @@ module Stylegen
42
46
  "#{system_name}Color"
43
47
  end
44
48
 
45
- def colors
46
- @colors ||= @data["colors"].map do |key, value|
47
- [inflector.camelize_lower(key), generate_color(value)]
49
+ def color_entries
50
+ @color_entries ||= @data["colors"].map do |key, value|
51
+ {
52
+ property: inflector.camelize_lower(key),
53
+ description: value["description"],
54
+ color: generate_color(value)
55
+ }
48
56
  end
49
57
  end
50
58
 
@@ -1,126 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "stylegen/data"
4
+ require "stylegen/template"
4
5
 
5
6
  module Stylegen
6
7
  class Generator
7
8
  def initialize(data)
8
9
  @data = Data.new(data)
9
- @file = File.open(@data.output_path, "w")
10
- end
11
-
12
- def out(line)
13
- @file << line << "\n"
14
10
  end
15
11
 
16
12
  def generate
17
- generate_header
18
- generate_struct
19
- generate_colors
20
- generate_extensions
21
- end
22
-
23
- def stats
24
- @stats ||= { output_path: @data.output_path, color_count: @data.colors.count }
25
- end
13
+ template = Template.new(@data)
26
14
 
27
- private
28
-
29
- def generate_header
30
- out "//"
31
- out "// #{@data.basename}"
32
- out "//"
33
- out "// Autogenerated by stylegen (v#{@data.version})"
34
- out "// DO NOT EDIT"
35
- out "//"
36
- out ""
37
- out "import UIKit"
38
- out ""
15
+ file = File.open(@data.output_path, "w")
16
+ file << template.render
17
+ file.close
39
18
  end
40
19
 
41
- def generate_struct
42
- out "#{@data.access_level} struct #{@data.struct_name} {"
43
- out ""
44
- out " let uiColor: UIColor"
45
- out ""
46
- out " fileprivate init(white: CGFloat, alpha: CGFloat) {"
47
- out " self.uiColor = UIColor(white: white, alpha: alpha)"
48
- out " }"
49
- out ""
50
- out " fileprivate init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {"
51
- out " self.uiColor = UIColor(red: red, green: green, blue: blue, alpha: alpha)"
52
- out " }"
53
- out ""
54
- out " fileprivate init(_ color: UIColor) {"
55
- out " self.uiColor = color"
56
- out " }"
57
- out ""
58
- out " fileprivate init(light: #{@data.struct_name}, dark: #{@data.struct_name}) {"
59
- out " if #available(iOS 13.0, *) {"
60
- out " self.uiColor = UIColor(dynamicProvider: { (traits: UITraitCollection) -> UIColor in"
61
- out " switch traits.userInterfaceStyle {"
62
- out " case .dark:"
63
- out " return dark.uiColor"
64
- out " default:"
65
- out " return light.uiColor"
66
- out " }"
67
- out " })"
68
- out " } else {"
69
- out " self.uiColor = light.uiColor"
70
- out " }"
71
- out " }"
72
- out ""
73
- out " fileprivate init(base: #{@data.struct_name}, elevated: #{@data.struct_name}) {"
74
- out " if #available(iOS 13.0, *) {"
75
- out " self.uiColor = UIColor(dynamicProvider: { (traits: UITraitCollection) -> UIColor in"
76
- out " switch traits.userInterfaceLevel {"
77
- out " case .elevated:"
78
- out " return elevated.uiColor"
79
- out " default:"
80
- out " return base.uiColor"
81
- out " }"
82
- out " })"
83
- out " } else {"
84
- out " self.uiColor = base.uiColor"
85
- out " }"
86
- out " }"
87
- out ""
88
- out "}"
89
- out ""
90
- end
91
-
92
- def generate_colors
93
- out "#{@data.access_level} extension #{@data.struct_name} {"
94
- out ""
95
-
96
- @data.colors.each do |member, color|
97
- out " static let #{member} = #{color.to_s(@data.struct_name, 4)}"
98
- out ""
99
- end
100
-
101
- out "}"
102
- out ""
103
- end
104
-
105
- def generate_extensions
106
- out "#{@data.access_level} extension UIColor {"
107
- out ""
108
- out " @inline(__always)"
109
- out " static func #{@data.util_method_name}(_ color: #{@data.struct_name}) -> UIColor {"
110
- out " return color.uiColor"
111
- out " }"
112
- out ""
113
- out "}"
114
- out ""
115
-
116
- out "#{@data.access_level} extension CGColor {"
117
- out ""
118
- out " @inline(__always)"
119
- out " static func #{@data.util_method_name}(_ color: #{@data.struct_name}) -> CGColor {"
120
- out " return color.uiColor.cgColor"
121
- out " }"
122
- out ""
123
- out "}"
20
+ def stats
21
+ @stats ||= { output_path: @data.output_path, color_count: @data.color_entries.count }
124
22
  end
125
23
  end
126
24
  end
@@ -26,6 +26,9 @@
26
26
  "Color": {
27
27
  "type": "object",
28
28
  "properties": {
29
+ "description": {
30
+ "type": "string"
31
+ },
29
32
  "color": {
30
33
  "$ref": "#/definitions/HexColor"
31
34
  },
@@ -41,6 +44,9 @@
41
44
  "BaseElevatedColor": {
42
45
  "type": "object",
43
46
  "properties": {
47
+ "description": {
48
+ "type": "string"
49
+ },
44
50
  "base": {
45
51
  "$ref": "#/definitions/AbstractColor"
46
52
  },
@@ -54,6 +60,9 @@
54
60
  "LightDarkColor": {
55
61
  "type": "object",
56
62
  "properties": {
63
+ "description": {
64
+ "type": "string"
65
+ },
57
66
  "light": {
58
67
  "$ref": "#/definitions/AbstractColor"
59
68
  },
@@ -83,6 +92,11 @@
83
92
  "minLength": 1,
84
93
  "description": "Path of generated Swift file."
85
94
  },
95
+ "swiftui": {
96
+ "type": "boolean",
97
+ "default": false,
98
+ "description": "Enables SwiftUI support."
99
+ },
86
100
  "colors": {
87
101
  "type": "object",
88
102
  "description": "Key-value pairs of colors.",
@@ -102,4 +116,4 @@
102
116
  "output_path",
103
117
  "colors"
104
118
  ]
105
- }
119
+ }
@@ -0,0 +1,157 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stylegen
4
+ class Template
5
+ attr_reader :data
6
+
7
+ def initialize(data)
8
+ @data = data
9
+ end
10
+
11
+ def render
12
+ result = []
13
+ result << render_header
14
+ result << render_imports
15
+ result << render_struct
16
+ result << render_colors
17
+ result << render_utils
18
+ result.join("\n")
19
+ end
20
+
21
+ private
22
+
23
+ def render_header
24
+ <<~HEREDOC
25
+ //
26
+ // #{data.basename}
27
+ //
28
+ // Autogenerated by stylegen (#{data.version})
29
+ // DO NOT EDIT
30
+ //
31
+ HEREDOC
32
+ end
33
+
34
+ def render_imports
35
+ result = []
36
+ result << "import UIKit"
37
+ result << "import SwiftUI" if data.swiftui?
38
+ result << ""
39
+ result.join("\n")
40
+ end
41
+
42
+ def render_struct
43
+ <<~HEREDOC
44
+ #{data.access_level} struct #{data.struct_name} {
45
+
46
+ let uiColor: UIColor
47
+
48
+ fileprivate init(white: CGFloat, alpha: CGFloat) {
49
+ self.uiColor = UIColor(white: white, alpha: alpha)
50
+ }
51
+
52
+ fileprivate init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
53
+ self.uiColor = UIColor(red: red, green: green, blue: blue, alpha: alpha)
54
+ }
55
+
56
+ fileprivate init(_ color: UIColor) {
57
+ self.uiColor = color
58
+ }
59
+
60
+ fileprivate init(light: #{data.struct_name}, dark: #{data.struct_name}) {
61
+ if #available(iOS 13.0, *) {
62
+ self.uiColor = UIColor(dynamicProvider: { (traits: UITraitCollection) -> UIColor in
63
+ switch traits.userInterfaceStyle {
64
+ case .dark:
65
+ return dark.uiColor
66
+ default:
67
+ return light.uiColor
68
+ }
69
+ })
70
+ } else {
71
+ self.uiColor = light.uiColor
72
+ }
73
+ }
74
+
75
+ fileprivate init(base: #{data.struct_name}, elevated: #{data.struct_name}) {
76
+ if #available(iOS 13.0, *) {
77
+ self.uiColor = UIColor(dynamicProvider: { (traits: UITraitCollection) -> UIColor in
78
+ switch traits.userInterfaceLevel {
79
+ case .elevated:
80
+ return elevated.uiColor
81
+ default:
82
+ return base.uiColor
83
+ }
84
+ })
85
+ } else {
86
+ self.uiColor = base.uiColor
87
+ }
88
+ }
89
+
90
+ }
91
+ HEREDOC
92
+ end
93
+
94
+ def render_colors
95
+ result = []
96
+ result << "// MARK: Colors"
97
+ result << ""
98
+ result << "#{data.access_level} extension #{data.struct_name} {"
99
+ result << ""
100
+
101
+ data.color_entries.each do |entry|
102
+ unless entry[:description].nil?
103
+ entry[:description].strip.lines.each do |line|
104
+ result << " /// #{line.strip}"
105
+ end
106
+ end
107
+
108
+ result << " static let #{entry[:property]} = #{entry[:color].to_s(data.struct_name, 4)}\n"
109
+ end
110
+
111
+ result << "}"
112
+ result << ""
113
+ result.join("\n")
114
+ end
115
+
116
+ def render_utils
117
+ result = []
118
+ result << "// MARK: Utils"
119
+ result << ""
120
+
121
+ if data.swiftui?
122
+ result << <<~HEREDOC
123
+ #{data.access_level} extension Color {
124
+
125
+ @inline(__always)
126
+ static func #{data.util_method_name}(_ color: #{data.struct_name}) -> Color {
127
+ return Color(color.uiColor)
128
+ }
129
+
130
+ }
131
+ HEREDOC
132
+ end
133
+
134
+ result << <<~HEREDOC
135
+ #{data.access_level} extension UIColor {
136
+
137
+ @inline(__always)
138
+ static func #{data.util_method_name}(_ color: #{data.struct_name}) -> UIColor {
139
+ return color.uiColor
140
+ }
141
+
142
+ }
143
+
144
+ #{data.access_level} extension CGColor {
145
+
146
+ @inline(__always)
147
+ static func #{data.util_method_name}(_ color: #{data.struct_name}) -> CGColor {
148
+ return color.uiColor.cgColor
149
+ }
150
+
151
+ }
152
+ HEREDOC
153
+
154
+ result.join("\n")
155
+ end
156
+ end
157
+ end
@@ -21,7 +21,7 @@ module Stylegen
21
21
  private
22
22
 
23
23
  def schema
24
- @schema ||= JSONSchemer.schema(File.read(File.join(__dir__, "schema.json")))
24
+ @schema ||= JSONSchemer.schema(File.read(File.join(__dir__, "resources/schema.json")))
25
25
  end
26
26
  end
27
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stylegen
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/stylegen.gemspec CHANGED
@@ -27,5 +27,5 @@ Gem::Specification.new do |s|
27
27
  s.add_development_dependency "rubocop-minitest"
28
28
  s.add_development_dependency "rubocop-rake"
29
29
 
30
- s.required_ruby_version = ">= 2.4.0"
30
+ s.required_ruby_version = ">= 2.5.0"
31
31
  end
data/test/test_color.rb CHANGED
@@ -6,14 +6,14 @@ class TestColor < MiniTest::Test
6
6
  def test_parsing
7
7
  color = Stylegen::Color.from_hex("#FF8000")
8
8
  assert_equal 1.0, color.red
9
- assert_equal 0.5, color.green
9
+ assert_equal 0.5019607843137255, color.green
10
10
  assert_equal 0.0, color.blue
11
11
  assert_equal 1.0, color.alpha
12
12
 
13
13
  # Optional pound sign
14
14
  color = Stylegen::Color.from_hex("FF8000")
15
15
  assert_equal 1.0, color.red
16
- assert_equal 0.5, color.green
16
+ assert_equal 0.5019607843137255, color.green
17
17
  assert_equal 0.0, color.blue
18
18
  assert_equal 1.0, color.alpha
19
19
 
@@ -25,14 +25,14 @@ class TestColor < MiniTest::Test
25
25
  def test_parsing_shorthand_syntax
26
26
  color = Stylegen::Color.from_hex("#FC0")
27
27
  assert_equal 1.0, color.red
28
- assert_equal 0.8, color.green
28
+ assert_equal 0.8000000000000002, color.green
29
29
  assert_equal 0.0, color.blue
30
30
  assert_equal 1.0, color.alpha
31
31
 
32
32
  # Optional pound sign
33
33
  color = Stylegen::Color.from_hex("FC0")
34
34
  assert_equal 1.0, color.red
35
- assert_equal 0.8, color.green
35
+ assert_equal 0.8000000000000002, color.green
36
36
  assert_equal 0.0, color.blue
37
37
  assert_equal 1.0, color.alpha
38
38
  end
@@ -47,7 +47,16 @@ class TestColor < MiniTest::Test
47
47
 
48
48
  def test_to_string
49
49
  color = Stylegen::Color.from_hex("#00FF00")
50
- expected = "ThemeColor(red: 0.0, green: 1.0, blue: 0.0, alpha: 1.0)"
50
+
51
+ expected = <<~CODE.strip
52
+ ThemeColor(
53
+ red: 0.0,
54
+ green: 1.0,
55
+ blue: 0.0,
56
+ alpha: 1.0
57
+ )
58
+ CODE
59
+
51
60
  assert_equal expected, color.to_s("ThemeColor")
52
61
 
53
62
  # Grayscale
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stylegen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ramon Torres
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-19 00:00:00.000000000 Z
11
+ date: 2022-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-inflector
@@ -147,6 +147,7 @@ files:
147
147
  - ".github/workflows/ci.yml"
148
148
  - ".gitignore"
149
149
  - ".rubocop.yml"
150
+ - CHANGELOG.md
150
151
  - Gemfile
151
152
  - Gemfile.lock
152
153
  - LICENSE
@@ -163,7 +164,8 @@ files:
163
164
  - lib/stylegen/colors/light_dark_color.rb
164
165
  - lib/stylegen/data.rb
165
166
  - lib/stylegen/generator.rb
166
- - lib/stylegen/schema.json
167
+ - lib/stylegen/resources/schema.json
168
+ - lib/stylegen/template.rb
167
169
  - lib/stylegen/validator.rb
168
170
  - lib/stylegen/version.rb
169
171
  - stylegen.gemspec
@@ -183,14 +185,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
183
185
  requirements:
184
186
  - - ">="
185
187
  - !ruby/object:Gem::Version
186
- version: 2.4.0
188
+ version: 2.5.0
187
189
  required_rubygems_version: !ruby/object:Gem::Requirement
188
190
  requirements:
189
191
  - - ">="
190
192
  - !ruby/object:Gem::Version
191
193
  version: '0'
192
194
  requirements: []
193
- rubygems_version: 3.0.3
195
+ rubyforge_project:
196
+ rubygems_version: 2.7.6
194
197
  signing_key:
195
198
  specification_version: 4
196
199
  summary: Tool for generating styling code for iOS apps