Class: Reflex::Model

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Xot::Invoker, Xot::Setter
Defined in:
lib/reflex/model.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data = nil, &block) ⇒ Model

Returns a new instance of Model.



21
22
23
24
# File 'lib/reflex/model.rb', line 21

def initialize (data = nil, &block)
  self.data = data if data
  Xot::BlockUtil.instance_eval_or_block_call self, &block if block
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



19
20
21
# File 'lib/reflex/model.rb', line 19

def data
  @data
end

Instance Method Details

#[](*args) ⇒ Object



92
93
94
# File 'lib/reflex/model.rb', line 92

def [] (*args)
  call_symbols ARRAY_GET_SYMS, *args
end

#[]=(*args) ⇒ Object



96
97
98
99
100
# File 'lib/reflex/model.rb', line 96

def []= (*args)
  ret = call_symbols ARRAY_SET_SYMS, *args
  invoke :update
  ret
end

#add_filter(&block) ⇒ Object Also known as: filter



53
54
55
# File 'lib/reflex/model.rb', line 53

def add_filter (&block)
  (@filters ||= []).push block
end

#add_handler(handler) ⇒ Object



38
39
40
41
# File 'lib/reflex/model.rb', line 38

def add_handler (handler)
  super
  invoke :attach, {}, only: handler
end

#each(&block) ⇒ Object



106
107
108
# File 'lib/reflex/model.rb', line 106

def each (&block)
  data.each &block if block && data.respond_to?(:each)
end

#float(defvar = nil) ⇒ Object



84
85
86
# File 'lib/reflex/model.rb', line 84

def float (defvar = nil)
  call_symbols FLOAT_SYMS
end

#inspectObject



110
111
112
# File 'lib/reflex/model.rb', line 110

def inspect ()
  "#<Model data:#{@data.inspect}>"
end

#int(defvar = nil) ⇒ Object



80
81
82
# File 'lib/reflex/model.rb', line 80

def int (defvar = nil)
  call_symbols INT_SYMS
end

#invoke(name, attributes = {}, options = {}) ⇒ Object



48
49
50
51
# File 'lib/reflex/model.rb', line 48

def invoke (name, attributes = {}, options = {})
  attributes[:data] ||= @data
  super "on_data_#{name}".intern, attributes, options
end

#max=(max) ⇒ Object



71
72
73
# File 'lib/reflex/model.rb', line 71

def max= (max)
  filter {|data| data > max ? max : data}
end

#min=(min) ⇒ Object



67
68
69
# File 'lib/reflex/model.rb', line 67

def min= (min)
  filter {|data| data < min ? min : data}
end

#minmax=(range) ⇒ Object



75
76
77
78
# File 'lib/reflex/model.rb', line 75

def minmax= (range)
  min, max = range.min, range.max
  filter {|data| data < min ? min : data > max ? max : data}
end

#remove_filter(&block) ⇒ Object



57
58
59
# File 'lib/reflex/model.rb', line 57

def remove_filter (&block)
  @filters.delete block if @filters
end

#remove_handler(handler) ⇒ Object



43
44
45
46
# File 'lib/reflex/model.rb', line 43

def remove_handler (handler)
  invoke :detach, {}, only: handler
  super
end

#sizeObject



102
103
104
# File 'lib/reflex/model.rb', line 102

def size ()
  call_symbols(ARRAY_SIZE_SYMS) || 0
end

#string(defvar = nil) ⇒ Object



88
89
90
# File 'lib/reflex/model.rb', line 88

def string (defvar = nil)
  call_symbols STRING_SYMS
end

#validate(&block) ⇒ Object



63
64
65
# File 'lib/reflex/model.rb', line 63

def validate (&block)
  filter {|data| block.call(data) ? data : nil}
end