grammer 0.1.0.edge → 0.1.1.edge

Sign up to get free protection for your applications and to get access to all the features.
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