R3EXS 1.1.0 → 1.1.1

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.
data/lib/R3EXS/ast.rb CHANGED
@@ -7,8 +7,21 @@ module R3EXS
7
7
  # 用来提取源码生成的 AST 中的字符串和符号
8
8
  class StringsExtractor < Prism::Visitor
9
9
 
10
+ # 提取后存储的字符串数组
11
+ #
12
+ # @return [Array<String>]
13
+ attr_reader :strings
14
+
15
+ # 是否包含脚本中的符号
16
+ #
17
+ # @return [Boolean]
18
+ attr_reader :with_symbol
19
+
20
+ # 初始化 StringsExtractor
21
+ #
10
22
  # @param strings [Array<String>] 存储提取出的字符串的数组
11
23
  # @param with_symbol [Boolean] 是否包含脚本中的符号
24
+ #
12
25
  # @return [StringsExtractor]
13
26
  def initialize(strings, with_symbol)
14
27
  @strings = strings
@@ -18,6 +31,7 @@ module R3EXS
18
31
  # 处理类型为 StringNode 的节点
19
32
  #
20
33
  # @param node [Prism::StringNode] AST 节点
34
+ #
21
35
  # @return [void]
22
36
  def visit_string_node(node)
23
37
  @strings << node.content
@@ -27,22 +41,12 @@ module R3EXS
27
41
  # 处理类型为 SymbolNode 的节点
28
42
  #
29
43
  # @param node [Prism::SymbolNode] AST 节点
44
+ #
30
45
  # @return [void]
31
46
  def visit_symbol_node(node)
32
47
  @strings << node.value if @with_symbol
33
48
  super
34
49
  end
35
-
36
- # 提取后存储的字符串数组
37
- #
38
- # @return [Array<String>]
39
- attr_accessor :strings
40
-
41
- # 是否包含脚本中的符号
42
- #
43
- # @return [Boolean]
44
- attr_accessor :with_symbol
45
-
46
50
  end
47
51
 
48
52
  # 用来替换源码里面的字符串和符号
@@ -51,18 +55,6 @@ module R3EXS
51
55
  # 用来记录字符串的位置
52
56
  class Location
53
57
 
54
- # @note start_offset 是字符串在二进制下打开时的位置
55
- #
56
- # @param start_offset [Integer] 字符串在源文件中的起始位置
57
- # @param length [Integer] 字符串的长度
58
- # @param content [String] 字符串内容
59
- # @return [Location]
60
- def initialize(start_offset, length, content)
61
- @start_offset = start_offset
62
- @length = length
63
- @content = content
64
- end
65
-
66
58
  # 字符串在二进制源文件中的起始位置
67
59
  #
68
60
  # @return [Integer]
@@ -78,9 +70,24 @@ module R3EXS
78
70
  # @return [String]
79
71
  attr_reader :content
80
72
 
73
+ # @note start_offset 是字符串在二进制下打开时的位置
74
+ #
75
+ # @param start_offset [Integer] 字符串在源文件中的起始位置
76
+ # @param length [Integer] 字符串的长度
77
+ # @param content [String] 字符串内容
78
+ #
79
+ # @return [Location]
80
+ def initialize(start_offset, length, content)
81
+ @start_offset = start_offset
82
+ @length = length
83
+ @content = content
84
+ end
81
85
  end
82
86
 
87
+ # 初始化 StringsInjector
88
+ #
83
89
  # @param hash [Hash<String, String>] 字符串翻译表
90
+ #
84
91
  # @return [StringsInjector]
85
92
  def initialize(hash)
86
93
  @strings_hash = hash
@@ -91,6 +98,7 @@ module R3EXS
91
98
  # 处理类型为 StringNode 的节点
92
99
  #
93
100
  # @param node [Prism::StringNode] AST 节点
101
+ #
94
102
  # @return [void]
95
103
  def visit_string_node(node)
96
104
  location = node.content_loc
@@ -104,6 +112,7 @@ module R3EXS
104
112
  # 处理类型为 SymbolNode 的节点
105
113
  #
106
114
  # @param node [Prism::SymbolNode] AST 节点
115
+ #
107
116
  # @return [void]
108
117
  def visit_symbol_node(node)
109
118
  location = node.value_loc
@@ -121,6 +130,7 @@ module R3EXS
121
130
  #
122
131
  # @param script [String] Ruby 源码,以二进制编码打开
123
132
  # @param ast_root [Prism::ProgramNode] AST 树根节点
133
+ #
124
134
  # @return [String]
