Sha256: 9255a4bdf9bd81c4da0c7cbb984f625d318a658f87d8b2d25c5bcc7527f477ed

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'fathom'))
require 'open-uri'
require 'yaml'

class Fathom::YAMLImport < Import
  def import_plausible_ranges
    assert_yaml_content
    plausible_ranges = extract_plausible_ranges
    [PlausibleRange, plausible_ranges]
  end
  
  def import_data_nodes
    assert_yaml_content
    data_nodes = extract_data_nodes
    [DataNode, data_nodes]
  end
  
  protected
    def assert_yaml_content
      return @yaml_content if @yaml_content
      begin
        file_contents = open(self.content).read
        raise ArgumentError, "Unable to extract YAML data out of the contents." unless file_contents
      rescue
        file_contents = self.content
      end
        @yaml_content = YAML.load(file_contents)
    end
    
    def extract_plausible_ranges
      @yaml_content.inject([]) do |list, array|
        name, value = array.first, array.last
        if value.is_a?(Hash)
          value = OptionsHash.new(value)
          # list << value.merge(:name => name) if value[:min] and value[:max]
          list << value.merge(:name => name)
        end
        list 
      end
    end
    
    def extract_data_nodes
      @yaml_content.inject([]) do |list, array|
        name, value = array.first, array.last
        list << {:name => name, :values => value} if value.is_a?(Array)
        list 
      end
    end
end

if __FILE__ == $0
  Fathom::YAMLImport.import(:content => ARGV.first)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fathom-0.3.0 lib/fathom/import/yaml_import.rb