167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
# File 'lib/RGSS/serialize.rb', line 167
def self.scripts_to_text(dirs, src, dest, options)
formatador = Formatador.new
src_file = File.join(dirs[:data], src)
dest_file = File.join(dirs[:yaml], dest)
raise "Missing #{src}" unless File.exist?(src_file)
script_entries = load(:load_data_file, src_file)
check_time = !options[:force] && File.exist?(dest_file)
oldest_time = File.mtime(dest_file) if check_time
file_map, script_index, script_code = Hash.new(-1), [], {}
idx = 0
script_entries.each do |script|
idx += 1
magic_number, script_name, code = idx, script[1], inflate(script[2])
script_name.force_encoding("UTF-8")
if code.length > 0
filename = script_name.empty? ? 'blank' : sanitize_filename(script_name)
key = filename.upcase
value = (file_map[key] += 1)
actual_filename = filename + (value == 0 ? "" : ".#{value}") + RUBY_EXT
script_index.push([magic_number, script_name, actual_filename])
full_filename = File.join(dirs[:script], actual_filename)
script_code[full_filename] = code
check_time = false unless File.exist?(full_filename)
oldest_time = [File.mtime(full_filename), oldest_time].min if check_time
else
script_index.push([magic_number, script_name, nil])
end
end
src_time = File.mtime(src_file)
if check_time && (src_time - 1) < oldest_time
formatador.display_line("[yellow]Skipping scripts to text[/]") if $VERBOSE
else
formatador.display_line("[green]Converting scripts to text[/]") if $VERBOSE
dump(:dump_yaml_file, dest_file, script_index, src_time, options)
script_code.each { |file, code| dump(:dump_raw_file, file, code, src_time, options) }
end
end
|