Module: ExtendObject

Defined in:
lib/buzztools/extend_object.rb

Overview

this pattern of declaring methods in a module and then including into a class means that the methods can be used directly from the module

eg. ExtendObject::attr_from_json(json,object)

or on the class it is included into

eg. model.attr_from_json(json)

Class Method Summary collapse

Class Method Details

.attr_from_json(aJsonObject, aObject = nil) ⇒ Object

only give second argument when used like ExtendObject::attr_from_json



11
12
13
14
15
16
17
18
# File 'lib/buzztools/extend_object.rb', line 11

def attr_from_json(aJsonObject,aObject=nil)   # only give second argument when used like ExtendObject::attr_from_json
  aObject ||= self
  rubyObj = JSON.parse!(aJsonObject)
  rubyObj.each do |k,v|
    aObject.send k.to_sym,v
  end
  aObject
end

.g?(*args) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/buzztools/extend_object.rb', line 20

def g?(*args)
  if args.length==1
    path = args.first
  else
    path = args
  end
  if path.is_a?(String)
    segments = path.split('.')
    segment = segments.shift
  elsif path.is_a?(Symbol)
    path = path.to_s
    segments = [path]
    segment = segments.shift
  elsif path.is_a?(Array)
    segments = path
    segment = segments.shift
    #segment = segment.to_sym if segment
  end
  return self unless segment.to_nil
  value = if self.is_a?(Array)
    self[segment.to_i] rescue nil
  elsif (self.respond_to?(segment.to_sym) rescue nil)
    self.send(segment)
  elsif self.respond_to?(:[])
    (begin self[segment] rescue nil end) || (begin self[segment.to_sym] rescue nil end)
  end
  if segments.empty?
    value
  else
    value.respond_to?(:g?) ? value.g?(segments) : nil
  end
end