125
135
  def rewrite(script, ast_root)
126
136
  # 首先遍历一遍,找到所有需要替换的字符串的位置
@@ -143,7 +153,6 @@ module R3EXS
143
153
  @code.map! { |str| str.force_encoding('ASCII-8BIT') unless str.nil? }
144
154
  @code.join
145
155
  end
146
-
147
156
  end
148
157
 
149
158
  end
data/lib/R3EXS/error.rb CHANGED
@@ -5,205 +5,241 @@ module R3EXS
5
5
  # 用来处理 RPG 模块下的类型错误的异常
6
6
  class RPGTypeError < TypeError
7
7
 
8
+ # 引发异常的类
9
+ #
10
+ # @return [Object]
11
+ attr_reader :obj
12
+
13
+ # 初始化 RPGTypeError
14
+ #
8
15
  # @param msg [String] 异常信息
9
16
  # @param obj [Object] 引发异常的类
17
+ #
10
18
  # @return [RPGTypeError]
11
19
  def initialize(msg = '', obj)
12
20
  super(msg)
13
21
  @obj = obj
14
22
  end
15
-
16
- # 引发异常的类
17
- #
18
- # @return [Object]
19
- attr_reader :obj
20
23
  end
21
24
 
22
25
  # 用来处理 R3EXS 模块下的类型错误的异常
23
26
  class R3EXSTypeError < TypeError
24
27
 
28
+ # 引发异常的类型
29
+ #
30
+ # @return [Object]
31
+ attr_reader :obj
32
+
33
+ # 初始化 R3EXSTypeError
34
+ #
25
35
  # @param msg [String] 异常信息
26
36
  # @param obj [Object] 引发异常的的类型
37
+ #
27
38
  # @return [R3EXSTypeError]
28
39
  def initialize(msg = '', obj)
29
40
  super(msg)
30
41
  @obj = obj
31
42
  end
32
-
33
- # 引发异常的类型
34
- #
35
- # @return [Object]
36
- attr_reader :obj
37
43
  end
38
44
 
39
45
  # 用来处理 Game.rgss3a 文件加密格式不支持的异常
40
46
  class RGSS3AFileError < StandardError
41
47
 
48
+ # 引发异常的 rgss3a 文件路径
49
+ #
50
+ # @return [String]
51
+ attr_reader :rgss3a_path
52
+
53
+ # 初始化 RGSS3AFileError
54
+ #
42
55
  # @param msg [String] 异常信息
43
56
  # @param rgss3a_path [String] 引发异常的 rgss3a 文件路径
57
+ #
44
58
  # @return [Rvdata2DirError]
45
59
  def initialize(msg = '', rgss3a_path)
46
60
  super(msg)
47
61
  @rgss3a_path = rgss3a_path
48
62
  end
49
-
50
- # 引发异常的 rgss3a 文件路径
51
- #
52
- # @return [String]
53
- attr_reader :rgss3a_path
54
63
  end
55
64
 
56
65
  # 用来处理 rvdata2 文件损坏的异常
57
66
  class Rvdata2FileError < StandardError
58
67
 
68
+ # 引发异常的 rvdata2 文件路径
69
+ #
70
+ # @return [String]
71
+ attr_reader :rvdata2_path
72
+
73
+ # 初始化 Rvdata2FileError
74
+ #
59
75
  # @param msg [String] 异常信息
60
76
  # @param rvdata2_path [String] 引发异常的 rvdata2 文件路径
77
+ #
61
78
  # @return [Rvdata2DirError]
62
79
  def initialize(msg = '', rvdata2_path)
63
80
  super(msg)
64
81
  @rvdata2_path = rvdata2_path
65
82
  end
66
-
67
- # 引发异常的 rvdata2 文件路径
68
- #
69
- # @return [String]
70
- attr_reader :rvdata2_path
71
83
  end
72
84
 
73
85
  # 用来处理 RPG 模块下 JSON 文件损坏的异常
74
86
  class RPGJsonFileError < StandardError
75
87
 
88
+ # 引发异常的 json 文件路径
89
+ #
90
+ # @return [String]
91
+ attr_reader :json_path
92
+
93
+ # 初始化 RPGJsonFileError
94
+ #
76
95
  # @param msg [String] 异常信息
77
96
  # @param json_path [String] 引发异常的 json 文件路径
97
+ #
78
98
  # @return [RPGJsonFileError]
79
99
  def initialize(msg = '', json_path)
80
100
  super(msg)
81
101
  @json_path = json_path
82
102
  end
