img_to_script 1.0.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.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +25 -0
  3. data/.vscode/launch.json +21 -0
  4. data/CHANGELOG.md +7 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +271 -0
  7. data/Rakefile +16 -0
  8. data/img_to_script.gemspec +41 -0
  9. data/lib/img_to_script/abs_token_type.rb +33 -0
  10. data/lib/img_to_script/abstract_token/abs_func.rb +19 -0
  11. data/lib/img_to_script/abstract_token/abstract_token.rb +23 -0
  12. data/lib/img_to_script/abstract_token/assign_value.rb +20 -0
  13. data/lib/img_to_script/abstract_token/clear_screen.rb +16 -0
  14. data/lib/img_to_script/abstract_token/data_read.rb +19 -0
  15. data/lib/img_to_script/abstract_token/data_store.rb +19 -0
  16. data/lib/img_to_script/abstract_token/draw_chunk_by_hex_value.rb +19 -0
  17. data/lib/img_to_script/abstract_token/draw_line_by_abs_coords.rb +22 -0
  18. data/lib/img_to_script/abstract_token/draw_pixel_by_abs_coords.rb +20 -0
  19. data/lib/img_to_script/abstract_token/go_to.rb +19 -0
  20. data/lib/img_to_script/abstract_token/if_condition.rb +20 -0
  21. data/lib/img_to_script/abstract_token/loop_begin.rb +21 -0
  22. data/lib/img_to_script/abstract_token/loop_end.rb +19 -0
  23. data/lib/img_to_script/abstract_token/math_add.rb +20 -0
  24. data/lib/img_to_script/abstract_token/math_greater_than.rb +20 -0
  25. data/lib/img_to_script/abstract_token/math_mult.rb +20 -0
  26. data/lib/img_to_script/abstract_token/math_sub.rb +20 -0
  27. data/lib/img_to_script/abstract_token/move_point_to_abs_coords.rb +20 -0
  28. data/lib/img_to_script/abstract_token/parentheses.rb +19 -0
  29. data/lib/img_to_script/abstract_token/program_begin.rb +16 -0
  30. data/lib/img_to_script/abstract_token/program_end.rb +16 -0
  31. data/lib/img_to_script/abstract_token/remark.rb +19 -0
  32. data/lib/img_to_script/abstract_token/sign_func.rb +19 -0
  33. data/lib/img_to_script/abstract_token/wait.rb +19 -0
  34. data/lib/img_to_script/abstract_token.rb +8 -0
  35. data/lib/img_to_script/container.rb +26 -0
  36. data/lib/img_to_script/current_line_placeholder.rb +40 -0
  37. data/lib/img_to_script/formatter.rb +34 -0
  38. data/lib/img_to_script/generators/generator.rb +134 -0
  39. data/lib/img_to_script/generators/hex_mask/default.rb +24 -0
  40. data/lib/img_to_script/generators/hex_mask/enhanced.rb +220 -0
  41. data/lib/img_to_script/generators/hex_mask/hex_mask.rb +100 -0
  42. data/lib/img_to_script/generators/hex_mask.rb +13 -0
  43. data/lib/img_to_script/generators/run_length_encoding/horizontal.rb +78 -0
  44. data/lib/img_to_script/generators/run_length_encoding/run_length_encoding.rb +304 -0
  45. data/lib/img_to_script/generators/run_length_encoding/vertical.rb +79 -0
  46. data/lib/img_to_script/generators/run_length_encoding.rb +10 -0
  47. data/lib/img_to_script/generators/segmental/data_read_draw/data_read_draw.rb +70 -0
  48. data/lib/img_to_script/generators/segmental/data_read_draw/horizontal.rb +54 -0
  49. data/lib/img_to_script/generators/segmental/data_read_draw/vertical.rb +54 -0
  50. data/lib/img_to_script/generators/segmental/data_read_draw.rb +18 -0
  51. data/lib/img_to_script/generators/segmental/direct_draw/direct_draw.rb +62 -0
  52. data/lib/img_to_script/generators/segmental/direct_draw/horizontal.rb +16 -0
  53. data/lib/img_to_script/generators/segmental/direct_draw/vertical.rb +16 -0
  54. data/lib/img_to_script/generators/segmental/direct_draw.rb +12 -0
  55. data/lib/img_to_script/generators/segmental/horizontal_mixin.rb +32 -0
  56. data/lib/img_to_script/generators/segmental/segmental.rb +101 -0
  57. data/lib/img_to_script/generators/segmental/vertical_mixin.rb +38 -0
  58. data/lib/img_to_script/generators/segmental.rb +10 -0
  59. data/lib/img_to_script/generators.rb +27 -0
  60. data/lib/img_to_script/import.rb +5 -0
  61. data/lib/img_to_script/language_token.rb +8 -0
  62. data/lib/img_to_script/languages/mk90_basic/formatters/formatter.rb +49 -0
  63. data/lib/img_to_script/languages/mk90_basic/formatters/minificator.rb +316 -0
  64. data/lib/img_to_script/languages/mk90_basic/formatters/sliceable_tokens_mixin.rb +15 -0
  65. data/lib/img_to_script/languages/mk90_basic/formatters.rb +13 -0
  66. data/lib/img_to_script/languages/mk90_basic/mk90_basic_token.rb +59 -0
  67. data/lib/img_to_script/languages/mk90_basic/translators/mixin.rb +205 -0
  68. data/lib/img_to_script/languages/mk90_basic/translators/mk90_basic_10.rb +27 -0
  69. data/lib/img_to_script/languages/mk90_basic/translators/mk90_basic_20.rb +27 -0
  70. data/lib/img_to_script/languages/mk90_basic/translators/translator.rb +205 -0
  71. data/lib/img_to_script/languages/mk90_basic/translators.rb +13 -0
  72. data/lib/img_to_script/languages/mk90_basic.rb +17 -0
  73. data/lib/img_to_script/languages.rb +10 -0
  74. data/lib/img_to_script/task.rb +26 -0
  75. data/lib/img_to_script/translator.rb +31 -0
  76. data/lib/img_to_script/version.rb +5 -0
  77. data/lib/img_to_script.rb +19 -0
  78. data/sig/img_to_script.rbs +4 -0
  79. metadata +204 -0
