Module: Configurable

Included in:
AgMultiEditor, Application
Defined in:
lib/a-commons.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.properties_group(_group, _hash_source, _hash_suff = 'conf', _refresh = false) ⇒ Object

def one_line_format_as_hash(_line)

  ret = Hash.new 
end

def hash_as_one_line_format(_name, _hash) 
end


590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
# File 'lib/a-commons.rb', line 590

def Configurable.properties_group(_group, _hash_source, _hash_suff='conf', _refresh=false)
  group_key="#{_hash_suff}.#{_group}"
  @@conf_groups = Hash.new if !defined?(@@conf_groups)
  if @@conf_groups[group_key].nil? || _refresh
    @@conf_groups[group_key] = Hash.new
    glen=_group.length
    _hash_source.keys.sort.each{|k|
      if k[0..glen] == "#{_group}."
        @@conf_groups[group_key][k[glen+1..-1]]=_hash_source[k]
      elsif @@conf_groups[group_key].length > 0
        break
      end
    }
  end
  Hash.new.update(@@conf_groups[group_key])
end

Instance Method Details

#make_value(_self_context = self, _value = '') ⇒ Object



661
662
663
664
665
666
667
# File 'lib/a-commons.rb', line 661

def make_value(_self_context=self, _value='')
  value = _value.strip
  if value[0..0]=='!'
    value=_self_context.instance_eval(value[1..-1])  
  end
  value
end

#properties_file2hash(_property_file, _link_hash = nil) ⇒ Object



535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
# File 'lib/a-commons.rb', line 535

def properties_file2hash(_property_file, _link_hash=nil)
  r_hash = Hash.new
  if _property_file &&  FileTest::exist?(_property_file)
    f = File::open(_property_file,'r')
    begin
      _lines = f.readlines
      _lines.each{|_line|
        _strip_line = _line.strip
        if (_strip_line.length > 0)&&(_strip_line[0,1]!='#')
          var_plat = _line.split('::')
          if var_plat.length > 1
            if (RUBY_PLATFORM.include?(var_plat[0]))
              _line = var_plat[1]
              var_plat[2..-1].collect{|x| _line=_line+'::'+x} if var_plat.length > 2
            else
              _line = ''
            end
          end
          var_ruby_version = _line.split(':@:')
          if var_ruby_version.length > 1
            version = var_ruby_version[0]
            if (RUBY_VERSION[0..version.length-1]==version)
              _line = var_ruby_version[1]
            else
              _line = ''
            end
          end
          
          var = _line.split('=')
          if var.length > 1
            _value = var[1].strip
            var[2..-1].collect{|x| _value=_value+'='+x} if var.length > 2
            if _link_hash 
              _value = resolve_link(_value, _link_hash)
            end
            r_hash[var[0].strip]=_value
          end
        end
      }
    ensure
      f.close unless f.nil?
    end
    return r_hash      
  else
    puts 'warning--file does not exist', _property_file
  end
end


607
608
609
610
611
612
613
614
615
616
617
618
# File 'lib/a-commons.rb', line 607

def resolve_link(_value, _hash_source, _link_symbol='>>>', _add_symbol='+++')
    if _value.length > 0 
      _v, _vadd = _value.split(_add_symbol)
    else
      _v = _value
    end
    if _v.length > 3 && _v[0..2]==_link_symbol
      _v=_hash_source[_v[3..-1]] if _hash_source[_v[3..-1]]
      _v=_v+_vadd if _vadd
    end
    return _v
end


620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
# File 'lib/a-commons.rb', line 620

def resolve_properties_link(_hash_target, _hash_source, _link_symbol='>>>', _add_symbol='+++')
  loop_level_max = 10
#    _hash_adding = Hash.new
  _keys_to_extend = Array.new
  _hash_target.each{|k,value|
    loop_level = 0
    if value.length > 0
      v, vadd = value.split(_add_symbol)
    else
      v= value
    end
#      p "value=#{value} class=#{value.class}"
#      p "v=#{v} class=#{v.class}"
#      p "vadd=#{vadd}"
    while loop_level < loop_level_max && v.length > 3 && v[0..2]==_link_symbol
      if k[-1..-1]=='.'
        _keys_to_extend << k
        break
      elsif _hash_source[v[3..-1]]
        v=_hash_source[v[3..-1]]
        v=v+vadd if vadd
      else
        break
      end
      loop_level = loop_level + 1
    end
    _hash_target[k]=v
    if loop_level == loop_level_max
      raise("Link loop found for property : #{k}")
    end
  }
  _keys_to_extend.each do |k|
    v=_hash_target[k]
    g=Configurable.properties_group(v[3..-1], _hash_target)
    g.each do |key,value|
      _hash_target["#{k[0..-2]}.#{key}"]=value if !_hash_target["#{k[0..-2]}.#{key}"]
    end
    _hash_target.delete(k)
  end
end