class Hsss::COutput
Constants
- EXT
Attributes
count_name[RW]
hashes_struct[RW]
iter_macro_name[RW]
names_struct[RW]
row_struct_name[RW]
scripts_struct[RW]
struct_name[RW]
Public Class Methods
new(files, opt={})
click to toggle source
# File lib/hsss.rb, line 29 def initialize(files, opt={}) @scripts={} names = { struct_name: DEFAULT_STRUCT_NAME, row_struct_name: DEFAULT_ROW_STRUCT_NAME, hashes_struct: DEFAULT_HASHES_NAME, names_struct: DEFAULT_NAMES_NAME, scripts_struct: DEFAULT_SCRIPTS_NAME, count_name: DEFAULT_COUNT_NAME, iter_macro_name: DEFAULT_ITER_MACRO_NAME} names.each do |var, default| send "#{var}=", opt[var]!=false ? opt[var] || cased_prefix(opt[:prefix], default) : false end @static=opt[:no_static] ? "" : "static " @header_only = opt[:header_only] @data_only = opt[:data_only] @include_count = !opt[:skip_count] @include_iter_macro = !opt[:skip_each] @header_guard = opt[:header_guard] || "LUA_SCRIPTS_H" @header_guard = false if @header_guard.length == 0 @include_hash = !!hashes_struct (Array === files ? files : [ files ]).each do |f| begin file_contents = IO.read f if opt[:no_luac] or check_script(f) @scripts[File.basename(f, ".#{EXT}") .to_sym]=file_contents end rescue Errno::ENOENT => e STDERR.puts "Failed to open file #{f}" @failed = true end end @struct=[] @name_table=[] @script_table=[] @hashed_table=[] @scripts.sort_by {|k,v| k}.each do |v| name=v.first script=v.last @name_table << name str=[] for l in script.lines do cmt=l.match /^--(.*)/ break unless cmt str << " //#{cmt[1]}" end str << " #{script_name_line(name)}\n" @struct << str.join("\n") @script_table << script_string(name, script) @hashed_table << Digest::SHA1.hexdigest(script) if @include_hash end end
Public Instance Methods
cased_prefix(prefix, name)
click to toggle source
# File lib/hsss.rb, line 18 def cased_prefix(prefix, name) if name if name.upcase == name and name.downcase != name name = "#{(prefix || DEFAULT_PREFIX).upcase}#{name}" else name = "#{(prefix || DEFAULT_PREFIX)}#{name}" end end name end
check_script(path)
click to toggle source
# File lib/hsss.rb, line 89 def check_script(path) ret = system "luac -p #{path}" @failed = true unless ret ret end
cquote(str, line_start="")
click to toggle source
# File lib/hsss.rb, line 95 def cquote(str, line_start="") out=[] if str.length == 0 return "#{line_start}\"\"" #empty string end str.each_line do |l| l.gsub!("\\", '\\\\\\') #escape backslashes l.sub! "\n", "\\n" l.gsub! '"', '\"' l.gsub! /^(.*)$/, "#{line_start}\"\\1\"" out << l end out.join "\n" end
failed?()
click to toggle source
# File lib/hsss.rb, line 110 def failed? @failed end