class Ro::Model

Attributes

node[RW]

Public Class Methods

[](id) click to toggle source
# File lib/ro/model.rb, line 66
def Model.[](id)
  find(id)
end
all(*args, &block) click to toggle source
# File lib/ro/model.rb, line 27
def Model.all(*args, &block)
  models_for(nodes)
end
count(*args, &block) click to toggle source
# File lib/ro/model.rb, line 39
def Model.count(*args, &block)
  if args.empty? and block.nil?
    all.size
  else
    where(*args, &block).size
  end
end
detect(*args, &block) click to toggle source
# File lib/ro/model.rb, line 35
def Model.detect(*args, &block)
  all.detect(*args, &block)
end
find(id) click to toggle source
# File lib/ro/model.rb, line 61
def Model.find(id)
  re = %r/#{ id.to_s.gsub(/[-_]/, '[-_]') }/i
  all.detect{|model| model.id.to_s == id.to_s}
end
first() click to toggle source
# File lib/ro/model.rb, line 53
def Model.first
  all.first
end
last() click to toggle source
# File lib/ro/model.rb, line 57
def Model.last
  all.last
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/ro/model.rb, line 70
def Model.method_missing(method, *args, &block)
  id = method
  model = find(id)
  return model if model
  super
end
models_for(result) click to toggle source
# File lib/ro/model.rb, line 77
def Model.models_for(result)
  case result
    when Array
      List.for(Array(result).flatten.compact.map{|element| new(element)})
    else
      new(result)
  end
end
new(*args, &block) click to toggle source
# File lib/ro/model.rb, line 113
def initialize(*args, &block)
  attributes = Map.options_for!(args)

  node = args.detect{|arg| arg.is_a?(Node)}
  model = args.detect{|arg| arg.is_a?(Model)}

  if node.nil? and not model.nil?
    node = model.node
  end

  if node
    @node = node
  else
    path = File.join(prefix, ':new')
    node = Node.new(path)
    @node = node
  end
end
nodes(*args, &block) click to toggle source
# File lib/ro/model.rb, line 23
def Model.nodes(*args, &block)
  root.nodes.send(collection)
end
paginate(*args, &block) click to toggle source
# File lib/ro/model.rb, line 86
def Model.paginate(*args, &block)
  all.paginate(*args, &block)
end
select(*args, &block) click to toggle source
# File lib/ro/model.rb, line 31
def Model.select(*args, &block)
  all.select(*args, &block)
end
where(*args, &block) click to toggle source
# File lib/ro/model.rb, line 47
def Model.where(*args, &block)
  all.select do |model|
    !!model.instance_eval(&block)
  end
end

Public Instance Methods

List(*args, &block) click to toggle source
# File lib/ro/model.rb, line 106
def List(*args, &block)
  List.new(*args, &block)
end
attributes() click to toggle source
# File lib/ro/model.rb, line 132
def attributes
  @node.attributes
end
directory() click to toggle source
# File lib/ro/model.rb, line 145
def directory
  File.join(prefix, id)
end
method_missing(method, *args, &block) click to toggle source
# File lib/ro/model.rb, line 150
def method_missing(method, *args, &block)
  node.send(method, *args, &block)
end
persisted?() click to toggle source
# File lib/ro/model.rb, line 136
def persisted?
  true
end
prefix() click to toggle source
# File lib/ro/model.rb, line 141
def prefix
  self.class.prefix
end
respond_to?(method) click to toggle source
Calls superclass method
# File lib/ro/model.rb, line 154
def respond_to?(method)
  super || node.respond_to?(method)
end