procreate-swatches 0.1.0
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 +7 -0
- data/.codeclimate.yml +7 -0
- data/.gitignore +16 -0
- data/.rspec +2 -0
- data/.rubocop.yml +8 -0
- data/.ruby-version +1 -0
- data/.travis.yml +19 -0
- data/.yardopts +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +102 -0
- data/LICENSE.txt +21 -0
- data/README.md +230 -0
- data/Rakefile +8 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/doc/Procreate/Swatches/ColorsHelper.html +693 -0
- data/doc/Procreate/Swatches/Errors/InvalidFormat.html +220 -0
- data/doc/Procreate/Swatches/Errors/InvalidPath.html +220 -0
- data/doc/Procreate/Swatches/Errors.html +128 -0
- data/doc/Procreate/Swatches/Exporter.html +754 -0
- data/doc/Procreate/Swatches/Parser.html +622 -0
- data/doc/Procreate/Swatches/Wrapper.html +1168 -0
- data/doc/Procreate/Swatches.html +497 -0
- data/doc/Procreate.html +128 -0
- data/doc/_index.html +209 -0
- data/doc/class_list.html +51 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +58 -0
- data/doc/css/style.css +496 -0
- data/doc/file.CODE_OF_CONDUCT.html +146 -0
- data/doc/file.LICENSE.html +70 -0
- data/doc/file.README.html +296 -0
- data/doc/file_list.html +66 -0
- data/doc/frames.html +17 -0
- data/doc/index.html +296 -0
- data/doc/js/app.js +292 -0
- data/doc/js/full_list.js +216 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +275 -0
- data/doc/top-level-namespace.html +110 -0
- data/lib/procreate/swatches/colors_helper.rb +83 -0
- data/lib/procreate/swatches/errors/invalid_format.rb +19 -0
- data/lib/procreate/swatches/errors/invalid_path.rb +16 -0
- data/lib/procreate/swatches/exporter.rb +131 -0
- data/lib/procreate/swatches/parser.rb +82 -0
- data/lib/procreate/swatches/version.rb +8 -0
- data/lib/procreate/swatches/wrapper.rb +155 -0
- data/lib/procreate/swatches.rb +60 -0
- data/procreate-swatches.gemspec +41 -0
- metadata +275 -0
@@ -0,0 +1,82 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'zip'
|
4
|
+
|
5
|
+
module Procreate
|
6
|
+
module Swatches
|
7
|
+
#
|
8
|
+
# The class that handles the parsing of a +.swatches+ file to
|
9
|
+
# an instance of {Procreate::Swatches::Wrapper}.
|
10
|
+
#
|
11
|
+
class Parser
|
12
|
+
include CallableClass
|
13
|
+
include ColorsHelper
|
14
|
+
|
15
|
+
# @!method self.call
|
16
|
+
# Creates a new instance of {Procreate::Swatches::Parser} and calls {#call}
|
17
|
+
# Dynamically included by using {https://github.com/laurentzziu/callable_class CallableClass} gem.
|
18
|
+
|
19
|
+
# @!attribute [r] wrapper
|
20
|
+
# @return [Procreate::Swatches::Wrapper]
|
21
|
+
attr_reader :wrapper
|
22
|
+
|
23
|
+
# @!attribute [r] file_path
|
24
|
+
# @return [String] The path of the +.swatches+ file
|
25
|
+
attr_reader :file_path
|
26
|
+
|
27
|
+
#
|
28
|
+
# Initialize a new instance of {Procreate::Swatches::Parser}
|
29
|
+
#
|
30
|
+
# @param [String] file_path The path of the +.swatches+ file
|
31
|
+
#
|
32
|
+
# @raise [Procreate::Swatches::Errors::InvalidPath] Error raised when the provided path is invalid
|
33
|
+
# @raise [Procreate::Swatches::Errors::InvalidFormat] Error raised when the provided path contains a file with an invalid format (accepted format: +.swatches+)
|
34
|
+
#
|
35
|
+
def initialize(file_path)
|
36
|
+
@file_path = file_path
|
37
|
+
|
38
|
+
validate!
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Process the provided +.swatches+ file and wrap the content in
|
43
|
+
# a {Procreate::Swatches::Wrapper}
|
44
|
+
#
|
45
|
+
# @return [Procreate::Swatches::Wrapper] A wrapper instance for the +.swatches+ file
|
46
|
+
#
|
47
|
+
def call
|
48
|
+
unzip
|
49
|
+
wrap_colors
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def unzip
|
55
|
+
zip_file = Zip::File.open(@file_path)
|
56
|
+
entry = zip_file.glob(SWATCHES_FILE_NAME).first
|
57
|
+
raw_content = entry.get_input_stream.read
|
58
|
+
@content = JSON.parse(raw_content).first
|
59
|
+
end
|
60
|
+
|
61
|
+
def wrap_colors
|
62
|
+
name = @content['name']
|
63
|
+
colors = @content['swatches']
|
64
|
+
|
65
|
+
colors = colors.compact.map do |color|
|
66
|
+
string = to_chroma_hsv(color)
|
67
|
+
Chroma::Color.new(string)
|
68
|
+
end
|
69
|
+
|
70
|
+
@wrapper = Wrapper.new(name, colors)
|
71
|
+
end
|
72
|
+
|
73
|
+
SWATCHES_FILE_REGEXP = /\.swatches\z/.freeze
|
74
|
+
|
75
|
+
def validate!
|
76
|
+
raise(Errors::InvalidPath) unless file_path.present? && File.exist?(file_path) && File.file?(file_path)
|
77
|
+
|
78
|
+
raise(Errors::InvalidFormat) unless file_path.match(SWATCHES_FILE_REGEXP).present?
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Procreate
|
4
|
+
module Swatches
|
5
|
+
#
|
6
|
+
# Wrapper class for the name and colors of a +.swatches+ file.
|
7
|
+
#
|
8
|
+
class Wrapper
|
9
|
+
include ColorsHelper
|
10
|
+
|
11
|
+
# @!attribute name
|
12
|
+
# @return [String] Name of the swatches palette
|
13
|
+
attr_accessor :name
|
14
|
+
# @!attribute [w] colors
|
15
|
+
# @return [Array<Chroma::Color, String>] Colors array
|
16
|
+
attr_writer :colors
|
17
|
+
|
18
|
+
# The default name, used in case a custom name is not provided
|
19
|
+
DEFAULT_SWATCHES_NAME = 'My beautiful palette'
|
20
|
+
|
21
|
+
#
|
22
|
+
# Initialize a new instance of {Procreate::Swatches::Wrapper}
|
23
|
+
#
|
24
|
+
# @param [String] name Name of the swatches palette
|
25
|
+
# @param [Array<Chroma::Color, String>] colors Colors array. Each color will be converted to a {https://github.com/jfairbank/chroma Chroma::Color} instance.
|
26
|
+
#
|
27
|
+
def initialize(name, colors)
|
28
|
+
@name = name.present? ? name : DEFAULT_SWATCHES_NAME
|
29
|
+
|
30
|
+
@colors ||= []
|
31
|
+
Array(colors).each { |color| add_color(color) }
|
32
|
+
end
|
33
|
+
|
34
|
+
#
|
35
|
+
# Add a new color to the colors array.
|
36
|
+
# It will be converted to a {https://github.com/jfairbank/chroma Chroma::Color} instance.
|
37
|
+
#
|
38
|
+
# @param [Chroma::Color, String] color Color in a supported format.
|
39
|
+
#
|
40
|
+
# @return [Array<Chroma::Color>] The current colors available in the wrapper.
|
41
|
+
#
|
42
|
+
def <<(color)
|
43
|
+
add_color(color)
|
44
|
+
end
|
45
|
+
|
46
|
+
alias push <<
|
47
|
+
|
48
|
+
#
|
49
|
+
# Remove the last color from the colors array.
|
50
|
+
#
|
51
|
+
# @return [Array<Chroma::Color>] The current colors available in the wrapper.
|
52
|
+
#
|
53
|
+
def pop
|
54
|
+
@colors.pop
|
55
|
+
end
|
56
|
+
|
57
|
+
# Available formats to return the colors as. These types are supported by {https://github.com/jfairbank/chroma Chroma::Color}
|
58
|
+
AVAILABLE_COLOR_FORMATS = %i[hsv hsl hex hex8 rgb name].freeze
|
59
|
+
|
60
|
+
#
|
61
|
+
# Returns the list of available color formats a color
|
62
|
+
# can be retrieved into.
|
63
|
+
#
|
64
|
+
# @return [Array<Symbol>] The list of available formats a color can be retrived into.
|
65
|
+
#
|
66
|
+
def available_color_formats
|
67
|
+
AVAILABLE_COLOR_FORMATS
|
68
|
+
end
|
69
|
+
|
70
|
+
#
|
71
|
+
# Attribute reader for colors.
|
72
|
+
# It supports returning the colors in different formats.
|
73
|
+
# If not format is provided, an array of {https://github.com/jfairbank/chroma Chroma::Color}s is returned.
|
74
|
+
# If an invalid format is provided, it will fallback to the default format.
|
75
|
+
#
|
76
|
+
# @param [String, Symbol] format Format to return the colors array in.
|
77
|
+
#
|
78
|
+
# @return [Array<Chroma::Color>] Return an array of {https://github.com/jfairbank/chroma Chroma::Color} when no format is provided. This is the default option.
|
79
|
+
# @return [Array<String>] Return an array of +Strings+, in the specified format.
|
80
|
+
#
|
81
|
+
def colors(format: nil)
|
82
|
+
format = format.to_sym unless format.nil?
|
83
|
+
format = nil unless format.in?(AVAILABLE_COLOR_FORMATS)
|
84
|
+
|
85
|
+
return @colors if format.nil?
|
86
|
+
|
87
|
+
@colors.map do |color|
|
88
|
+
color.send("to_#{format}")
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
# Convert the wrapper to the JSON format needed to create a
|
94
|
+
# +.swatches+ file.
|
95
|
+
# A maximum of 30 ({Procreate::Swatches::ColorsHelper::SWATCHES_MAX_SIZE}) colors is returned.
|
96
|
+
# This is a limitation of Procreate.
|
97
|
+
#
|
98
|
+
# @return [String] Wrapper content, in JSON format.
|
99
|
+
#
|
100
|
+
def to_json(*_args)
|
101
|
+
[
|
102
|
+
{
|
103
|
+
name: @name,
|
104
|
+
swatches: colors_to_json
|
105
|
+
}
|
106
|
+
].to_json
|
107
|
+
end
|
108
|
+
|
109
|
+
alias to_swatches to_json
|
110
|
+
alias to_procreate to_json
|
111
|
+
|
112
|
+
#
|
113
|
+
# Export the wrapper to a +.swatches+ file
|
114
|
+
#
|
115
|
+
# @param [<Type>] options All options suported by {Procreate::Swatches::Exporter#initialize}
|
116
|
+
#
|
117
|
+
# @return [String] swatches_path Path of the exported +.swatches+ file
|
118
|
+
#
|
119
|
+
def to_file(options = {})
|
120
|
+
Exporter.call(self, options)
|
121
|
+
end
|
122
|
+
|
123
|
+
alias export to_file
|
124
|
+
|
125
|
+
# @todo Check if the colors array is the same (regardless of order)
|
126
|
+
#
|
127
|
+
# Wrapper file comparison.
|
128
|
+
# It check for the same class, name and colors array
|
129
|
+
#
|
130
|
+
# @param [Procreate::Swatches::Wrapper] other Another wrapper instance
|
131
|
+
#
|
132
|
+
# @return [Boolean] The wrappers are equal
|
133
|
+
#
|
134
|
+
def ==(other)
|
135
|
+
other.is_a?(self.class) && name == other.name && colors == other.colors
|
136
|
+
end
|
137
|
+
|
138
|
+
private
|
139
|
+
|
140
|
+
def add_color(color)
|
141
|
+
color = prepare_color_for_push(color)
|
142
|
+
|
143
|
+
@colors << color unless color.nil?
|
144
|
+
|
145
|
+
@colors
|
146
|
+
end
|
147
|
+
|
148
|
+
def colors_to_json
|
149
|
+
@colors.first(SWATCHES_MAX_SIZE).map do |color|
|
150
|
+
to_swatches_json(color)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'chroma'
|
4
|
+
require 'callable_class'
|
5
|
+
require 'json'
|
6
|
+
require 'active_support/all'
|
7
|
+
|
8
|
+
require 'procreate/swatches/version'
|
9
|
+
|
10
|
+
require 'procreate/swatches/errors/invalid_format'
|
11
|
+
require 'procreate/swatches/errors/invalid_path'
|
12
|
+
|
13
|
+
require 'procreate/swatches/colors_helper'
|
14
|
+
require 'procreate/swatches/wrapper'
|
15
|
+
require 'procreate/swatches/parser'
|
16
|
+
require 'procreate/swatches/exporter'
|
17
|
+
|
18
|
+
# All things {https://procreate.art Procreate} tools.
|
19
|
+
module Procreate
|
20
|
+
#
|
21
|
+
# Interact with +.swatches+ files ({https://procreate.art Procreate}) and manipulate them.
|
22
|
+
#
|
23
|
+
module Swatches
|
24
|
+
# Internal name of the +.swatches+ file.
|
25
|
+
# Used for both parsing and exporting +.swatches+ files.
|
26
|
+
SWATCHES_FILE_NAME = 'Swatches.json'
|
27
|
+
class << self
|
28
|
+
#
|
29
|
+
# Parse a +.swatches+ file from the provided file path
|
30
|
+
#
|
31
|
+
# @param [String] file_path A file path to the +.swatches+ file
|
32
|
+
#
|
33
|
+
# @return [Procreate::Swatches::Wrapper] wrapper A wrapper instance to be further manipulated
|
34
|
+
#
|
35
|
+
def parse(file_path)
|
36
|
+
Parser.call(file_path)
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
# Export an array of colors to a +.swatches+ file, with the possibility to provide a custom palette name.
|
41
|
+
#
|
42
|
+
# @param [String] name Preferred name for the exported +.swatches+ file palette. Visible instance the Procreate app.
|
43
|
+
# @param [Array<String, Chroma::Color>] colors An array of valid color strings or {https://github.com/jfairbank/chroma Chroma::Color} instances
|
44
|
+
# @param [Hash] options Options for exporting the wrapper
|
45
|
+
# @option options [String] :export_directory ('Dir.pwd') The export directory for the +.swatches+ file
|
46
|
+
# @option options [String] :file_name ('Wrapper#name') Custom file name for the exported +.swatches+ file. If none is provided, the +name+ of the +wrapper+ instance is used
|
47
|
+
#
|
48
|
+
# @return [String] swatches_path Path of the exported +.swatches+ file
|
49
|
+
#
|
50
|
+
def export(name, colors, options = {})
|
51
|
+
wrapper = Wrapper.new(name, colors)
|
52
|
+
|
53
|
+
Exporter.call(wrapper, options)
|
54
|
+
end
|
55
|
+
|
56
|
+
alias from_file parse
|
57
|
+
alias to_file export
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'procreate/swatches/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'procreate-swatches'
|
9
|
+
spec.version = Procreate::Swatches::VERSION
|
10
|
+
spec.authors = ['Florinel Gorgan']
|
11
|
+
spec.email = ['florin@floringorgan.com']
|
12
|
+
|
13
|
+
spec.summary = 'A gem to interact with Procreate .swatches files.'
|
14
|
+
spec.description = 'A gem to interact with Procreate .swatches files.'
|
15
|
+
spec.homepage = 'https://github.com/laurentzziu/procreate-swatches'
|
16
|
+
spec.license = 'MIT'
|
17
|
+
|
18
|
+
# Specify which files should be added to the gem when it is released.
|
19
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
20
|
+
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
21
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
|
+
end
|
23
|
+
spec.bindir = 'exe'
|
24
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
25
|
+
spec.require_paths = ['lib']
|
26
|
+
|
27
|
+
spec.add_dependency 'callable_class', '~> 0.1.1'
|
28
|
+
spec.add_dependency 'chroma'
|
29
|
+
spec.add_dependency 'rubyzip', '>= 1.0.0'
|
30
|
+
|
31
|
+
spec.add_development_dependency 'activesupport'
|
32
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
33
|
+
spec.add_development_dependency 'pry'
|
34
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
|
+
spec.add_development_dependency 'rubocop'
|
37
|
+
spec.add_development_dependency 'rubocop-performance'
|
38
|
+
spec.add_development_dependency 'rubocop-rspec'
|
39
|
+
spec.add_development_dependency 'simplecov'
|
40
|
+
spec.add_development_dependency 'simplecov-console'
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,275 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: procreate-swatches
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Florinel Gorgan
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-04-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: callable_class
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: chroma
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubyzip
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '10.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '10.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rubocop-performance
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop-rspec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: simplecov
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: simplecov-console
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
description: A gem to interact with Procreate .swatches files.
|
196
|
+
email:
|
197
|
+
- florin@floringorgan.com
|
198
|
+
executables: []
|
199
|
+
extensions: []
|
200
|
+
extra_rdoc_files: []
|
201
|
+
files:
|
202
|
+
- ".codeclimate.yml"
|
203
|
+
- ".gitignore"
|
204
|
+
- ".rspec"
|
205
|
+
- ".rubocop.yml"
|
206
|
+
- ".ruby-version"
|
207
|
+
- ".travis.yml"
|
208
|
+
- ".yardopts"
|
209
|
+
- CODE_OF_CONDUCT.md
|
210
|
+
- Gemfile
|
211
|
+
- Gemfile.lock
|
212
|
+
- LICENSE.txt
|
213
|
+
- README.md
|
214
|
+
- Rakefile
|
215
|
+
- bin/console
|
216
|
+
- bin/setup
|
217
|
+
- doc/Procreate.html
|
218
|
+
- doc/Procreate/Swatches.html
|
219
|
+
- doc/Procreate/Swatches/ColorsHelper.html
|
220
|
+
- doc/Procreate/Swatches/Errors.html
|
221
|
+
- doc/Procreate/Swatches/Errors/InvalidFormat.html
|
222
|
+
- doc/Procreate/Swatches/Errors/InvalidPath.html
|
223
|
+
- doc/Procreate/Swatches/Exporter.html
|
224
|
+
- doc/Procreate/Swatches/Parser.html
|
225
|
+
- doc/Procreate/Swatches/Wrapper.html
|
226
|
+
- doc/_index.html
|
227
|
+
- doc/class_list.html
|
228
|
+
- doc/css/common.css
|
229
|
+
- doc/css/full_list.css
|
230
|
+
- doc/css/style.css
|
231
|
+
- doc/file.CODE_OF_CONDUCT.html
|
232
|
+
- doc/file.LICENSE.html
|
233
|
+
- doc/file.README.html
|
234
|
+
- doc/file_list.html
|
235
|
+
- doc/frames.html
|
236
|
+
- doc/index.html
|
237
|
+
- doc/js/app.js
|
238
|
+
- doc/js/full_list.js
|
239
|
+
- doc/js/jquery.js
|
240
|
+
- doc/method_list.html
|
241
|
+
- doc/top-level-namespace.html
|
242
|
+
- lib/procreate/swatches.rb
|
243
|
+
- lib/procreate/swatches/colors_helper.rb
|
244
|
+
- lib/procreate/swatches/errors/invalid_format.rb
|
245
|
+
- lib/procreate/swatches/errors/invalid_path.rb
|
246
|
+
- lib/procreate/swatches/exporter.rb
|
247
|
+
- lib/procreate/swatches/parser.rb
|
248
|
+
- lib/procreate/swatches/version.rb
|
249
|
+
- lib/procreate/swatches/wrapper.rb
|
250
|
+
- procreate-swatches.gemspec
|
251
|
+
homepage: https://github.com/laurentzziu/procreate-swatches
|
252
|
+
licenses:
|
253
|
+
- MIT
|
254
|
+
metadata: {}
|
255
|
+
post_install_message:
|
256
|
+
rdoc_options: []
|
257
|
+
require_paths:
|
258
|
+
- lib
|
259
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
260
|
+
requirements:
|
261
|
+
- - ">="
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0'
|
264
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
265
|
+
requirements:
|
266
|
+
- - ">="
|
267
|
+
- !ruby/object:Gem::Version
|
268
|
+
version: '0'
|
269
|
+
requirements: []
|
270
|
+
rubyforge_project:
|
271
|
+
rubygems_version: 2.6.14
|
272
|
+
signing_key:
|
273
|
+
specification_version: 4
|
274
|
+
summary: A gem to interact with Procreate .swatches files.
|
275
|
+
test_files: []
|