module Jaspion::Kilza::Class
Represents one single object class
Attributes
Class
name
Array
with all class properties
Public Class Methods
Protected Class Methods
Removes everything except numbers and letters and removes all _ at the beginning and capitalizes the first character
@param str [String] string to be cleaned
@return [String] cleaned string
# File lib/jaspion/kilza/class.rb, line 113 def self.normalize(str) return if str.nil? str = '_' + str if str[0].number? str = str.gsub(/[^a-zA-Z0-9]/, '') str = str.gsub(/_*(.+)/) { $1 } str[0] = str[0].capitalize str end
Public Instance Methods
Returns the #Source object of this Class
.
@param lang [String] Language
name (java, objc, …) @param file_name [String] Source
file name
@return [Kilza::Source] Source
object of this Class
# File lib/jaspion/kilza/class.rb, line 48 def code(lang, file_name) cur_path = File.expand_path(__FILE__) erb_path = File.join(File.dirname(cur_path), 'language', lang) path = File.join(erb_path, file_name + '.erb') eruby = Erubis::Eruby.new(File.read(path)) s = Kilza::Source.new s.source = eruby.result(binding) s.file_name = @name + '.' + file_name s end
Removes an new import statement
@param import [String|Array] The statement to be removed
# File lib/jaspion/kilza/class.rb, line 84 def delete_import(import) import = [import] if import.is_a? String i = @imports.index(import) @imports.delete_at(i) unless i.nil? end
# File lib/jaspion/kilza/class.rb, line 21 def imports @imports.sort.separate.flatten end
Adds a new property
@param property [Kilza::Property] Property
to include
# File lib/jaspion/kilza/class.rb, line 28 def push(property) index = @properties.index(property) unless index.nil? current = @properties[index] @properties[index] = update(current, property) else @properties.push(property) end end
Adds an new import statement
@param import [String|Array] The whole statement that has to be printted
It can be an Array
# File lib/jaspion/kilza/class.rb, line 75 def push_import(import) import = [import] if import.is_a? String index = @imports.index(import) @imports.push(import) if index.nil? end
# File lib/jaspion/kilza/class.rb, line 38 def sources fail 'It should be implemented' end
# File lib/jaspion/kilza/class.rb, line 61 def to_s properties = [] @properties.each { |p| properties.push(p.to_s) } { name: @name, imports: @imports, properties: properties }.to_s end
Protected Instance Methods
Compares two properties and fill the src property with relevant dst property values. If src.type is nilclass and dst.type not, replaces it with dst.type
@param property [Kilza::Property] Property
to include
@return [Kilza::Property] src property with new values
# File lib/jaspion/kilza/class.rb, line 99 def update(src, dst) src.type = dst.type if src.null? && !dst.null? src.original_type = dst.original_type if src.null? && !dst.null? src.array = dst.array unless src.array? src.key = dst.key unless src.key src end