103
+ end
104
+
105
+ # 用来处理 R3EXS 模块下 JSON 文件损坏的异常
106
+ class R3EXSJsonFileError < StandardError
83
107
 
84
108
  # 引发异常的 json 文件路径
85
109
  #
86
110
  # @return [String]
87
111
  attr_reader :json_path
88
- end
89
-
90
- # 用来处理 R3EXS 模块下 JSON 文件损坏的异常
91
- class R3EXSJsonFileError < StandardError
92
112
 
113
+ # 初始化 R3EXSJsonFileError
114
+ #
93
115
  # @param msg [String] 异常信息
94
116
  # @param json_path [String] 引发异常的 json 文件路径
117
+ #
95
118
  # @return [R3EXSJsonFileError]
96
119
  def initialize(msg = '', json_path)
97
120
  super(msg)
98
121
  @json_path = json_path
99
122
  end
100
-
101
- # 引发异常的 json 文件路径
102
- #
103
- # @return [String]
104
- attr_reader :json_path
105
123
  end
106
124
 
107
125
  # 用来处理模块名错误的异常
108
126
  class ModuleNameError < ArgumentError
109
127
 
128
+ # 引发异常的模块名
129
+ #
130
+ # @return [Symbol]
131
+ attr_reader :module_name
132
+
133
+ # 初始化 ModuleNameError
134
+ #
110
135
  # @param msg [String] 异常信息
111
136
  # @param module_name [Symbol] 引发异常的模块名
137
+ #
112
138
  # @return [ModuleNameError]
113
139
  def initialize(msg = '', module_name)
114
140
  super(msg)
115
141
  @module_name = module_name
116
142
  end
117
-
118
- # 引发异常的模块名
119
- #
120
- # @return [Symbol]
121
- attr_reader :module_name
122
143
  end
123
144
 
124
145
  # 用来处理文件名错误的异常
125
146
  class FileBaseNameError < ArgumentError
126
147
 
148
+ # 引发异常的文件名
149
+ #
150
+ # @return [String]
151
+ attr_reader :filebasename
152
+
153
+ # 初始化 FileBaseNameError
154
+ #
127
155
  # @param msg [String] 异常信息
128
156
  # @param filebasename [String] 引发异常的文件名
157
+ #
129
158
  # @return [FileBaseNameError]
130
159
  def initialize(msg = '', filebasename)
131
160
  super(msg)
132
161
  @filebasename = filebasename
133
162
  end
134
-
135
- # 引发异常的文件名
136
- #
137
- # @return [String]
138
- attr_reader :filebasename
139
163
  end
140
164
 
141
165
  # 用来处理 *.rvdata2 文件目录不存在的异常
142
166
  class Rvdata2DirError < IOError
143
167
 
168
+ # 引发异常的 *.rvdata2 文件目录
169
+ #
170
+ # @return [String]
171
+ attr_reader :rvdata2_dir
172
+
173
+ # 初始化 Rvdata2DirError
174
+ #
144
175
  # @param msg [String] 异常信息
145
176
  # @param rvdata2_dir [String] 引发异常的 *.rvdata2 文件目录
177
+ #
146
178
  # @return [Rvdata2DirError]
147
179
  def initialize(msg = '', rvdata2_dir)
148
180
  super(msg)
149
181
  @rvdata2_dir = rvdata2_dir
150
182
  end
151
-
152
- # 引发异常的 *.rvdata2 文件目录
153
- #
154
- # @return [String]
155
- attr_reader :rvdata2_dir
156
183
  end
157
184
 
158
185
  # 用来处理 *.json 文件目录不存在的异常
159
186
  class JsonDirError < IOError
160
187
 
188
+ # 引发异常的 *.json 文件目录
189
+ #
190
+ # @return [String]
191
+ attr_reader :json_dir
192
+
193
+ # 初始化 JsonDirError
194
+ #
161
195
  # @param msg [String] 异常信息
162
196
  # @param json_dir [String] 引发异常的 *.json 文件目录
197
+ #
163
198
  # @return [JsonDirError]
164
199
  def initialize(msg = '', json_dir)
165
200
  super(msg)
166
201
  @json_dir = json_dir
167
202
  end
168
-
169
- # 引发异常的 *.json 文件目录
170
- #
171
- # @return [String]
172
- attr_reader :json_dir
173
203
  end
174
204
 
175
205
  # 用来处理 Scripts_info.json 文件不存在的异常
176
206
  class ScriptsInfoPathError < IOError
177
207
 
