class Udgenerator::Core
Public Class Methods
new()
click to toggle source
# File lib/udgenerator.rb, line 20 def initialize end
Public Instance Methods
capitalize(str)
click to toggle source
# File lib/udgenerator/type.rb, line 3 def capitalize(str) str[0,1].capitalize + str[1..-1] end
define(str)
click to toggle source
# File lib/udgenerator/type.rb, line 6 def define(str) "k" + capitalize(str) end
exchange(arrStr)
click to toggle source
# File lib/udgenerator/type.rb, line 58 def exchange(arrStr) Objective.new().parse(arrStr) end
fileRead(fileName)
click to toggle source
# File lib/udgenerator.rb, line 23 def fileRead(fileName) if (File.exist?(fileName)) then File.open(fileName, :encoding => Encoding::UTF_8).read.scan(/(.*)\n/).flatten else [] end end
generator(options)
click to toggle source
# File lib/udgenerator.rb, line 8 def generator(options) FileUtils.mkdir_p(options[:output]) unless FileTest.exist?(options[:output]) if options[:swift] then arrType = swift_exchange(self.fileRead(options[:input])) File.open("#{options[:output]}#{options[:file_name]}.swift", "w:UTF-8").write swift(arrType, options[:file_name], options[:auto_init]) else arrType = exchange(self.fileRead(options[:input])) File.open("#{options[:output]}#{options[:file_name]}.h", "w:UTF-8").write header(arrType, options[:file_name], options[:auto_init]) File.open("#{options[:output]}#{options[:file_name]}.m", "w:UTF-8").write method(arrType, options[:file_name], options[:auto_init]) end end
getter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 12 def getter(key, value) "- (#{value.type_name})#{key}" end
header(arrType, fileName, register)
click to toggle source
# File lib/udgenerator.rb, line 37 def header(arrType, fileName, register) result = "" arrType.each_pair{|k, v| result += interface(k, v) + "\n"} "\#import <Foundation/Foundation.h>\n\n" + imp_defines(arrType) + "\n\@interface #{fileName} : NSObject\n\n+ (instancetype)sharedManager;\n#{self.registHeader(register)}\n" + result + "\@end\n" end
impGetter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 40 def impGetter(key, value) "#{getter(key, value)} \{\n#{in_imp_getter(key, value)}\}\n" end
impSetter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 46 def impSetter(key, value) "#{setter(key, value)} \{\n#{in_imp_setter(key, value)}\}\n" end
imp_define(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 27 def imp_define(key, value) "\#define #{define(key)} #{to_nsstring(key)}\n" end
imp_defines(arrType)
click to toggle source
# File lib/udgenerator.rb, line 60 def imp_defines(arrType) result = "" arrType.each_pair{|s, d| result += imp_define(s, d)} result end
implementation(arrType)
click to toggle source
# File lib/udgenerator.rb, line 65 def implementation(arrType) result = "" arrType.each_pair{|s, d| result += impGetter(s, d) + impSetter(s, d) + "\n"} result end
in_imp_getter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 37 def in_imp_getter(key, value) " return [defaults #{value.imp_get_message}:#{define(key)}];\n" end
in_imp_setter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 43 def in_imp_setter(key, value) " [defaults #{value.imp_set_message}:#{key} forKey:#{define(key)}];\n [defaults synchronize];\n" end
init(arrType, register)
click to toggle source
# File lib/udgenerator.rb, line 53 def init(arrType, register) if (register) "- (id)init {\n self = [super init];\n if (self != nil) {\n defaults = [NSUserDefaults standardUserDefaults];\n#{registerDefaults(arrType)} }\n\n return self;\n}\n" else "- (id)init {\n self = [super init];\n if (self != nil) {\n defaults = [NSUserDefaults standardUserDefaults];\n }\n\n return self;\n}\n- (void)registerDefaults:(NSDictionary *)dict {\n [defaults registerDefaults:dict];\n}\n" end end
interface(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 24 def interface(key, value) interface_getter(key, value) + interface_setter(key, value) end
interface_getter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 15 def interface_getter(key, value) getter(key, value) + ";\n" end
interface_setter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 21 def interface_setter(key, value) setter(key, value) + ";\n" end
method(arrType, fileName, register)
click to toggle source
# File lib/udgenerator.rb, line 70 def method(arrType, fileName, register) "\#import \"#{fileName}.h\"\n\n" + "\@implementation #{fileName} {\n NSUserDefaults *defaults;\n}\n\n+ (instancetype)sharedManager {\n static #{fileName} *sharedManager_ = nil;\n static dispatch_once_t onceToken;\n dispatch_once(&onceToken, ^{\n sharedManager_ = #{fileName}.new;\n });\n\n return sharedManager_;\n}\n\n" + self.init(arrType, register) + "\n" + self.implementation(arrType) + "@end\n" end
registHeader(register)
click to toggle source
# File lib/udgenerator.rb, line 30 def registHeader(register) if (register) "" else "- (void)registerDefaults:(NSDictionary *)dict;\n" end end
registerDefaults(arrType)
click to toggle source
# File lib/udgenerator.rb, line 45 def registerDefaults(arrType) result = "" arrType.each_pair{|k, v| d = register_default(k, v) result += " "*12 + d + ",\n" if d != "" } " [defaults registerDefaults:@{\n" + result + " }];\n" end
register_default(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 30 def register_default(key, value) if (0 < value.defaultValue.length ) then "#{define(key)} : #{value.defaultValue}" else "" end end
registers(arrType, fileName)
click to toggle source
# File lib/udgenerator.rb, line 107 def registers(arrType, fileName) if (arrType.count == 0) then "[:]" else result = "" arrType.each_pair{|k, v| result += swift_register_default(k, v, fileName)} "[\n#{result} ]" end end
setter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 18 def setter(key, value) "- (void)set#{capitalize(key)}:(#{value.type_name})#{key}" end
struct(key)
click to toggle source
# File lib/udgenerator/type.rb, line 49 def struct(key) " static let #{key} = \"#{key}\"" end
structs(arrType)
click to toggle source
# File lib/udgenerator.rb, line 116 def structs(arrType) result = "" arrType.each_pair{|s, d| result += struct(s) + "\n"} result end
swift(arrType, fileName, register)
click to toggle source
# File lib/udgenerator.rb, line 77 def swift(arrType, fileName, register) "import Foundation\n\nstruct #{fileName}Register {\n#{structs(arrType)}}\n\nclass #{fileName} {" + ' class func sharedManager() -> UserDefaults { struct Static { static let instance = UserDefaults() } return Static.instance } init() { ' + swift_register_defaults(arrType, fileName, register) + ' } func defaults() -> NSUserDefaults { return NSUserDefaults.standardUserDefaults() } func set(value: AnyObject?, forKey: String) { defaults().setObject(value, forKey: forKey) defaults().synchronize() } func get(key: String) -> AnyObject? { return defaults().objectForKey(key) } ' + swift_get_sets(arrType, fileName) + "}\n" end
swift_exchange(arrStr)
click to toggle source
# File lib/udgenerator/type.rb, line 61 def swift_exchange(arrStr) Swift.new().parse(arrStr) end
swift_get_sets(arrType, fileName)
click to toggle source
# File lib/udgenerator.rb, line 121 def swift_get_sets(arrType, fileName) result = "" arrType.each_pair{|s, d| result += "\n #{swift_getter(s, d)} {\n return get(#{fileName}Register.#{s}) as! #{d.swift_type_name}\n }\n #{swift_setter(s, d)} {\n set(#{s}, forKey: #{fileName}Register.#{s})\n }\n"} result end
swift_getter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 52 def swift_getter(key, value) "func #{key}() -> #{value.swift_type_name}" end
swift_register_default(key, value, fileName)
click to toggle source
# File lib/udgenerator/type.rb, line 64 def swift_register_default(key, value, fileName) if (0 < value.swift_default_value.length) then " "*12 + "#{fileName}Register.#{key}: #{value.swift_default_value},\n" else "" end end
swift_register_defaults(arrType, fileName, register)
click to toggle source
# File lib/udgenerator.rb, line 100 def swift_register_defaults(arrType, fileName, register) if register then " defaults().registerDefaults(" + registers(arrType, fileName) + ")" else " }\n func registerDefaults(dict: [String: AnyObject]) {\n defaults().registerDefaults(dict)" end end
swift_setter(key, value)
click to toggle source
# File lib/udgenerator/type.rb, line 55 def swift_setter(key, value) "func set#{capitalize(key)}(#{key}: #{value.swift_type_name})" end
to_nsstring(str)
click to toggle source
# File lib/udgenerator/type.rb, line 9 def to_nsstring(str) '@"' + str + '"' end