class Definition
Public Class Methods
new(file, type, bundle=false)
click to toggle source
# File lib/aml/Definition.rb, line 3 def initialize(file, type, bundle=false) @log = [] @definition = {} @definition[:file] = file @definition[:type] = type @definition[:bundle] = bundle @definition[:hash] = [] @definition[:variable] = {} @definition[:mixin] = {} number = 0 begin parse = Parse.new(bundle) # Remove Comment Line(s) File.open(file).read.gsub(/%!--[^%]*--%$|$(\s{1,})?[^%]\/\/.*$/,'').each_line do |line| number+=1 # Remove Empty Lines add_line(parse.line(line,number)) end process_variable_definition process_mixin_definition rescue Exception => e @log << {:fail=>true, :file=>@definition[:file], :type=>@definition[:type], :bundle=> bundle, :message=>'file does not exist.'} false end end
Public Instance Methods
log()
click to toggle source
# File lib/aml/Definition.rb, line 28 def log @log end
self()
click to toggle source
# File lib/aml/Definition.rb, line 31 def self @definition end
Private Instance Methods
add_line(line)
click to toggle source
# File lib/aml/Definition.rb, line 35 def add_line(line) @definition[:hash] << line if line[:type] != :empty end
process_mixin_definition()
click to toggle source
Process Mixin Definition
(Local)
# File lib/aml/Definition.rb, line 49 def process_mixin_definition mixin_definition = @definition[:hash].reject{|k|k[:type] != :mixin_definition} mixin_definition_end = @definition[:hash].reject{|k|k[:type] != :mixin_end} if mixin_definition.count == mixin_definition_end.count mixin_definition.each_with_index do |mixin,index| @definition[:mixin][@definition[:bundle]] = {} if @definition[:mixin].has_key?(@definition[:bundle]) == false if @definition[:mixin][@definition[:bundle]].has_key?(mixin[:name]) == false @definition[:mixin][@definition[:bundle]][mixin[:name]] = { :attribute => mixin[:attribute], :structure => @definition[:hash].reject{|k,v| k[:number].between?(mixin[:number]+1,mixin_definition_end[index][:number]-1) == false} } @definition[:mixin][@definition[:bundle]][mixin[:name]][:structure].each do |line| line[:index]-=1 end else @log << {:fail=>false, :file=>@definition[:file], :bundle=>@definition[:bundle], :line=>mixin[:number], :message=>"#{mixin[:name]} duplicate mixin definition; ignored."} end @definition[:hash] = @definition[:hash].reject{|k,v| k[:number].between?(mixin[:number],mixin_definition_end[index][:number])} end end end
process_variable_definition()
click to toggle source
Process Variable Definition
(Local)
# File lib/aml/Definition.rb, line 39 def process_variable_definition @definition[:hash].reject{|k,v| k[:type] != :variable_definition}.each do |variable| variable[:bundle] = variable[:bundle].to_s @definition[:variable][variable[:bundle]] = {} if @definition[:variable].has_key?(variable[:bundle]) == false @definition[:variable][variable[:bundle]][variable[:name]] = {} if @definition[:variable][variable[:bundle]].has_key?(variable[:name]) == false @definition[:variable][variable[:bundle]][variable[:name]][variable[:number]] = variable[:value] end @definition[:hash] = @definition[:hash].reject{|k,v| k[:type] == :variable_definition} end