module Proxima
Constants
- HTTP_METHODS
- TYPES
- VERSION
Public Class Methods
add_type(klass, from = nil, to = nil)
click to toggle source
# File lib/proxima/types.rb, line 43 def self.add_type(klass, from = nil, to = nil) TYPES.push({ klass: klass, from: from, to: to }) end
remove_type(klass)
click to toggle source
# File lib/proxima/types.rb, line 51 def self.remove_type(klass) TYPES.delete_if({ klass: klass, from: from, to: to }) end
type_from_json(klass, value)
click to toggle source
# File lib/proxima/types.rb, line 59 def self.type_from_json(klass, value) type = TYPES.find { |t| t[:klass] == klass } if type type[:from_json].call(value) else value end end
type_to_json(klass, value)
click to toggle source
# File lib/proxima/types.rb, line 68 def self.type_to_json(klass, value) type = TYPES.find { |t| t[:klass] == klass } if type type[:to_json].call(value) else value end end
watch(value, &block)
click to toggle source
# File lib/proxima/watch.rb, line 7 def self.watch(value, &block) Proxima.watch_hash(value, &block) if value.is_a? Hash Proxima.watch_array(value, &block) if value.is_a? Array end
watch_array(array, &on_change)
click to toggle source
# File lib/proxima/watch_array.rb, line 5 def self.watch_array(array, &on_change) array.instance_variable_set(:@on_change, on_change) array.each do |value| Proxima.watch(value, &on_change) end class << array def <<(*args) result = super args.each do |value| Proxima.watch(value, &@on_change) end @on_change.call result end def []=(*args) result = super Proxima.watch(args[2] || args[1], &@on_change) @on_change.call result end def clear(*args) result = super @on_change.call result end def collect!(*args) result = super @on_change.call result end def compact!(*args) result = super @on_change.call if result result end def delete(*args) result = super @on_change.call if result result end def delete_at(*args) result = super @on_change.call if result result end def delete_if(*args) result = super @on_change.call result end def fill(*args) result = super @on_change.call result end def flatten!(*args) result = super @on_change.call result end def replace(*args) result = super @on_change.call result end def insert(*args) args[1..-1].each do |value| Proxima.watch(value, &@on_change) end result = super @on_change.call if args[1] != nil result end def pop(*args) result = super @on_change.call if args[0] == nil || args[0] > 0 result end def push(*args) args.each do |value| Proxima.watch(value, &@on_change) end result = super @on_change.call if args.length > 0 result end def reject!(*args) result = super @on_change.call if result result end def reverse!(*args) result = super @on_change.call result end def rotate!(*args) result = super @on_change.call if args[0] != 0 result end def select!(*args) result = super @on_change.call if result result end def shift(*args) result = super @on_change.call if args[0] == nil || args[0] > 0 result end def shuffle!(*args) result = super @on_change.call result end def slice!(*args) result = super if result.is_a? Array @on_change.call if result.length > 0 else @on_change.call if result != nil end result end def sort!(*args) result = super @on_change.call result end def sort_by!(*args) result = super @on_change.call result end def uniq!(*args) result = super @on_change.call if result result end end end
watch_hash(hash, &on_change)
click to toggle source
# File lib/proxima/watch_hash.rb, line 5 def self.watch_hash(hash, &on_change) hash.instance_variable_set(:@on_change, on_change) hash.values.each do |value| Proxima.watch(value, &on_change) end class << hash def []=(*args) Proxima.watch(args[1], &@on_change) result = super @on_change.call if args[1] result end def clear(*args) result = super @on_change.call result end def delete(*args) result = super @on_change.call if result result end def delete_if(*args) result = super @on_change.call result end def merge!(*args) args[0].values.each do |value| Proxima.watch(value, &@on_change) end result = super @on_change.call result end def reject!(*args) result = super @on_change.call if result result end def select!(*args) result = super @on_change.call if result result end def store(*args) Proxima.watch(args[1], &@on_change) result = super @on_change.call result end def update(*args) args[0].values.each do |value| Proxima.watch(value, &@on_change) end result = super @on_change.call result end end end