ree 1.0.38 → 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: 35a162c69a00597f108ee30e405a86ec0d5758e94d7110b3f904b5b3b7b7970c
4
- data.tar.gz: 5a33fe4850f595f0ad3da5e10acea452d3ca515d47b82003f45e2365f5b5e7b2
3
+ metadata.gz: 7c82febb352bce1cb674d2b77cac4aeb8f8b1a1fcaa5fa81adae56d2e62bdb20
4
+ data.tar.gz: d23d1f28309cd3650cd90cd93bb1261011a36359c3fc6096bf8d7945fd9a8598
5
5
  SHA512:
6
- metadata.gz: 4cf7b6cb449a213fbbce8498702a79349133744e91be63de7e171696319d26565e9ec292a3b4403e765ce18cd326a86f1241f41602feb14b80025da24c76f91b
7
- data.tar.gz: aa570fbba3f9f361d81196252b969a35b9ed359a5ff400bdc31cb316de9af17e394312f445f8c9922fffa2983454c4cc3a8ace6cd14d70c3f06a63fb29cff41d
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.38)
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,33 +73,54 @@ 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
90
  if obj.with_caller?
74
91
  self.class_eval %Q(
92
+ #{mount_self ? "class << self" : ""}
75
93
  private def #{link_as}(*args, **kwargs, &block)
76
94
  #{obj.klass}.new.set_caller(self).call(*args, **kwargs, &block)
77
95
  end
96
+ #{mount_self ? "end" : ""}
78
97
  )
79
98
  else
80
99
  self.class_eval %Q(
100
+ #{mount_self ? "class << self" : ""}
81
101
  private def #{link_as}(*args, **kwargs, &block)
82
102
  @#{link_as} ||= #{obj.klass}.new
83
103
  @#{link_as}.call(*args, **kwargs, &block)
84
104
  end
105
+ #{mount_self ? "end" : ""}
85
106
  )
86
107
  end
87
108
  else
88
109
  if obj.with_caller?
89
110
  self.class_eval %Q(
111
+ #{mount_self ? "class << self" : ""}
90
112
  private def #{link_as}
91
113
  #{obj.klass}.new.set_caller(self)
92
114
  end
115
+ #{mount_self ? "end" : ""}
93
116
  )
94
117
  else
95
118
  self.class_eval %Q(
119
+ #{mount_self ? "class << self" : ""}
96
120
  private def #{link_as}
97
121
  @#{link_as} ||= #{obj.klass}.new
98
122
  end
123
+ #{mount_self ? "end" : ""}
99
124
  )
100
125
  end
101
126
  end
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.38"
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.38
4
+ version: 1.0.39
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov