Class: Definition
- Inherits:
-
Object
- Object
- Definition
- Defined in:
- lib/aml/definition.rb
Instance Method Summary collapse
- #add(parse, scope = false, add_bundle = true, add_mixin = true, add_variable = true) ⇒ Object
- #bundles ⇒ Object
- #camelCase(value) ⇒ Object
-
#initialize(parse, scope = false, add_bundle = true, add_mixin = true, add_variable = true) ⇒ Definition
constructor
A new instance of Definition.
- #mixin(name, bundle = false) ⇒ Object
- #mixins ⇒ Object
- #mixins_of(bundle = false) ⇒ Object
- #variable(name, line, bundle = false) ⇒ Object
- #variables ⇒ Object
Constructor Details
#initialize(parse, scope = false, add_bundle = true, add_mixin = true, add_variable = true) ⇒ Definition
Returns a new instance of Definition.
12 13 14 15 16 17 |
# File 'lib/aml/definition.rb', line 12 def initialize(parse,scope=false,add_bundle=true,add_mixin=true,add_variable=true) @bundle = {} @mixin = {} @variable = {} add(parse,scope,add_bundle,add_mixin,add_variable) end |
Instance Method Details
#add(parse, scope = false, add_bundle = true, add_mixin = true, add_variable = true) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/aml/definition.rb', line 18 def add(parse,scope=false,add_bundle=true,add_mixin=true,add_variable=true) #define bundles parse[:line].select{|k,v| k[:type] == :method or k[:type] == :partial or k[:type] == :mixin}.each do |bundle| @bundle[bundle[:bundle]] = camelCase(bundle[:bundle]) if @bundle.has_key?(bundle[:bundle]) == false and bundle[:bundle] != false end if add_bundle #define mixins mixin_def = parse[:line].reject{|k,v| k[:type] != :mixin_def} mixin_end = parse[:line].reject{|k,v| k[:type] != :mixin_end} if(mixin_def.count == mixin_end.count) mixin_def.each_with_index do |mixin,index| mixin[:bundle] = scope if scope @mixin[mixin[:bundle]] = {} if @mixin.has_key?(mixin[:bundle]) == false @mixin[mixin[:bundle]][mixin[:name]] = {} if @mixin[mixin[:bundle]].has_key?(mixin[:name]) == false @mixin[mixin[:bundle]][mixin[:name]] = { :attribute => mixin[:attributes], :structure => parse[:line].reject{|k,v| k[:number].between?(mixin[:number]+1,mixin_end[index][:number]-1) == false} } @mixin[mixin[:bundle]][mixin[:name]][:structure].each do |line| line[:index]-=1 end parse[:line] = parse[:line].reject{|k,v| k[:number].between?(mixin[:number],mixin_end[index][:number])} end end if add_mixin #define variables variable = parse[:line].reject{|k,v| k[:type] != :variable_def} variable.each do |var| var[:bundle] = scope if scope @variable[var[:bundle]] = {} if @variable.has_key?(var[:bundle]) == false @variable[var[:bundle]][var[:name]] = {} if @variable[var[:bundle]].has_key?(var[:name]) == false @variable[var[:bundle]][var[:name]][var[:number]] = var[:value] end if add_variable end |
#bundles ⇒ Object
53 54 55 |
# File 'lib/aml/definition.rb', line 53 def bundles @bundle end |
#camelCase(value) ⇒ Object
50 51 52 |
# File 'lib/aml/definition.rb', line 50 def camelCase(value) value.split('-').each{|i|i.capitalize!}.join if value != false end |
#mixin(name, bundle = false) ⇒ Object
68 69 70 |
# File 'lib/aml/definition.rb', line 68 def mixin(name,bundle=false) @mixin[bundle].select{|mixin|mixin==name}.first[1] if(@mixin.has_key?(bundle) and @mixin[bundle].has_key?(name)) end |
#mixins ⇒ Object
62 63 64 |
# File 'lib/aml/definition.rb', line 62 def mixins @mixin end |
#mixins_of(bundle = false) ⇒ Object
65 66 67 |
# File 'lib/aml/definition.rb', line 65 def mixins_of(bundle=false) @mixin[bundle] end |
#variable(name, line, bundle = false) ⇒ Object
59 60 61 |
# File 'lib/aml/definition.rb', line 59 def variable(name,line,bundle=false) @variable[bundle].select{|variable| variable == name}.first[1].select{|line_number,value| line_number <= line}.values.last if (@variable.has_key?(bundle) and @variable[bundle].has_key?(name)) end |
#variables ⇒ Object
56 57 58 |
# File 'lib/aml/definition.rb', line 56 def variables @variable end |