diff options
Diffstat (limited to 'lib/oxidized')
| -rw-r--r-- | lib/oxidized/source/csv.rb | 8 | ||||
| -rw-r--r-- | lib/oxidized/source/http.rb | 6 | ||||
| -rw-r--r-- | lib/oxidized/source/source.rb | 12 | ||||
| -rw-r--r-- | lib/oxidized/source/sql.rb | 4 | 
4 files changed, 24 insertions, 6 deletions
| diff --git a/lib/oxidized/source/csv.rb b/lib/oxidized/source/csv.rb index a0ce848..be5c4a6 100644 --- a/lib/oxidized/source/csv.rb +++ b/lib/oxidized/source/csv.rb @@ -20,7 +20,7 @@ class CSV < Source      nodes = []      open(File.expand_path @cfg.file).each_line do |line|        next if line.match(/^\s*#/) -      data  = line.chomp.split @cfg.delimiter +      data  = line.chomp.split(@cfg.delimiter, -1)        next if data.empty?        # map node parameters        keys = {} @@ -29,9 +29,11 @@ class CSV < Source        end        keys[:model] = map_model keys[:model] if keys.key? :model -      # map node specific vars, empty value is considered as nil +      # map node specific vars        vars = {} -      @cfg.vars_map.each { |key, position| vars[key.to_sym] = data[position].to_s.empty? ? nil : data[position] } +      @cfg.vars_map.each do |key, position| +        vars[key.to_sym] = node_var_interpolate data[position] +      end        keys[:vars] = vars unless vars.empty?        nodes << keys diff --git a/lib/oxidized/source/http.rb b/lib/oxidized/source/http.rb index 93361a2..38387ad 100644 --- a/lib/oxidized/source/http.rb +++ b/lib/oxidized/source/http.rb @@ -43,9 +43,11 @@ class HTTP < Source        end        keys[:model] = map_model keys[:model] if keys.key? :model -      # map node specific vars, empty value is considered as nil +      # map node specific vars        vars = {} -      @cfg.vars_map.each { |key, position| vars[key.to_sym] = line[position].to_s.empty? ? nil : line[position] } +      @cfg.vars_map.each do |key, position| +        vars[key.to_sym] = node_var_interpolate line[position] +      end        keys[:vars] = vars unless vars.empty?        nodes << keys diff --git a/lib/oxidized/source/source.rb b/lib/oxidized/source/source.rb index 7862dd1..9b8bc94 100644 --- a/lib/oxidized/source/source.rb +++ b/lib/oxidized/source/source.rb @@ -1,11 +1,23 @@  module Oxidized    class Source      class NoConfig < OxidizedError; end +      def initialize        @map = (Oxidized.config.model_map or {})      end +      def map_model model        @map.has_key?(model) ? @map[model] : model      end + +    def node_var_interpolate var +       case var +       when "nil"   then nil +       when "false" then false +       when "true"  then true +       else var +       end +    end +    end  end diff --git a/lib/oxidized/source/sql.rb b/lib/oxidized/source/sql.rb index fc1caa8..ba85447 100644 --- a/lib/oxidized/source/sql.rb +++ b/lib/oxidized/source/sql.rb @@ -31,7 +31,9 @@ class SQL < Source        # map node specific vars        vars = {} -      @cfg.vars_map.each { |key, sql_column| vars[key.to_sym] = node[sql_column.to_sym] } +      @cfg.vars_map.each do |key, sql_column| +        vars[key.to_sym] = node_var_interpolate node[sql_column.to_sym] +      end        keys[:vars] = vars unless vars.empty?        nodes << keys | 
