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