Module: Dao::Coerce

Defined in:
lib/dao/coerce.rb

Constant Summary collapse

Version =

version

'0.0.8'
List =
[]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](sym) ⇒ Object

Raises:

  • (ArgumentError)


200
201
202
203
204
205
206
207
208
209
# File 'lib/dao/coerce.rb', line 200

def self.[] sym
  prefix = sym.to_s.downcase.to_sym
  candidates = List.select{|m| m =~ %r/^#{ prefix }/i}
  m = candidates.shift
  raise ArgumentError, "unsupported coercion: #{ sym.inspect } (#{ List.join ',' })" unless
    m
  raise ArgumentError, "ambiguous coercion: #{ sym.inspect } (#{ List.join ',' })" unless
    candidates.empty? or m.to_s == sym.to_s
  lambda{|obj| method(m).call obj}
end

.coerce(m, &b) ⇒ Object



49
50
51
52
53
# File 'lib/dao/coerce.rb', line 49

def self.coerce m, &b
  define_method m, &b
  export m
  List << m.to_s
end

.dependenciesObject

dependencies



21
22
23
24
25
# File 'lib/dao/coerce.rb', line 21

def self.dependencies
  {
    'chronic'   =>  [ 'chronic'   , '>= 0.6.2' ]
  }
end

.export(m) ⇒ Object



42
43
44
45
# File 'lib/dao/coerce.rb', line 42

def self.export m
  module_function m
  public m
end

.versionObject



15
16
17
# File 'lib/dao/coerce.rb', line 15

def self.version
  Coerce::Version
end

Instance Method Details

#uriObject

built-in



5
# File 'lib/dao/coerce.rb', line 5

require 'uri'