208
+ # 引发异常的 Scripts_info.json 文件路径
209
+ #
210
+ # @return [String]
211
+ attr_reader :scripts_info_path
212
+
213
+ # 初始化 ScriptsInfoPathError
214
+ #
178
215
  # @param msg [String] 异常信息
179
216
  # @param scripts_info_path [String] 引发异常的 Scripts_info.json 文件路径
217
+ #
180
218
  # @return [ScriptsInfoPathError]
181
219
  def initialize(msg = '', scripts_info_path)
182
220
  super(msg)
183
221
  @scripts_info_path = scripts_info_path
184
222
  end
185
-
186
- # 引发异常的 Scripts_info.json 文件路径
187
- #
188
- # @return [String]
189
- attr_reader :scripts_info_path
190
223
  end
191
224
 
192
225
  # 用来处理 ManualTransFile.json 文件不存在的异常
193
226
  class ManualTransFilePathError < IOError
194
227
 
228
+ # 引发异常的 ManualTransFile.json 文件路径
229
+ #
230
+ # @return [String]
231
+ attr_reader :manualtransfile_path
232
+
233
+ # 初始化 ManualTransFilePathError
234
+ #
195
235
  # @param msg [String] 异常信息
196
236
  # @param manualtransfile_path [String] 引发异常的 ManualTransFile.json 文件路径
237
+ #
197
238
  # @return [ManualTransFilePathError]
198
239
  def initialize(msg = '', manualtransfile_path)
199
240
  super(msg)
200
241
  @manualtransfile_path = manualtransfile_path
201
242
  end
202
-
203
- # 引发异常的 ManualTransFile.json 文件路径
204
- #
205
- # @return [String]
206
- attr_reader :manualtransfile_path
207
243
  end
208
244
 
209
245
  end
@@ -3,7 +3,6 @@
3
3
  require 'zlib'
4
4
  require_relative 'ast'
5
5
  require_relative 'utils'
6
- require_relative 'RGSS3_R3EXS'
7
6
 
8
7
  module R3EXS
9
8
 
@@ -3,7 +3,6 @@
3
3
  require 'zlib'
4
4
  require_relative 'ast'
5
5
  require_relative 'utils'
6
- require_relative 'RGSS3_R3EXS'
7
6
 
8
7
  module R3EXS
9
8
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'zlib'
4
4
  require_relative 'utils'
5
- require_relative 'RGSS3_R3EXS'
6
5
 
7
6
  module R3EXS
8
7
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'zlib'
4
4
  require_relative 'utils'
5
- require_relative 'RGSS3_R3EXS'
6
5
 
7
6
  module R3EXS
8
7
 
@@ -10,6 +9,7 @@ module R3EXS
10
9
  #
11
10
  # @param scripts [Array<Object>] 待转换的 Script 对象数组
12
11
  # @param output_dir [Pathname] 输出目录
12
+ #
13
13
  # @return [void]
14
14
  def R3EXS.scripts_rb(scripts, output_dir)
15
15
  output_dir.mkpath unless output_dir.exist?
@@ -38,6 +38,7 @@ module R3EXS
38
38
  # @param output_dir [Pathname] 输出目录
39
39
  # @param complete [Boolean] 是否序列化所有内容
40
40
  # @param with_notes [Boolean] 是否包含备注
41
+ #
41
42
  # @return [void]
42
43
  def R3EXS.commonevents_json(commonevents, output_dir, complete, with_notes)
43
44
  full_dir = output_dir.join('CommonEvents')
data/lib/R3EXS/utils.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'oj'
4
+ require_relative 'RGSS3'
4
5
  require_relative 'RGSS3_R3EXS'
5
6
 
6
7
  module R3EXS
@@ -207,7 +208,7 @@ module R3EXS
207
208
  |--[int:3(Game Data)]--|
208
209
  | |--[int:5(Character)]---[int:{-1:Player, 0:This Event, 1:EV001, ...}]---[int:{0:Map X, 1:Map Y, 2:Direction, 3:Screen X ,4:Screen Y}]---END
209
210
  | |
