Sha256: 983dc6e3c0b4ee300339cca30442c13d38c56793cf8c4ba1b07a20b43ec5757a

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

module PubliSci
  class Dataset
    module DSL

      class Instance
        include Dataset::DSL

        def initialize
          Dataset.registry.clear
        end
      end

      # def interactive(value=nil)
      #   set_or_get('interactive',value)
      # end

      def object(file=nil)
        set_or_get('object',file)
      end
      alias_method :source, :object

      def dimension(*args)
        if args.size == 0
          add_or_get('dimension',nil)
        else
          args.each{|arg|
            add_or_get('dimension',arg)
          }
        end
      end

      def measure(*args)
        if args.size == 0
          add_or_get('measure',nil)
        else
          args.each{|arg|
            add_or_get('measure',arg)
          }
        end
      end

      def option(opt=nil,value=nil)
        if opt == nil || value == nil
          @dataset_generator_options
        else
          (@dataset_generator_options ||= {})[opt] = value
        end
      end
      alias_method :options, :option

      def settings
        Dataset.configuration
      end

      def generate_n3
        opts = {}
        %w{dimension measure}.each{|field|
          opts[field.to_sym] = send(field.to_sym) if send(field.to_sym)
        }
        interact = settings.interactive
        if options
          opts = opts.merge(options)
        end
        Dataset.for(object,opts,interact)
      end

      private
      def set_or_get(var,input=nil)
        ivar = instance_variable_get("@#{var}")

        if input
          instance_variable_set("@#{var}", input)
        else
          ivar
        end
      end

      def add_or_get(var,input)
        ivar = instance_variable_get("@#{var}")

        if input
          instance_variable_set("@#{var}", []) unless ivar
          instance_variable_get("@#{var}") << input
          instance_variable_get("@#{var}")
        else
          ivar
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bio-publisci-0.0.7 lib/bio-publisci/dsl/dataset_dsl.rb