@@ -0,0 +1,205 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ module Languages
5
+ module MK90Basic
6
+ module Translators
7
+ #
8
+ # Translates abstract tokens to the MK90 BASIC statements.
9
+ #
10
+ # Both v.1.0 & v.2.0 share the same syntax, but there are small
11
+ # differences. This differences are defined in the child classes
12
+ # MK90Basic10 & MK90Basic20.
13
+ #
14
+ class Translator < ImgToScript::Translator
15
+ include Mixin
16
+
17
+ private
18
+
19
+ def _translate(abstract_tokens, **)
20
+ result = []
21
+
22
+ abstract_tokens.each do |token|
23
+ result.push(_translate_token(token))
24
+ end
25
+
26
+ result
27
+ end
28
+
29
+ def _translate_token(token)
30
+ case token.type
31
+ when AbsTokenType::ABS_FUNC
32
+ _abs_func(token)
33
+ when AbsTokenType::ASSIGN_VALUE
34
+ _assign_value(token)
35
+ when AbsTokenType::CLEAR_SCREEN
36
+ _clear_screen(token)
37
+ when AbsTokenType::DATA_STORE
38
+ _data_store(token)
39
+ when AbsTokenType::DATA_READ
40
+ _data_read(token)
41
+ when AbsTokenType::DRAW_LINE_BY_ABS_COORDS
42
+ _draw_line_by_abs_coords(token)
43
+ when AbsTokenType::DRAW_PIXEL_BY_ABS_COORDS
44
+ _draw_pixel_by_abs_coords(token)
45
+ when AbsTokenType::DRAW_CHUNK_BY_HEX_VALUE
46
+ _draw_chunk_by_hex_value(token)
47
+ when AbsTokenType::MOVE_POINT_TO_ABS_COORDS
48
+ _move_point_to_abs_coords(token)
49
+ when AbsTokenType::MATH_ADD
50
+ _math_add(token)
51
+ when AbsTokenType::MATH_SUB
52
+ _math_sub(token)
53
+ when AbsTokenType::MATH_MULT
54
+ _math_mult(token)
55
+ when AbsTokenType::GO_TO
56
+ _go_to(token)
57
+ when AbsTokenType::MATH_GREATER_THAN
58
+ _math_greater_than(token)
59
+ when AbsTokenType::SIGN_FUNC
60
+ _sign_func(token)
61
+ when AbsTokenType::PARENTHESES
62
+ _parentheses(token)
63
+ when AbsTokenType::LOOP_BEGIN
64
+ _loop_begin(token)
65
+ when AbsTokenType::PROGRAM_END_LBL
66
+ _program_end(token)
67
+ when AbsTokenType::LOOP_END
68
+ _loop_end(token)
69
+ when AbsTokenType::IF_CONDITION
70
+ _if_condition(token)
71
+ when AbsTokenType::WAIT
72
+ _wait(token)
73
+ else
74
+ rem_token = AbstractToken::Remark.new(
75
+ text: "wrong abstract token type!",
76
+ require_nl: true
77
+ )
78
+ _remark(rem_token)
79
+ end
80
+ end
81
+
82
+ #
83
+ # Replace placeholders, expand nested tokens in the
84
+ # arguments, etc.
85
+ #
86
+ # @param [Array<Object>] args
87
+ # Original arguments.
88
+ #
89
+ # @return [Array<Object>]
90
+ # Translated arguments.
91
+ #
92
+ def _translate_arguments(args)
93
+ result = []
94
+
95
+ args.each do |arg|
96
+ result.push(_translate_arg(arg))
97
+ end
98
+
99
+ result
100
+ end
101
+
102
+ #
103
+ # Translate an argument based on its type.
104
+ #
105
+ # Some abstract tokens can have nested tokens as their
106
+ # arguments. Other tokens can have Symbols as placeholders
107
+ # for the variables names. Other arguments should be passed
108
+ # as is (e.g. Integers and Strings).
109
+ #
110
+ # @param [Object] arg
111
+ #
112
+ # @return [Object]
113
+ #
114
+ def _translate_arg(arg)
115
+ case arg
116
+ when AbstractToken::AbstractToken
117
+ _translate_token(arg)
118
+ when Symbol
119
+ arg.to_s.upcase
120
+ else
121
+ arg
122
+ end
123
+ end
124
+
125
+ #
126
+ # Return a token of a arithmetic operation.
127
+ #
128
+ # Operation should have a left part, a right part, and
129
+ # the operator between the parts.
130
+ #
131
+ # @param [AbstractToken] token
132
+ #
133
+ # @param [String] operator
134
+ # E.g.: "+", "-", ">", "<", etc.
135
+ #
136
+ # @return [MK90BasicToken]
137
+ #
138
+ def _math_operation(token, operator)
139
+ MK90BasicToken.new(
140
+ keyword: "",
141
+ args: _translate_arguments([
142
+ token.left,
143
+ operator,
144
+ token.right
145
+ ]),
146
+ separator: "",
147
+ require_nl: token.require_nl,
148
+ sliceable: false
149
+ )
150
+ end
151
+
152
+ #
153
+ # Return a token of a function with parentheses.
154
+ #
155
+ # Function with an expression that's wrapped in parentheses.
156
+ # E.g.: ABS(ex), SGN(ex). Keyword can be empty, in that case
157
+ # only parentheses with the expression will be returned: (ex).
158
+ #
159
+ # @param [AbstractToken] token
160
+ #
161
+ # @param [String] keyword
162
+ # E.g.: "ABS", "SGN".
163
+ #
164
+ # @return [MK90BasicToken]
165
+ #
166
+ def _function(token, keyword)
167
+ MK90BasicToken.new(
168
+ keyword: keyword,
169
+ args: _translate_arguments([
170
+ "(",
171
+ token.expression,
172
+ ")"
173
+ ]),
174
+ separator: "",
175
+ require_nl: token.require_nl,
176
+ sliceable: false
177
+ )
178
+ end
179
+
180
+ #
181
+ # Return a token of a keyword statements.
182
+ #
183
+ # A statement that consists only of a keyword, and doesn't
184
+ # take arguments, e.g.: CLS, END, STOP.
185
+ #
186
+ # @param [AbstractToken] token
187
+ #
188
+ # @param [String] keyword
189
+ #
190
+ # @return [MK90BasicToken]
191
+ #
192
+ def _single_keyword(token, keyword)
193
+ MK90BasicToken.new(
194
+ keyword: keyword,
195
+ args: [""],
196
+ separator: "",
197
+ require_nl: token.require_nl,
198
+ sliceable: false
199
+ )
200
+ end
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ module Languages
5
+ module MK90Basic
6
+ #
7
+ # Namespace for the MK90 BASIC translators.
8
+ #
9
+ module Translators
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ module Languages
5
+ #
6
+ # Elektronika MK90 BASIC.
7
+ #
8
+ module MK90Basic
9
+ SCR_WIDTH = 120
10
+ SCR_HEIGHT = 64
11
+ MAX_CHARS_PER_LINE = 80
12
+
13
+ LINE_OFFSET = 1
14
+ LINE_STEP = 1
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ #
5
+ # Namespace for target languages.
6
+ #
7
+ # A target language module should have a translator and a formatter.
8
+ #
9
+ module Languages; end
10
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ #
5
+ # Handles conversion.
6
+ #
7
+ class Task
8
+ include Import[
9
+ generator: "generators.hex_mask.enhanced",
10
+ translator: "languages.mk90_basic.translators.mk90_basic_10",
11
+ formatter: "languages.mk90_basic.formatters.minificator"
12
+ ]
13
+
14
+ def run(image:, scr_width:, scr_height:, **)
15
+ @formatter.format(
16
+ @translator.translate(
17
+ @generator.generate(
18
+ image: image,
19
+ scr_width: scr_width,
20
+ scr_height: scr_height
21
+ )
22
+ )
23
+ )
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ #
5
+ # Base class.
6
+ #
7
+ # Translates abstract tokens to more specific target language
8
+ # statements.
9
+ #
10
+ class Translator
11
+ #
12
+ # Translate the abstract tokens to the target language tokens.
13
+ #
14
+ # @param [Array<AbstractToken>] abstract_tokens
15
+ #
16
+ # @param [Hash{ Symbol => Object }] **kwargs
17
+ # Options.
18
+ #
19
+ # @return [Array<Object>]
20
+ #
21
+ def translate(abstract_tokens, **kwargs)
22
+ _translate(
23
+ Array(abstract_tokens, **kwargs)
24
+ )
25
+ end
26
+
27
+ private
28
+
29
+ def _translate(*); end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ImgToScript
4
+ VERSION = "1.0.0"
5
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/system"
4
+ require "logger"
5
+ require "run_length_encoding_rb"
6
+ require "zeitwerk"
7
+
8
+ require_relative "img_to_script/container"
9
+ require_relative "img_to_script/version"
10
+
11
+ #
12
+ # Converts binary images to executable scripts.
13
+ #
14
+ module ImgToScript
15
+ class Error < StandardError; end
16
+ # Your code goes here...
17
+
18
+ Container.finalize!
19
+ end
@@ -0,0 +1,4 @@
1
+ module ImgToScript
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: img_to_script
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - 8bit-mate
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-12-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dry-system
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.1
23
+ type: :runtime
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.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: run_length_encoding_rb
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.0.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.0.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: zeitwerk
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.6'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.6.12
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.6'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.6.12
73
+ - !ruby/object:Gem::Dependency
74
+ name: rmagick-bin_magick
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.2'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.2.0
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.2'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.2.0
93
+ description:
94
+ email:
95
+ - you@example.com
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files: []
99
+ files:
100
+ - ".rubocop.yml"
101
+ - ".vscode/launch.json"
102
+ - CHANGELOG.md
103
+ - LICENSE.txt
104
+ - README.md
105
+ - Rakefile
106
+ - img_to_script.gemspec
107
+ - lib/img_to_script.rb
108
+ - lib/img_to_script/abs_token_type.rb
109
+ - lib/img_to_script/abstract_token.rb
110
+ - lib/img_to_script/abstract_token/abs_func.rb
111
+ - lib/img_to_script/abstract_token/abstract_token.rb
112
+ - lib/img_to_script/abstract_token/assign_value.rb
113
+ - lib/img_to_script/abstract_token/clear_screen.rb
114
+ - lib/img_to_script/abstract_token/data_read.rb
115
+ - lib/img_to_script/abstract_token/data_store.rb
116
+ - lib/img_to_script/abstract_token/draw_chunk_by_hex_value.rb
117
+ - lib/img_to_script/abstract_token/draw_line_by_abs_coords.rb
118
+ - lib/img_to_script/abstract_token/draw_pixel_by_abs_coords.rb
119
+ - lib/img_to_script/abstract_token/go_to.rb
120
+ - lib/img_to_script/abstract_token/if_condition.rb
121
+ - lib/img_to_script/abstract_token/loop_begin.rb
122
+ - lib/img_to_script/abstract_token/loop_end.rb
123
+ - lib/img_to_script/abstract_token/math_add.rb
124
+ - lib/img_to_script/abstract_token/math_greater_than.rb
125
+ - lib/img_to_script/abstract_token/math_mult.rb
126
+ - lib/img_to_script/abstract_token/math_sub.rb
127
+ - lib/img_to_script/abstract_token/move_point_to_abs_coords.rb
128
+ - lib/img_to_script/abstract_token/parentheses.rb
129
+ - lib/img_to_script/abstract_token/program_begin.rb
130
+ - lib/img_to_script/abstract_token/program_end.rb
131
+ - lib/img_to_script/abstract_token/remark.rb
132
+ - lib/img_to_script/abstract_token/sign_func.rb
133
+ - lib/img_to_script/abstract_token/wait.rb
134
+ - lib/img_to_script/container.rb
135
+ - lib/img_to_script/current_line_placeholder.rb
136
+ - lib/img_to_script/formatter.rb
137
+ - lib/img_to_script/generators.rb
138
+ - lib/img_to_script/generators/generator.rb
139
+ - lib/img_to_script/generators/hex_mask.rb
140
+ - lib/img_to_script/generators/hex_mask/default.rb
141
+ - lib/img_to_script/generators/hex_mask/enhanced.rb
142
+ - lib/img_to_script/generators/hex_mask/hex_mask.rb
143
+ - lib/img_to_script/generators/run_length_encoding.rb
144
+ - lib/img_to_script/generators/run_length_encoding/horizontal.rb
145
+ - lib/img_to_script/generators/run_length_encoding/run_length_encoding.rb
146
+ - lib/img_to_script/generators/run_length_encoding/vertical.rb
147
+ - lib/img_to_script/generators/segmental.rb
148
+ - lib/img_to_script/generators/segmental/data_read_draw.rb
149
+ - lib/img_to_script/generators/segmental/data_read_draw/data_read_draw.rb
150
+ - lib/img_to_script/generators/segmental/data_read_draw/horizontal.rb
151
+ - lib/img_to_script/generators/segmental/data_read_draw/vertical.rb
152
+ - lib/img_to_script/generators/segmental/direct_draw.rb
153
+ - lib/img_to_script/generators/segmental/direct_draw/direct_draw.rb
154
+ - lib/img_to_script/generators/segmental/direct_draw/horizontal.rb
155
+ - lib/img_to_script/generators/segmental/direct_draw/vertical.rb
156
+ - lib/img_to_script/generators/segmental/horizontal_mixin.rb
157
+ - lib/img_to_script/generators/segmental/segmental.rb
158
+ - lib/img_to_script/generators/segmental/vertical_mixin.rb
159
+ - lib/img_to_script/import.rb
160
+ - lib/img_to_script/language_token.rb
161
+ - lib/img_to_script/languages.rb
162
+ - lib/img_to_script/languages/mk90_basic.rb
163
+ - lib/img_to_script/languages/mk90_basic/formatters.rb
164
+ - lib/img_to_script/languages/mk90_basic/formatters/formatter.rb
165
+ - lib/img_to_script/languages/mk90_basic/formatters/minificator.rb
166
+ - lib/img_to_script/languages/mk90_basic/formatters/sliceable_tokens_mixin.rb
167
+ - lib/img_to_script/languages/mk90_basic/mk90_basic_token.rb
168
+ - lib/img_to_script/languages/mk90_basic/translators.rb
169
+ - lib/img_to_script/languages/mk90_basic/translators/mixin.rb
170
+ - lib/img_to_script/languages/mk90_basic/translators/mk90_basic_10.rb
171
+ - lib/img_to_script/languages/mk90_basic/translators/mk90_basic_20.rb
172
+ - lib/img_to_script/languages/mk90_basic/translators/translator.rb
173
+ - lib/img_to_script/task.rb
174
+ - lib/img_to_script/translator.rb
175
+ - lib/img_to_script/version.rb
176
+ - sig/img_to_script.rbs
177
+ homepage: https://github.com/8bit-mate/img_to_script.rb
178
+ licenses:
179
+ - MIT
180
+ metadata:
181
+ allowed_push_host: https://rubygems.org
182
+ homepage_uri: https://github.com/8bit-mate/img_to_script.rb
183
+ source_code_uri: https://github.com/8bit-mate/img_to_script.rb
184
+ changelog_uri: https://github.com/8bit-mate/img_to_script.rb
185
+ post_install_message:
186
+ rdoc_options: []
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: 3.0.0
194
+ required_rubygems_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ requirements: []
200
+ rubygems_version: 3.4.10
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: Converts images to executable scripts.
204
+ test_files: []