Sha256: e8aec649c86a85d58fc371ae61918bc9f2f590a911496f29bcc630542441d3d0

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

module Qor
  module Dsl
    module ClassMethods
      def node_root
        @node_root ||= Qor::Dsl::Node.new
      end

      def reset!
        node_config = node_root.config
        @node_root = Qor::Dsl::Node.new
        @node_root.add_config(node_config)
        @root = nil
      end

      def node(type, options={}, &blk)
        node_root.node(type, options, &blk)
      end

      def root
        @root || load
      end

      def default_configs(files)
        @default_configs = files
      end

      def default_config
        if @default_configs.is_a?(Array)
          @default_configs.select {|x| File.exist?(x.to_s) }[0]
        else
          @default_configs
        end
      end

      def load(path=nil, opts={}, &block)
        reset! if opts[:force] || block_given?

        @root ||= if block_given? # Load from block
                    node_root.config.instance_eval(&block)
                    node_root
                  else # Load from file
                    @load_path = path || @load_path || default_config
                    load_file(@load_path)
                  end
      end

      def load_file(file)
        raise Qor::Dsl::ConfigurationNotFound unless File.exist?(file.to_s)
        node_root.config.instance_eval(File.read(file))
        node_root
      end

      def find(*arguments, &block)
        root.find(*arguments, &block)
      end

      def deep_find(*arguments, &block)
        root.deep_find(*arguments, &block)
      end

      def first(*arguments, &block)
        root.first(*arguments, &block)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
qor_dsl-0.1.5 lib/qor_dsl/class_method.rb
qor_dsl-0.1.4 lib/qor_dsl/class_method.rb