tileset_tooling 0.0.2
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/.github/workflows/ruby.yml +35 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +63 -0
- data/.ruby-version +1 -0
- data/.vscode/settings.json +16 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +161 -0
- data/LICENSE.txt +21 -0
- data/README.rdoc +59 -0
- data/Rakefile +54 -0
- data/bin/tileset_tooling +7 -0
- data/features/insert_bleed.feature +56 -0
- data/features/step_definitions/file_steps.rb +19 -0
- data/features/step_definitions/help_steps.rb +10 -0
- data/features/step_definitions/insert_bleed_steps.rb +28 -0
- data/features/support/configuration.rb +18 -0
- data/features/support/env.rb +19 -0
- data/features/support/test_data.rb +16 -0
- data/features/tileset_tooling.feature +7 -0
- data/lib/tileset_tooling.rb +4 -0
- data/lib/tileset_tooling/app.rb +58 -0
- data/lib/tileset_tooling/commands.rb +22 -0
- data/lib/tileset_tooling/commands/insert_bleed.rb +126 -0
- data/lib/tileset_tooling/data.rb +13 -0
- data/lib/tileset_tooling/data/tile.rb +30 -0
- data/lib/tileset_tooling/data/tileset.rb +96 -0
- data/lib/tileset_tooling/data/types.rb +11 -0
- data/lib/tileset_tooling/utils.rb +26 -0
- data/lib/tileset_tooling/version.rb +7 -0
- data/test/commands/insert_bleed_test.rb +76 -0
- data/test/data/UIpackSheet_transparent.png +0 -0
- data/test/data/expected/simple_with_bad_specs.png +0 -0
- data/test/data/expected/simple_with_margin.png +0 -0
- data/test/data/expected/simple_with_specs.png +0 -0
- data/test/data/simple_no_margin.png +0 -0
- data/test/data/simple_with_bad_specs.png +0 -0
- data/test/data/simple_with_bad_specs.specs +2 -0
- data/test/data/simple_with_margin.png +0 -0
- data/test/data/simple_with_specs.png +0 -0
- data/test/data/simple_with_specs.specs +7 -0
- data/test/data/source/simple_no_margin.xcf +0 -0
- data/test/data/source/simple_with_margin.xcf +0 -0
- data/test/test_helper.rb +23 -0
- data/test/utils_test.rb +12 -0
- data/tileset_tooling.gemspec +34 -0
- data/tileset_tooling.rdoc +48 -0
- 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,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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/test_helper.rb
ADDED
@@ -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
|
data/test/utils_test.rb
ADDED
@@ -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: []
|