Module: ZergXcode::Encoder
- Defined in:
- lib/zerg_xcode/file_format/encoder.rb
Overview
Writes flattened object graphs to .xcodeproj files.
Class Method Summary (collapse)
- + (Object) encode(project)
- + (Object) encode_array(array, indentation)
- + (Object) encode_hash(hash, indentation)
- + (Object) encode_indentation(indentation)
- + (Object) encode_object(object, indentation)
- + (Object) encode_value(value, indentation)
Class Method Details
+ (Object) encode(project)
13 14 15 |
# File 'lib/zerg_xcode/file_format/encoder.rb', line 13 def self.encode(project) "// !$*UTF8*$!\n" + encode_hash(project, 0) + "\n" end |
+ (Object) encode_array(array, indentation)
36 37 38 39 40 41 |
# File 'lib/zerg_xcode/file_format/encoder.rb', line 36 def self.encode_array(array, indentation) "(\n" + array.map { |value| encode_indentation(indentation + 1) + encode_object(value, indentation + 1) + ",\n" }.join + encode_indentation(indentation) + ")" end |
+ (Object) encode_hash(hash, indentation)
17 18 19 20 21 22 23 |
# File 'lib/zerg_xcode/file_format/encoder.rb', line 17 def self.encode_hash(hash, indentation) "{\n" + hash.keys.sort.map { |key| encode_indentation(indentation + 1) + encode_value(key, indentation + 1) + " = " + encode_object(hash[key], indentation + 1) + ";\n" }.join + encode_indentation(indentation) + "}" end |
+ (Object) encode_indentation(indentation)
48 49 50 |
# File 'lib/zerg_xcode/file_format/encoder.rb', line 48 def self.encode_indentation(indentation) "\t" * indentation end |
+ (Object) encode_object(object, indentation)
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/zerg_xcode/file_format/encoder.rb', line 25 def self.encode_object(object, indentation) case object when Hash encode_hash object, indentation when Array encode_array object, indentation when String encode_value object, indentation end end |
+ (Object) encode_value(value, indentation)
43 44 45 46 |
# File 'lib/zerg_xcode/file_format/encoder.rb', line 43 def self.encode_value(value, indentation) # This escapes what needs to be escaped. value.to_s.inspect end |