Module: MPatch::Object
- Defined in:
- lib/mpatch/object.rb
Instance Method Summary collapse
- #boolean? ⇒ Boolean
- #class? ⇒ Boolean
-
#class_def(name, &blk) ⇒ Object
Defines an instance method within a class.
-
#class_exists? ⇒ Boolean
this will check that the class is defined or not in the runtime memory.
-
#constantize ⇒ Object
constantize object.
-
#convert_to_class(*attributes) ⇒ Object
(also: #create_attributes)
This will convert a symbol or string and format to be a valid constant name and create from it a class with instance attribute accessors Best use is when you get raw data in string from external source and you want make them class objects.
-
#convert_to_hash ⇒ Object
convert class instance instance variables into a hash object.
- #false? ⇒ Boolean
-
#meta_def(name, &blk) ⇒ Object
Adds methods to a metaclass.
-
#meta_eval(&blk) ⇒ Object
extend the metaclass with an instance eval.
-
#metaclass ⇒ Object
The hidden singleton lurks behind everyone.
-
#must_be(class_name) ⇒ Object
basic validations for those who fear the DUCK!.
- #true? ⇒ Boolean
Instance Method Details
#boolean? ⇒ Boolean
4 5 6 |
# File 'lib/mpatch/object.rb', line 4 def boolean? !!self == self end |
#class? ⇒ Boolean
16 17 18 |
# File 'lib/mpatch/object.rb', line 16 def class? self.class == ::Class end |
#class_def(name, &blk) ⇒ Object
Defines an instance method within a class
50 51 52 |
# File 'lib/mpatch/object.rb', line 50 def class_def name, &blk class_eval { define_method name, &blk } end |
#class_exists? ⇒ Boolean
this will check that the class is defined or not in the runtime memory
88 89 90 91 92 93 |
# File 'lib/mpatch/object.rb', line 88 def class_exists? klass = ::Module.const_get(self) return klass.is_a?(::Class) rescue ::NameError return false end |
#constantize ⇒ Object
constantize object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/mpatch/object.rb', line 55 def constantize camel_cased_word= self.to_s names = camel_cased_word.split('::') names.shift if names.empty? || names.first.empty? constant = ::Object names.each do |name| constant = constant.const_defined?(name, false) ? constant.const_get(name) : constant.const_missing(name) end constant end |
#convert_to_class(*attributes) ⇒ Object Also known as: create_attributes
This will convert a symbol or string and format to be a valid constant name and create from it a class with instance attribute accessors Best use is when you get raw data in string from external source and you want make them class objects
:hello_world.to_class(:test)
HelloWorld.to_class(:sup)
hw_var = HelloWorld.new
hw_var.sup = "Fine thanks!"
hw_var.test = 5
puts hw_var.test
#> produce 5 :Integer
you can also use this formats
:HelloWorld , "hello.world",
"hello/world", "Hello::World",
"hello:world"...
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/mpatch/object.rb', line 114 def convert_to_class(*attributes) unless self.class <= ::Symbol || self.class <= ::String || self.class <= ::Class raise ::ArgumentError, "object must be symbol or string to make able build class to it" end class_name= self.to_s unless self.class <= ::Class class_name= class_name[0].upcase+class_name[1..class_name.length] %w[ _ . : / ].each do |one_sym| loop do index_nmb= class_name.index(one_sym) break if index_nmb.nil? class_name[index_nmb..index_nmb+1]= class_name[index_nmb+1].upcase end end end create_attribute = ::Proc.new do |*args| end unless class_name.class_exists? self.class.const_set( class_name, ::Class.new ) end class_name.constantize.class_eval do attributes.each do |one_attribute| attr_accessor one_attribute.to_s.to_sym end end return true end |
#convert_to_hash ⇒ Object
convert class instance instance variables into a hash object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/mpatch/object.rb', line 69 def convert_to_hash unless self.class.class <= ::Class super #raise ::NoMethodError, "undefined method `to_hash' for #{self.inspect}" end tmp_hash= ::Hash.new() self.instance_variables.each do|var| tmp_hash[var.to_s.delete("@")] = self.instance_variable_get(var) end return tmp_hash end |
#false? ⇒ Boolean
12 13 14 |
# File 'lib/mpatch/object.rb', line 12 def false? self == false end |
#meta_def(name, &blk) ⇒ Object
Adds methods to a metaclass
45 46 47 |
# File 'lib/mpatch/object.rb', line 45 def name, &blk { define_method name, &blk } end |
#meta_eval(&blk) ⇒ Object
extend the metaclass with an instance eval
42 |
# File 'lib/mpatch/object.rb', line 42 def &blk; .instance_eval &blk; end |
#metaclass ⇒ Object
The hidden singleton lurks behind everyone
39 |
# File 'lib/mpatch/object.rb', line 39 def ; class << self; self; end; end |
#must_be(class_name) ⇒ Object
basic validations for those who fear the DUCK!
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/mpatch/object.rb', line 21 def must_be class_name if class_name.class == ::Class begin if self.class != class_name raise ::ArgumentError, "invalid parameter given: #{self}" end end else begin if self != class_name raise ::ArgumentError, "invalid parameter given: #{self}" end end end return self end |
#true? ⇒ Boolean
8 9 10 |
# File 'lib/mpatch/object.rb', line 8 def true? self == true end |