| 
            
            
             
              class Object   def getLiteral     if (self.is_a?(String))       str = self.clone       str.removeBeginning("@")       str.addQuotes       return str     end   end end class String   def addSlashes     self.gsub!(/(["'\\])/) {"\\" + $&}   end   def addQuotes     self.addSlashes     self.insert(0, "\"")     self.concat("\"")   end   def beginsWith(str)     strlen = str.length     if self.length < strlen       return false     end     if self[0, strlen] == str       return true     else       return false     end   end   def removeBeginning(str)     self[0, str.length] = '' if self.beginsWith(str)   end   def trim     return if (self.empty?)     while self[0, 1] == " " or self[0, 1] == "\t"       self[0, 1] = ""     end     while self[-1, 1] == " "       self[-1, 1] = ""     end   end end
  #============================================================================== # ■ Exporter #------------------------------------------------------------------------------ #  处理RMXP数据导出的类。 #==============================================================================
  class Exporter   #--------------------------------------------------------------------------   # ● 常量   #--------------------------------------------------------------------------   AS_FOLDER = "FlashProject/RXData/"   #--------------------------------------------------------------------------   # ● 定义实例变量   #--------------------------------------------------------------------------   attr_accessor :data   attr_reader   :rxdataFile   attr_reader   :as3File   attr_reader   :clsName   attr_reader   :file   #--------------------------------------------------------------------------   # ● 初始化对像   #     rxdataFile : rxdata文件名   #--------------------------------------------------------------------------   def initialize(rxdataFileName)     @clsName = rxdataFileName     @clsName = "MapInfo" if (rxdataFileName == "MapInfos")          @rxdataFile = "data/" + rxdataFileName + ".rxdata"     @as3File = AS_FOLDER + @clsName + ".as"     @data = load_data(@rxdataFile)     @variables = []   end   #--------------------------------------------------------------------------   # ● 导出到AS文件   #--------------------------------------------------------------------------   def export     @file = File.open(@as3File, "w")     @file.write("//这些代码是系统自动生成的,请不要修改这些代码\n")     @file.write("package RXData {\n")     @file.write("\tpublic dynamic class #{@clsName} {\n")          @file.write("\t\tpublic function #{@clsName}() {\n")     exportObj(@data, "\t\t\tthis")     @file.write("\t\t}\n\t}\n}")     @file.close()   end   #--------------------------------------------------------------------------   # ● 导出数组或对象   #--------------------------------------------------------------------------   def exportObj(obj, scrStart)     head = scrStart.clone     head.trim     if obj.is_a?(NilClass)       return     elsif obj.is_a?(Hash)       @file.write("#{scrStart} = {};\n") if (head != "this")       for keyName in obj.keys         exportObj(obj[keyName], "#{scrStart}[#{keyName}]")       end     elsif obj.is_a?(Array)       @file.write("#{scrStart} = [];\n") if (head != "this")       i = 0       for value in obj         exportObj(value, "#{scrStart}[#{i}]")         i += 1       end     elsif obj.is_a?(Numeric)       value = obj.to_s       @file.write("#{scrStart} = #{value};\n")     elsif obj.is_a?(String)       obj.addQuotes       @file.write("#{scrStart} = #{obj};\n")     elsif obj.is_a?(TrueClass) or obj.is_a?(FalseClass)       value = obj.to_s       @file.write("#{scrStart} = #{value};\n")     else       # 导出对象的全部属性       type = obj.type       @file.write("#{scrStart} = {}; // #{type}\n") if (head != "this")       vars = obj.instance_variables       for varName in vars         propName = varName.clone         propName.removeBeginning("@")         exportObj(obj.instance_variable_get(varName), "#{scrStart}.#{propName}")       end     end   end end #============================================================================== # ** Main #------------------------------------------------------------------------------ #  This script is written by Octopus. #==============================================================================
  #-------------------------------------------------------------------------- # ● 打开所有rxdata文件 #-------------------------------------------------------------------------- files = Dir.glob("Data/*.rxdata") exporters = {} for file in files   file[/^Data\//] = '';   file[/\.rxdata$/] = '';   exporters[file] = Exporter.new(file) end
  #-------------------------------------------------------------------------- # ● 生成 ActionScript3 代码文件 #-------------------------------------------------------------------------- for exporter in exporters   exporter[1].export() end
  exit             
                       |