config.rb 918 Bytes
class DsAdmin::Storage::Config
  attr_accessor :model

  def initialize(conf_data)
    @config = conf_data
  end

  def con(storage)
    @config[storage.config_key][:con]
  end

  def query(storage)
    @config[storage.config_key][@model.config_key][:query]
  end

  def map(storage)
    @config[storage.config_key][@model.config_key][:map]
  end

  ##
  # replace special patterns within config strings with data
  # given by the data hash param. These patterns also allow to send
  # a message to the replaces data e.g. for some kind of subtitution.
  #
  def eval_pattern(pattern, data = {})
    scan_exp = /([^#]*)(#\{(:[^}|]+)(\|([^}]*))?\})?/

    result = String.new
    pattern.scan(scan_exp) do |m|
      key = m[2][1..m[2].length].to_sym if m[2]
      val = data[key] if data[key]
      val = eval('"' + val + '".send ' + m[4]) if val && m[4]

      result += m[0] + (val || "")
    end
    result
  end
end