Sha256: 8d901c252ad50020ba4979d8fd48c7bb06a98d99118b746c0da16c8604c8c83f

Contents?: true

Size: 1.42 KB

Versions: 1

Compression:

Stored size: 1.42 KB

Contents

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

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]
        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
  include Fathom
  # TODO: Is there anything you want to do to run this file on its own?
  # YAMLImport.new
end

Version data entries

1 entries across 1 versions & 1 rubygems

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