module Kilza::Class

Represents one single object class

Attributes

imports[RW]

Array with all class dependecies Specific for each language

name[RW]

Class name

properties[RW]

Array with all class properties

Public Class Methods

new(name) click to toggle source

Initializes a Class object

@param name [String] Class Name

# File lib/kilza/class.rb, line 17
def initialize(name)
  @name = Kilza.normalize(name).capitalize
  @properties = []
  @imports = []
end

Public Instance Methods

code(lang, file_name) click to toggle source

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/kilza/class.rb, line 46
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.capitalize + '.' + file_name
  s
end
push(property) click to toggle source

Adds a new property

@param property [Kilza::Property] Property to include

# File lib/kilza/class.rb, line 26
def push(property)
  index = @properties.index(property)
  if !index.nil?
    current = @properties[index]
    @properties[index] = update(current, property)
  else
    @properties.push(property)
  end
end
sources() click to toggle source
# File lib/kilza/class.rb, line 36
def sources
  fail 'It should be implemented'
end
to_s() click to toggle source
# File lib/kilza/class.rb, line 59
def to_s
  properties = []
  @properties.each { |p| properties.push(p.to_s) }
  {
    name: @name,
    imports: @imports,
    properties: properties
  }.to_s
end

Protected Instance Methods

update(src, dst) click to toggle source

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/kilza/class.rb, line 78
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