class Undies::Source
Attributes
data[R]
layout[R]
source[R]
Public Class Methods
new(*args, &block)
click to toggle source
# File lib/undies/source.rb, line 7 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
Public Instance Methods
==(other_source)
click to toggle source
# File lib/undies/source.rb, line 29 def ==(other_source) self.source == other_source.source && self.layout_sources == other_source.layout_sources end
args=(values)
click to toggle source
# File lib/undies/source.rb, line 34 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
file?()
click to toggle source
# File lib/undies/source.rb, line 13 def file? !@source.kind_of?(::Proc) end
layout=(value)
click to toggle source
# File lib/undies/source.rb, line 58 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
layout_sources()
click to toggle source
# File lib/undies/source.rb, line 25 def layout_sources self.layouts.collect{|l| l.source} end
layouts()
click to toggle source
# File lib/undies/source.rb, line 17 def layouts if layout [self.layout, self.layout.layouts].flatten.compact else [] end end
source=(value)
click to toggle source
# File lib/undies/source.rb, line 45 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