grammer 0.1.0.edge → 0.1.1.edge

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3186086c6b4c56b0aa46f5ea3578324783750d01
4
- data.tar.gz: 41e4c66758aa2caad094bba82fa83b4663f20cf0
3
+ metadata.gz: a3efaa410d894849bb8745cb2587906913fd0b47
4
+ data.tar.gz: 95e81e4fa7e1a66543af2250ef52cf93c3ed213a
5
5
  SHA512:
6
- metadata.gz: 518755629c23e64dbe0c5e53559c6d2586fa8303018fce20c77af60cb31b2496bec74e9cd5fdfbf8b23d2a8db8572bacea250c3972e3dc507e2ef7a426b2587a
7
- data.tar.gz: 7c8324ef8481fa9c9caa3780dd23defc587d6fc7b64b15a738ec99f3ced38834f172c3a59910e81b7ce60627edfd2f071e07975c94f56f25faf612fdcb0e11ef
6
+ metadata.gz: 7aaaa0fd4b5cb468f02125cea29da80db7627714f5efeca3b924aab4b8e15338cdda57f17c2d262c47ad24a199147bb4d666d902e828058b64ce94f3ede1309f
7
+ data.tar.gz: e02c3fa58f25e98b2303f76d768bcba886ce4b5f776214fbed6e433c6051deed963c029fa5ad1e896f522d4ae6f2c3930444f4c6071640cdfc701c5c77940bfc
@@ -9,28 +9,31 @@ module Grammer
9
9
  # Defines class macros
10
10
  module Macros
11
11
  def get_or_set_const(module_name)
12
- const_set(module_name, Module.new) unless const_defined?(module_name)
13
- const_get(module_name)
12
+ if const_defined?(module_name)
13
+ const_get(module_name)
14
+ else
15
+ const_set(module_name, Module.new)
16
+ end
14
17
  end
15
18
 
16
- def grammed_by(method, options = {})
17
- mod = get_or_set_const(:"GammerMod#{object_id}")
19
+ def define_module_method(mod, method_name, opts)
18
20
  mod.class_eval do
19
- target_attribute = options[:on]
21
+ target_attribute = opts[:on]
20
22
  define_method(target_attribute) do
21
- username = send(method)
22
- instance_var = "@#{target_attribute}"
23
-
24
- instance_var_value = instance_variable_get(instance_var)
25
- unless instance_var_value
26
- instance_variable_set(
27
- instance_var,
28
- Node.new(username, service: options[:service])
29
- )
23
+ instance_variable_name = "@#{target_attribute}"
24
+ if instance_variable_defined?(instance_variable_name)
25
+ instance_variable_get(instance_variable_name)
26
+ else
27
+ node = Node.new(send(method_name), service: opts[:service])
28
+ instance_variable_set(instance_variable_name, node)
30
29
  end
31
- instance_var_value
32
30
  end
33
31
  end
32
+ end
33
+
34
+ def grammed_by(method_name, opts = {})
35
+ mod = get_or_set_const(:"GammerMod#{object_id}")
36
+ define_module_method(mod, method_name, opts)
34
37
  prepend mod
35
38
  end
36
39
 
@@ -5,7 +5,7 @@ module Grammer
5
5
  module VERSION
6
6
  MAJOR = 0
7
7
  MINOR = 1
8
- PATCH = 0
8
+ PATCH = 1
9
9
  BUILD = 'edge'
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grammer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.edge
4
+ version: 0.1.1.edge
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caio Andrade