ree 1.0.37 → 1.0.39

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
  SHA256:
3
- metadata.gz: 5d501b79e7ddc962cae38fd84b12afe374275742acd074dc88596226e857b36b
4
- data.tar.gz: 12f3f11d8e463facc2a0843865ab3e83bbd909e817bbe393142f4000b2ac0d24
3
+ metadata.gz: 7c82febb352bce1cb674d2b77cac4aeb8f8b1a1fcaa5fa81adae56d2e62bdb20
4
+ data.tar.gz: d23d1f28309cd3650cd90cd93bb1261011a36359c3fc6096bf8d7945fd9a8598
5
5
  SHA512:
6
- metadata.gz: cf7fb8c65cdb57adc82bf645800e80e04d60be0f855d182276199b77afd566fad8d2465b74b01f0c1313165abf080b9b9a7e0ff36739fbb089712993d1829214
7
- data.tar.gz: 8d6a0861d463fbd37731ddae4a7d603e93e04c3028d9e8af2717e31959067bb3e0328fd5a3112f61eb001ac186f34428d510101ebd0053fd8b4b3daa2a100323
6
+ metadata.gz: 23819cdc3a1b4d81cbb57baa3946526138baf1662a297522f4ef8e9d4c1377bc311852d1179be445c8cfcea760660e107b97dfffa882b00a70b3b7933e3a5a9e
7
+ data.tar.gz: ce36b46fbd0fdffc547020e18eb0ee390f6a84f90150ba1bc3c3f80f59bb781d668008f852b7c47830f9a9dcd83ec59407c720024fe47c2ea8638c06b0cd987f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree (1.0.37)
4
+ ree (1.0.39)
5
5
  commander (~> 5.0.0)
6
6
 
7
7
  GEM
data/lib/ree/link_dsl.rb CHANGED
@@ -40,12 +40,16 @@ module Ree::LinkDSL
40
40
  # @param [Nilor[Symbol]] as
41
41
  # @param [Nilor[Symbol]] from
42
42
  # @param [Nilor[Proc]] import
43
- def _link_object(object_name, as: nil, from: nil, import: nil)
43
+ def _link_object(object_name, as: nil, from: nil, target: nil, import: nil)
44
44
  check_arg(object_name, :object_name, Symbol)
45
45
  check_arg(as, :as, Symbol) if as
46
46
  check_arg(from, :from, Symbol) if from
47
47
  check_arg(import, :import, Proc) if import
48
48
 
49
+ if target && ![:object, :class, :both].include?(target)
50
+ raise Ree::Error.new("target should be one of [:object, :class, :both]", :invalid_dsl_usage)
51
+ end
52
+
49
53
  package_name = Ree::StringUtils.underscore(self.name.split('::').first).to_sym
50
54
  link_package_name = from.nil? ? package_name : from
51
55
  link_object_name = object_name
@@ -69,22 +73,56 @@ module Ree::LinkDSL
69
73
  .packages_facade
70
74
  .load_package_object(link_package_name, link_object_name)
71
75
 
76
+ target ||= obj.target
77
+
78
+ if target == :both
79
+ mount_obj(obj, link_as, true)
80
+ mount_obj(obj, link_as, false)
81
+ elsif target == :class
82
+ mount_obj(obj, link_as, true)
83
+ elsif target == :object
84
+ mount_obj(obj, link_as, false)
85
+ end
86
+ end
87
+
88
+ def mount_obj(obj, link_as, mount_self)
72
89
  if obj.fn?
73
- self.class_eval %Q(
74
- private def _#{link_as}
75
- @#{link_as} ||= #{obj.klass}.new
76
- end
77
-
78
- private def #{link_as}(*args, **kwargs, &block)
79
- _#{link_as}.call(*args, **kwargs, &block)
80
- end
81
- )
90
+ if obj.with_caller?
91
+ self.class_eval %Q(
92
+ #{mount_self ? "class << self" : ""}
93
+ private def #{link_as}(*args, **kwargs, &block)
94
+ #{obj.klass}.new.set_caller(self).call(*args, **kwargs, &block)
95
+ end
96
+ #{mount_self ? "end" : ""}
97
+ )
98
+ else
99
+ self.class_eval %Q(
100
+ #{mount_self ? "class << self" : ""}
101
+ private def #{link_as}(*args, **kwargs, &block)
102
+ @#{link_as} ||= #{obj.klass}.new
103
+ @#{link_as}.call(*args, **kwargs, &block)
104
+ end
105
+ #{mount_self ? "end" : ""}
106
+ )
107
+ end
82
108
  else
83
- self.class_eval %Q(
84
- private def #{link_as}
85
- @#{link_as} ||= #{obj.klass}.new
86
- end
87
- )
109
+ if obj.with_caller?
110
+ self.class_eval %Q(
111
+ #{mount_self ? "class << self" : ""}
112
+ private def #{link_as}
113
+ #{obj.klass}.new.set_caller(self)
114
+ end
115
+ #{mount_self ? "end" : ""}
116
+ )
117
+ else
118
+ self.class_eval %Q(
119
+ #{mount_self ? "class << self" : ""}
120
+ private def #{link_as}
121
+ @#{link_as} ||= #{obj.klass}.new
122
+ end
123
+ #{mount_self ? "end" : ""}
124
+ )
125
+ end
88
126
  end
89
127
  end
90
128
 
@@ -205,7 +205,7 @@ class Ree::ObjectCompiler
205
205
  if obj.with_caller?
206
206
  eval_list.push(indent + "private def #{object_link.as}")
207
207
  indent = inc_indent(indent)
208
- eval_list.push(indent + "@#{object_link.as}")
208
+ eval_list.push(indent + "#{obj.klass}.new.set_caller(self)")
209
209
  indent = dec_indent(indent)
210
210
  eval_list.push(indent + "end")
211
211
  else
data/lib/ree/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ree
4
- VERSION = "1.0.37"
4
+ VERSION = "1.0.39"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.37
4
+ version: 1.0.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov