tileset_tooling 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ruby.yml +35 -0
  3. data/.gitignore +8 -0
  4. data/.rubocop.yml +63 -0
  5. data/.ruby-version +1 -0
  6. data/.vscode/settings.json +16 -0
  7. data/Gemfile +3 -0
  8. data/Gemfile.lock +161 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.rdoc +59 -0
  11. data/Rakefile +54 -0
  12. data/bin/tileset_tooling +7 -0
  13. data/features/insert_bleed.feature +56 -0
  14. data/features/step_definitions/file_steps.rb +19 -0
  15. data/features/step_definitions/help_steps.rb +10 -0
  16. data/features/step_definitions/insert_bleed_steps.rb +28 -0
  17. data/features/support/configuration.rb +18 -0
  18. data/features/support/env.rb +19 -0
  19. data/features/support/test_data.rb +16 -0
  20. data/features/tileset_tooling.feature +7 -0
  21. data/lib/tileset_tooling.rb +4 -0
  22. data/lib/tileset_tooling/app.rb +58 -0
  23. data/lib/tileset_tooling/commands.rb +22 -0
  24. data/lib/tileset_tooling/commands/insert_bleed.rb +126 -0
  25. data/lib/tileset_tooling/data.rb +13 -0
  26. data/lib/tileset_tooling/data/tile.rb +30 -0
  27. data/lib/tileset_tooling/data/tileset.rb +96 -0
  28. data/lib/tileset_tooling/data/types.rb +11 -0
  29. data/lib/tileset_tooling/utils.rb +26 -0
  30. data/lib/tileset_tooling/version.rb +7 -0
  31. data/test/commands/insert_bleed_test.rb +76 -0
  32. data/test/data/UIpackSheet_transparent.png +0 -0
  33. data/test/data/expected/simple_with_bad_specs.png +0 -0
  34. data/test/data/expected/simple_with_margin.png +0 -0
  35. data/test/data/expected/simple_with_specs.png +0 -0
  36. data/test/data/simple_no_margin.png +0 -0
  37. data/test/data/simple_with_bad_specs.png +0 -0
  38. data/test/data/simple_with_bad_specs.specs +2 -0
  39. data/test/data/simple_with_margin.png +0 -0
  40. data/test/data/simple_with_specs.png +0 -0
  41. data/test/data/simple_with_specs.specs +7 -0
  42. data/test/data/source/simple_no_margin.xcf +0 -0
  43. data/test/data/source/simple_with_margin.xcf +0 -0
  44. data/test/test_helper.rb +23 -0
  45. data/test/utils_test.rb +12 -0
  46. data/tileset_tooling.gemspec +34 -0
  47. data/tileset_tooling.rdoc +48 -0
  48. metadata +317 -0
@@ -0,0 +1,96 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ require 'tileset_tooling/data/tile'
5
+
6
+ # Class representing a TileSet row
7
+ class ::TilesetTooling::Data::TileSetRow
8
+ # Default constructor taking a list of tiles
9
+ def initialize(tiles)
10
+ @tiles = tiles
11
+ end
12
+
13
+ attr_reader :tiles
14
+ end
15
+
16
+ # Class representing a TileSet's information
17
+ class ::TilesetTooling::Data::TileSet < ::Dry::Struct
18
+ attribute :image, ::TilesetTooling::Data::Types::ImageType
19
+ attribute :original_image_path, ::TilesetTooling::Data::Types::String
20
+ attribute :tile_height, ::TilesetTooling::Data::Types::Integer
21
+ attribute :tile_width, ::TilesetTooling::Data::Types::Integer
22
+ attribute :margin, ::TilesetTooling::Data::Types::Integer
23
+ attribute :offset_top, ::TilesetTooling::Data::Types::Integer
24
+ attribute :offset_left, ::TilesetTooling::Data::Types::Integer
25
+
26
+ # Helper to print all information in the image
27
+ def to_s
28
+ %(
29
+ Image '#{original_image_path}'
30
+ Tile height: #{tile_height}
31
+ Tile width: #{tile_width}
32
+ Margin: #{margin}
33
+ Top offset: #{offset_top}
34
+ Left offset: #{offset_left}
35
+ Number of tiles: #{rows.count * rows[0].tiles.count})
36
+ end
37
+
38
+ # Runs the given bloc on each tile of the tileset
39
+ def for_each_tile(&block)
40
+ rows.each do |row|
41
+ row.tiles.each do |tile|
42
+ block.call(tile)
43
+ end
44
+ end
45
+ end
46
+
47
+ # Gets the height of the tileset/image
48
+ def height
49
+ image.height
50
+ end
51
+
52
+ # Gets the width of the tileset/image
53
+ def width
54
+ image.width
55
+ end
56
+
57
+ private
58
+
59
+ # Computes the tiles and returns them
60
+ def rows
61
+ return @rows unless @rows.nil?
62
+
63
+ @rows = []
64
+ top = offset_top
65
+ loop do
66
+ left = offset_left
67
+ tiles = []
68
+ margin_top = top.positive? ? margin : 0
69
+ margin_bottom = top + tile_height < height ? margin : 0
70
+
71
+ loop do
72
+ margin_left = left.positive? ? margin : 0
73
+ margin_right = left + tile_width < width ? margin : 0
74
+
75
+ tiles << ::TilesetTooling::Data::Tile.new(
76
+ top: top + margin_top,
77
+ left: left + margin_left,
78
+ height: tile_height,
79
+ width: tile_width,
80
+ margin_top: margin_top,
81
+ margin_left: margin_left,
82
+ margin_bottom: margin_bottom,
83
+ margin_right: margin_right
84
+ )
85
+ left += tile_width + margin_left + margin_right
86
+ break if left >= width
87
+ end
88
+
89
+ @rows << ::TilesetTooling::Data::TileSetRow.new(tiles)
90
+ top += tile_height + margin_top + margin_bottom
91
+ break if top >= height
92
+ end
93
+
94
+ @rows
95
+ end
96
+ end
@@ -0,0 +1,11 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ # Module containing all types to be used for Dry::Struct structures
5
+ module ::TilesetTooling::Data::Types
6
+ include ::Dry.Types()
7
+
8
+ ImageType = ::TilesetTooling::Data::Types.Instance(::MiniMagick::Image)
9
+
10
+ public_constant :ImageType
11
+ end
@@ -0,0 +1,26 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ require 'mini_magick'
5
+
6
+ # A few random utilities
7
+ module ::TilesetTooling::Utils
8
+ module_function
9
+
10
+ # Generate a signature from the image data
11
+ def image_signature(image_path)
12
+ ::MiniMagick::Tool::Identify.new do |identity|
13
+ identity.quiet
14
+ identity.format('%#\\n')
15
+ identity << image_path
16
+ end
17
+ end
18
+
19
+ # Gets the path to the spec file that should go with the given image
20
+ def image_spec_file_path(image_path)
21
+ file_name = ::File.basename(image_path, '.*')
22
+ directory = ::File.dirname(image_path)
23
+
24
+ "#{directory}/#{file_name}.specs"
25
+ end
26
+ end
@@ -0,0 +1,7 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ module ::TilesetTooling
5
+ VERSION = '0.0.2'
6
+ public_constant :VERSION
7
+ end
@@ -0,0 +1,76 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ require 'test_helper'
5
+
6
+ class ::TestInsertBleed < ::Test::Unit::TestCase
7
+ def test_margin_required
8
+ input, = get_png_data('simple_no_margin.png')
9
+ command = ::TilesetTooling::Commands::InsertBleed.new({}, [input])
10
+ command.expects(:ask_specs).returns([16, 16, 0, 0, 0])
11
+ command.unpack!
12
+
13
+ assert_raise ::StandardError, 'Current implementation needs an existing margin' do
14
+ command.run
15
+ end
16
+ end
17
+
18
+ def test_simple_file
19
+ input, expected = get_png_data('simple_with_margin.png')
20
+ output = output_file_path
21
+ options = { output: output }
22
+ args = [input]
23
+ command = ::TilesetTooling::Commands::InsertBleed.new(options, args)
24
+ command.expects(:ask_specs).returns([16, 16, 1, 0, 0])
25
+ command.unpack!
26
+ command.run
27
+ assert ::File.exist?(expected)
28
+ assert ::File.exist?(output)
29
+ output_signature = ::TilesetTooling::Utils.image_signature(output)
30
+ expected_signature = ::TilesetTooling::Utils.image_signature(expected)
31
+ assert_equal(expected_signature, output_signature)
32
+ end
33
+
34
+ def test_simple_file_with_specs
35
+ input, expected = get_png_data('simple_with_specs.png')
36
+ output = output_file_path
37
+ options = { output: output }
38
+ args = [input]
39
+ command = ::TilesetTooling::Commands::InsertBleed.new(options, args)
40
+ command.unpack!
41
+ command.run
42
+ assert ::File.exist?(expected)
43
+ assert ::File.exist?(output)
44
+ output_signature = ::TilesetTooling::Utils.image_signature(output)
45
+ expected_signature = ::TilesetTooling::Utils.image_signature(expected)
46
+ assert_equal(expected_signature, output_signature)
47
+ end
48
+
49
+ def test_simple_file_with_bad_specs
50
+ input, = get_png_data('simple_with_bad_specs.png')
51
+ output = output_file_path
52
+ options = { output: output }
53
+ args = [input]
54
+ command = ::TilesetTooling::Commands::InsertBleed.new(options, args)
55
+ command.unpack!
56
+ assert_raise ::StandardError, 'Invalid specs file' do
57
+ command.run
58
+ end
59
+ end
60
+
61
+ def test_simple_file_with_skip_specs
62
+ input, expected = get_png_data('simple_with_bad_specs.png')
63
+ output = output_file_path
64
+ options = { output: output, 'skip-specs': true }
65
+ args = [input]
66
+ command = ::TilesetTooling::Commands::InsertBleed.new(options, args)
67
+ command.expects(:ask_specs).returns([16, 16, 1, 0, 0])
68
+ command.unpack!
69
+ command.run
70
+ assert ::File.exist?(expected)
71
+ assert ::File.exist?(output)
72
+ output_signature = ::TilesetTooling::Utils.image_signature(output)
73
+ expected_signature = ::TilesetTooling::Utils.image_signature(expected)
74
+ assert_equal(expected_signature, output_signature)
75
+ end
76
+ end
@@ -0,0 +1,2 @@
1
+ I'm not a YAML
2
+ I'm nothing ...
@@ -0,0 +1,7 @@
1
+ specs:
2
+ details:
3
+ tile_height: 16
4
+ tile_width: 16
5
+ margin: 1
6
+ offset_top: 0
7
+ offset_left: 0
@@ -0,0 +1,23 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ require 'test/unit'
5
+ require 'mocha/test_unit'
6
+
7
+ require 'tileset_tooling/app'
8
+
9
+ # In case we need debugging, uncomment the following
10
+ # ::SemanticLogger.sync!
11
+ # ::SemanticLogger.default_level = :trace
12
+ # ::SemanticLogger.add_appender(io: $stdout, formatter: :color)
13
+
14
+ def get_png_data(name)
15
+ input = "#{__dir__}/data/#{name}"
16
+ expected = "#{__dir__}/data/expected/#{name}"
17
+
18
+ [input, expected]
19
+ end
20
+
21
+ def output_file_path
22
+ "#{__dir__}/data/tmp_output.png"
23
+ end
@@ -0,0 +1,12 @@
1
+ # Copyright (c) 2020 Jean-Sebastien Gelinas, see LICENSE.txt
2
+ # frozen_string_literal: true
3
+
4
+ require 'test_helper'
5
+
6
+ class ::TestUtils < ::Test::Unit::TestCase
7
+ def test_image_signature
8
+ input, = get_png_data('simple_no_margin.png')
9
+ signature = ::TilesetTooling::Utils.image_signature(input)
10
+ assert_equal('7a61e5c691289afc9d6eb50b52ac7cac05241271775d20233e07ec431e24c9c7', signature)
11
+ end
12
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Ensure we require the local version and not one we might have installed already
4
+ require File.join([File.dirname(__FILE__), 'lib', 'tileset_tooling', 'version.rb'])
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'tileset_tooling'
8
+ s.version = TilesetTooling::VERSION
9
+ s.author = 'Jean-Sebastien Gelinas'
10
+ s.email = 'calestar@gmail.com'
11
+ s.homepage = 'https://github.com/calestar/tileset_tooling'
12
+ s.license = 'MIT'
13
+ s.platform = Gem::Platform::RUBY
14
+ s.required_ruby_version = '>= 2.6.3'
15
+ s.summary = 'Bits of tooling I use for working with tilesets'
16
+ s.files = `git ls-files`.split('
17
+ ')
18
+ s.require_paths << 'lib'
19
+ s.extra_rdoc_files = ['README.rdoc', 'tileset_tooling.rdoc']
20
+ s.rdoc_options << '--title' << 'tileset_tooling' << '--main' << 'README.rdoc' << '-ri'
21
+ s.bindir = 'bin'
22
+ s.executables << 'tileset_tooling'
23
+ s.add_development_dependency('aruba', '~> 1.0', '>= 1.0.3')
24
+ s.add_development_dependency('mocha', '~> 1.11', '>= 1.11.2')
25
+ s.add_development_dependency('rake', '~> 12.3', '>= 12.3.3')
26
+ s.add_development_dependency('rdoc', '~> 6.2', '>= 6.2.1')
27
+ s.add_development_dependency('rubocop', '~> 0.90', '>= 0.90.0')
28
+ s.add_development_dependency('test-unit', '~> 3.3', '>= 3.3.6')
29
+ s.add_runtime_dependency('dry-struct', '~> 1.3', '>= 1.3.0')
30
+ s.add_runtime_dependency('gli', '~> 2.19', '2.19.2')
31
+ s.add_runtime_dependency('highline', '~> 2.0', '>= 2.0.3')
32
+ s.add_runtime_dependency('mini_magick', '~> 4.10', '>= 4.10.1')
33
+ s.add_runtime_dependency('semantic_logger', '~> 4.7', '>= 4.7.2')
34
+ end
@@ -0,0 +1,48 @@
1
+ == tileset_tooling - Bits of tooling I use for working with tilesets
2
+
3
+ v0.0.1
4
+
5
+ === Global Options
6
+ === --help
7
+ Show this message
8
+
9
+
10
+
11
+ === --version
12
+ Display the program version
13
+
14
+
15
+
16
+ === Commands
17
+ ==== Command: <tt>bleed </tt>
18
+ Commands relating to bleed around tiles
19
+
20
+
21
+ ===== Commands
22
+ ====== Command: <tt>insert </tt>
23
+ Inserts a bleed around tiles
24
+
25
+
26
+ ======= Options
27
+ ======= --output path
28
+
29
+ Path where to store result
30
+
31
+ [Default Value] None
32
+
33
+
34
+ ======= --[no-]skip-specs
35
+ Skips the reading of the specs
36
+
37
+
38
+
39
+ ==== Command: <tt>help command</tt>
40
+ Shows a list of commands or help for one command
41
+
42
+ Gets help for the application or its commands. Can also list the commands in a way helpful to creating a bash-style completion function
43
+ ===== Options
44
+ ===== -c
45
+ List commands one per line, to assist with shell completion
46
+
47
+
48
+
metadata ADDED
@@ -0,0 +1,317 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tileset_tooling
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Jean-Sebastien Gelinas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-09-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: aruba
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.3
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: mocha
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.11'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.11.2
43
+ type: :development
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.11'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.11.2
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '12.3'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 12.3.3
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '12.3'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 12.3.3
73
+ - !ruby/object:Gem::Dependency
74
+ name: rdoc
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '6.2'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 6.2.1
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '6.2'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 6.2.1
93
+ - !ruby/object:Gem::Dependency
94
+ name: rubocop
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.90.0
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.90'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 0.90.0
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: '0.90'
113
+ - !ruby/object:Gem::Dependency
114
+ name: test-unit
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '3.3'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 3.3.6
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '3.3'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 3.3.6
133
+ - !ruby/object:Gem::Dependency
134
+ name: dry-struct
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: 1.3.0
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '1.3'
143
+ type: :runtime
144
+ prerelease: false
145
+ version_requirements: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 1.3.0
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.3'
153
+ - !ruby/object:Gem::Dependency
154
+ name: gli
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '2.19'
160
+ - - '='
161
+ - !ruby/object:Gem::Version
162
+ version: 2.19.2
163
+ type: :runtime
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '2.19'
170
+ - - '='
171
+ - !ruby/object:Gem::Version
172
+ version: 2.19.2
173
+ - !ruby/object:Gem::Dependency
174
+ name: highline
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '2.0'
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: 2.0.3
183
+ type: :runtime
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: '2.0'
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: 2.0.3
193
+ - !ruby/object:Gem::Dependency
194
+ name: mini_magick
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '4.10'
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: 4.10.1
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '4.10'
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: 4.10.1
213
+ - !ruby/object:Gem::Dependency
214
+ name: semantic_logger
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: '4.7'
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: 4.7.2
223
+ type: :runtime
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '4.7'
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: 4.7.2
233
+ description:
234
+ email: calestar@gmail.com
235
+ executables:
236
+ - tileset_tooling
237
+ extensions: []
238
+ extra_rdoc_files:
239
+ - README.rdoc
240
+ - tileset_tooling.rdoc
241
+ files:
242
+ - ".github/workflows/ruby.yml"
243
+ - ".gitignore"
244
+ - ".rubocop.yml"
245
+ - ".ruby-version"
246
+ - ".vscode/settings.json"
247
+ - Gemfile
248
+ - Gemfile.lock
249
+ - LICENSE.txt
250
+ - README.rdoc
251
+ - Rakefile
252
+ - bin/tileset_tooling
253
+ - features/insert_bleed.feature
254
+ - features/step_definitions/file_steps.rb
255
+ - features/step_definitions/help_steps.rb
256
+ - features/step_definitions/insert_bleed_steps.rb
257
+ - features/support/configuration.rb
258
+ - features/support/env.rb
259
+ - features/support/test_data.rb
260
+ - features/tileset_tooling.feature
261
+ - lib/tileset_tooling.rb
262
+ - lib/tileset_tooling/app.rb
263
+ - lib/tileset_tooling/commands.rb
264
+ - lib/tileset_tooling/commands/insert_bleed.rb
265
+ - lib/tileset_tooling/data.rb
266
+ - lib/tileset_tooling/data/tile.rb
267
+ - lib/tileset_tooling/data/tileset.rb
268
+ - lib/tileset_tooling/data/types.rb
269
+ - lib/tileset_tooling/utils.rb
270
+ - lib/tileset_tooling/version.rb
271
+ - test/commands/insert_bleed_test.rb
272
+ - test/data/UIpackSheet_transparent.png
273
+ - test/data/expected/simple_with_bad_specs.png
274
+ - test/data/expected/simple_with_margin.png
275
+ - test/data/expected/simple_with_specs.png
276
+ - test/data/simple_no_margin.png
277
+ - test/data/simple_with_bad_specs.png
278
+ - test/data/simple_with_bad_specs.specs
279
+ - test/data/simple_with_margin.png
280
+ - test/data/simple_with_specs.png
281
+ - test/data/simple_with_specs.specs
282
+ - test/data/source/simple_no_margin.xcf
283
+ - test/data/source/simple_with_margin.xcf
284
+ - test/test_helper.rb
285
+ - test/utils_test.rb
286
+ - tileset_tooling.gemspec
287
+ - tileset_tooling.rdoc
288
+ homepage: https://github.com/calestar/tileset_tooling
289
+ licenses:
290
+ - MIT
291
+ metadata: {}
292
+ post_install_message:
293
+ rdoc_options:
294
+ - "--title"
295
+ - tileset_tooling
296
+ - "--main"
297
+ - README.rdoc
298
+ - "-ri"
299
+ require_paths:
300
+ - lib
301
+ - lib
302
+ required_ruby_version: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: 2.6.3
307
+ required_rubygems_version: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
312
+ requirements: []
313
+ rubygems_version: 3.0.3
314
+ signing_key:
315
+ specification_version: 4
316
+ summary: Bits of tooling I use for working with tilesets
317
+ test_files: []