Sha256: 33d734cd99e64ed02dea009f2375758ef78fabaf267e3db6a5d1106628b2ed95

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

module Qor
  module Dsl
    module ClassMethods
      def node_root
        @node_root ||= Qor::Dsl::Node.new
      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={})
        @load_path, @root = nil, nil if opts[:force]

        @load_path = path || @load_path || default_config
        @root ||= load_file(@load_path)
        @root
      end

      def load_file(file)
        return unless File.exist?(file.to_s)
        content = File.read(file)
        node_root.config.instance_eval(content)
        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.1 lib/qor_dsl/class_method.rb
qor_dsl-0.1.0 lib/qor_dsl/class_method.rb