ree 1.0.38 → 1.0.39

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
  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