210
- | |--[int:6(Party)]---[int:{0~7}(Member ID)]---[int:0]---END('s Actor ID)
211
+ | |--[int:6(Party)]---[int:{0~7}(Member ID)]---[int:0]---END
211
212
  | |
212
213
  | |--[int:7(Other)]---[int:{0(Map ID), 1(Party Members), 2(Gold), 3(Steps), 4(Play Time), 5(Timer), 6(Save Count), 7(Battle Count)}]---[int:0]---END
213
214
  |
@@ -320,7 +321,7 @@ module R3EXS
320
321
  | |
321
322
  [int:{0:This Event, 1:EV001, ...}]----------|--[int:1(Designation with Variables)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]--|--[int:{0:Retain, 2:Down, 4:Left, 6:Right, 8:Up}(Direction)]---END
322
323
  | |
323
- |--[int:2(Exchange with Another Event)]---[int(Exchanged Event ID)]---[int:0]----------------------------------------- |
324
+ |--[int:2(Exchange with Another Event)]---[int(Exchanged Event ID)]---[int:0]-------------------------------------------|
324
325
  =end
325
326
  203 => 'SetEventLocation',
326
327
 
@@ -1060,6 +1061,7 @@ module R3EXS
1060
1061
  #
1061
1062
  # @param object [Object] 待序列化的对象
1062
1063
  # @param output_file [Pathname] 输出文件路径
1064
+ #
1063
1065
  # @return [void]
1064
1066
  def Utils.object_json(object, output_file)
1065
1067
  output_file.dirname.mkpath unless output_file.dirname.exist?
@@ -1070,6 +1072,7 @@ module R3EXS
1070
1072
  #
1071
1073
  # @param object [Object] 待序列化的对象
1072
1074
  # @param output_file [Pathname] 输出文件路径
1075
+ #
1073
1076
  # @return [void]
1074
1077
  def Utils.object_rvdata2(object, output_file)
1075
1078
  output_file.dirname.mkpath unless output_file.dirname.exist?
data/lib/R3EXS/version.rb CHANGED
@@ -3,5 +3,5 @@
3
3
  module R3EXS
4
4
 
5
5
  # 版本号
6
- VERSION = '1.1.0'
6
+ VERSION = '1.1.1'
7
7
  end
data/lib/R3EXS.rb CHANGED
@@ -8,5 +8,6 @@ module R3EXS
8
8
  require_relative 'R3EXS/json_rvdata2'
9
9
  require_relative 'R3EXS/extract_strings'
10
10
  require_relative 'R3EXS/inject_strings'
11
- require_relative 'R3EXS/rgss3a_rvdata2.so'
11
+
12
+ require_relative 'R3EXS/R3EXS' # C extension
12
13
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: R3EXS
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LuoTat
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 1.2.9
32
+ version: 1.3.0
33
33
  type: :development
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 1.2.9
39
+ version: 1.3.0
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: yard
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -71,14 +71,14 @@ dependencies:
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 1.3.16
74
+ version: 1.3.17
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 1.3.16
81
+ version: 1.3.17
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: gli
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -111,18 +111,18 @@ email: LuoTat.s@gmail.com
111
111
  executables:
112
112
  - R3EXS
113
113
  extensions:
114
- - "./ext/rgss3a_rvdata2/extconf.rb"
114
+ - "./ext/R3EXS/extconf.rb"
115
115
  extra_rdoc_files: []
116
116
  files:
117
- - "./ext/rgss3a_rvdata2/extconf.rb"
117
+ - "./ext/R3EXS/extconf.rb"
118
118
  - ".yardopts"
119
119
  - CHANGELOG.md
120
120
  - LICENSE
121
121
  - README.md
122
122
  - README_EN.md
123
123
  - bin/R3EXS
124
- - ext/rgss3a_rvdata2/extconf.rb
125
- - ext/rgss3a_rvdata2/rgss3a_rvdata2.c
124
+ - ext/R3EXS/R3EXS.c
125
+ - ext/R3EXS/extconf.rb
126
126
  - lib/R3EXS.rb
127
127
  - lib/R3EXS/RGSS3.rb
128
128
  - lib/R3EXS/RGSS3_R3EXS.rb
@@ -145,7 +145,6 @@ metadata:
145
145
  rdoc_options: []
146
146
  require_paths:
147
147
  - lib
148
- - lib
149
148
  required_ruby_version: !ruby/object:Gem::Requirement
150
149
  requirements:
151
150
  - - ">="
@@ -157,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
156
  - !ruby/object:Gem::Version
158
157
  version: '0'
159
158
  requirements: []
160
- rubygems_version: 3.6.7
159
+ rubygems_version: 3.7.0
161
160
  specification_version: 4
162
161
  summary: A tool for extracting and translating strings from the RGSS3 game engine
163
162
  test_files: []
@@ -1,3 +0,0 @@
1
- require 'mkmf'
2
-
3
- create_makefile('R3EXS/rgss3a_rvdata2')