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


596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
# File 'lib/a-commons.rb', line 596

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



667
668
669
670
671
672
673
# File 'lib/a-commons.rb', line 667

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



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
582
583
584
585
586
587
# File 'lib/a-commons.rb', line 541

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


613
614
615
616
617
618
619
620
621
622
623
624
# File 'lib/a-commons.rb', line 613

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


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
660
661
662
663
664
665
# File 'lib/a-commons.rb', line 626

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