Sha256: b48d8523a7a7a518846b0d359f18a52a9872ca18fd1a990e118f2f26ea6c5e5b

Contents?: true

Size: 1.52 KB

Versions: 3

Compression:

Stored size: 1.52 KB

Contents

require 'valise/utils'
require 'valise/search-root'
require 'valise/item'

module Valise
  class Set
    class StemmedDefiner
      include Unpath
      def initialize(path, set)
        @segments = unpath(path)
        @target = set
      end

      def rw(name)
        @target.add_search_root(
          StemDecorator.new(@segments, SearchRoot.new(name)))
      end

      def ro(name)
        @target.add_search_root(
          StemDecorator.new(@segments, ReadOnlySearchRoot.new(name)))
      end
    end

    class Definer
      include Unpath
      def initialize(set)
        @target = set
      end

      def rw(name, path = nil)
        @target.add_search_root(SearchRoot.new(name))
      end

      def ro(name, path = nil)
        @target.add_search_root(ReadOnlySearchRoot.new(name))
      end

      def stemmed(path, &block)
        definer = StemmedDefiner.new(path, @target)
        definer.instance_eval(&block) unless block.nil?
        return definer
      end

      def from_here(rel_path)
        m = /(.*):\d+/.match(caller[0])
        dir = ::File::dirname(::File::expand_path(m[1]))

        collapse(unpath(dir) + unpath(rel_path))
      end

      def handle(path, serialization, merge_diff = nil)
        @target.add_handler(unpath(path),
                            Valise::Serialization[serialization],
                            Valise::MergeDiff[merge_diff])
      end

      def defaults(name=nil, &block)
        loc = DefinedDefaults.define(&block)
        @target.add_search_root(loc)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
valise-0.8.2 lib/valise/set/definer.rb
valise-0.8.1 lib/valise/set/definer.rb
valise-0.8 lib/valise/set/definer.rb