Sha256: df576e3defe08b752a26d9f2e007bd5b259a757ad4fa795ab92fefd19abe6a9d
Contents?: true
Size: 1.63 KB
Versions: 4
Compression:
Stored size: 1.63 KB
Contents
require 'undies/named_source' module Undies class Source attr_reader :source, :data, :layout def initialize(*args, &block) named = args.first.kind_of?(NamedSource) ? args.first : nil args << block if block self.args = named ? named.args.compact : args end def file? !@source.kind_of?(::Proc) end def layouts if layout [self.layout, self.layout.layouts].flatten.compact else [] end end def layout_sources self.layouts.collect{|l| l.source} end def ==(other_source) self.source == other_source.source && self.layout_sources == other_source.layout_sources end def args=(values) proc, opts, file = [ values.last.kind_of?(::Proc) ? values.pop : nil, values.last.kind_of?(::Hash) ? values.pop : {}, values.last.kind_of?(::String) ? values.pop : nil ] self.source = file || proc self.layout = opts[:layout] end def source=(value) if value.nil? raise ArgumentError, "source name, file, or block required" end @data = if value.kind_of?(::Proc) value else raise ArgumentError, "no source file '#{value}'" if !File.exists?(value.to_s) File.send(File.respond_to?(:binread) ? :binread : :read, value.to_s) end @source = value end def layout=(value) @layout = case value when Source, NilClass value when ::Proc Source.new(&value) when ::String, NamedSource Source.new(value) else raise ArgumentError, "invalid layout" end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
undies-2.2.1 | lib/undies/source.rb |
undies-2.2.0 | lib/undies/source.rb |
undies-2.1.0 | lib/undies/source.rb |
undies-2.0.0 | lib/undies/source.rb |