ree 1.0.8 → 1.0.9

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: 6d3080db0341788d95f77d172fec9b207e3c27a98d31e785a977d245942298eb
4
- data.tar.gz: d6eedaf9b82609693d2c3c8b3131e45ae59e6fbc04a9038e6f5e6edc762bf60e
3
+ metadata.gz: 754004035abda42c6d92689e63dd8c2b5e58d0aa706097cd6a825decdbad36f3
4
+ data.tar.gz: 43c066a73992ff94ce014301d9dea2df68ab804f90ae580d7a3dfca36f9c59e5
5
5
  SHA512:
6
- metadata.gz: bce075c79b1fec9acf13f397acff99edb159d2ba0074ed314b5a959be9688d0093eb46e18e59801e2f9be1fea358cd8596b1220ec8e40340b745e9bdf112e071
7
- data.tar.gz: adcf4a8b7d7e94c0b9e89c8ee4ff98fe193f7fc76c6c62578f421a0e20c6bbd5c686e59481785669f42c26988fd5280c09a3ca7212524ac0486b0c6724b00a76
6
+ metadata.gz: f126d959715dbf0c9e2c4bf01824c832a111e78385afe4573c2752c259f7b42ce108995eec25398f3fd3b0b8b32fee9d8edfdd382dd4799dcb6b467dbea2d741
7
+ data.tar.gz: b6663db03cca36ba13f6faddb54ae041a40d1e20f36ac426b55a126aae9f207c0d217a03527fd89951f0d91658db436ef5f995d9810205fd907f2562e46100af
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree (1.0.8)
4
+ ree (1.0.9)
5
5
  commander (~> 4.6.0)
6
6
 
7
7
  GEM
data/exe/ree CHANGED
@@ -148,7 +148,7 @@ class ReeCliRunner
148
148
  c.option '--silence', String, 'Silence all logs'
149
149
  c.option '--project_path [ROOT_PROJECT_DIR]', String, 'Root project dir path'
150
150
  c.action do |args, options|
151
- package_name = args[0]&.to_sym
151
+ package_name = args[0]
152
152
  object_path = args[1]
153
153
  options_hash = options.__hash__
154
154
 
@@ -25,8 +25,7 @@ module Ree
25
25
  if facade.has_object?(package_name, object_name)
26
26
  object = facade.load_package_object(package_name, object_name)
27
27
  Ree.write_object_schema(package.name, object.name)
28
-
29
- obj_path = Ree::PathHelper.abs_object_schema_path(object)
28
+ facade.dump_package_schema(package_name)
30
29
  else
31
30
  file_path = File.join(dir, object_path)
32
31
 
@@ -25,7 +25,7 @@ module Ree
25
25
 
26
26
  facade = Ree.container.packages_facade
27
27
  facade.load_packages_schema
28
- Ree.load_package(package_name)
28
+ facade.load_entire_package(package_name)
29
29
  facade.write_package_schema(package_name)
30
30
 
31
31
  package = facade.get_package(package_name)
@@ -1,19 +1,61 @@
1
1
  module Ree::RSpecLinkDSL
2
- def link(obj_name, as: nil, from:)
3
- obj = Ree.container.compile(from, obj_name)
2
+ def link(obj_name, import_proc = nil, as: nil, from: nil)
3
+ if obj_name.is_a?(Symbol)
4
+ obj = link_object(from, obj_name)
4
5
 
5
- if obj.nil?
6
- raise Ree::Error.new("object :#{obj_name} was not found for package :#{from}")
7
- end
8
-
9
- as ||= obj_name
10
-
11
- define_method as do |*args, **kwargs, &proc|
12
- if obj.object?
13
- obj.klass.new
14
- else
15
- obj.klass.new.call(*args, **kwargs, &proc)
6
+ if obj.nil?
7
+ raise Ree::Error.new("object :#{obj_name} was not found for package :#{from}")
8
+ end
9
+
10
+ as ||= obj_name
11
+
12
+ define_method as do |*args, **kwargs, &proc|
13
+ if obj.object?
14
+ obj.klass.new
15
+ else
16
+ obj.klass.new.call(*args, **kwargs, &proc)
17
+ end
16
18
  end
19
+ elsif obj_name.is_a?(String)
20
+ const_list = link_file(from, obj_name, import_proc)
21
+ const_list.each do |const|
22
+ Object.const_set(const.name, self.const_get(const.name))
23
+ end
24
+ else
25
+ raise Ree::Error.new("Invalid link DSL usage. Args should be Hash or String")
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def link_object(from_package_name, obj_name)
32
+ Ree.container.compile(from_package_name, obj_name)
33
+ end
34
+
35
+ def link_file(from_package_name, path, import_proc)
36
+ Ree.container.packages_facade.load_package_entry(from_package_name)
37
+ package = Ree.container.packages_facade.get_package(from_package_name)
38
+
39
+ file_path = File.join(
40
+ Ree::PathHelper.abs_package_dir(package),
41
+ Ree::PACKAGE, path
42
+ )
43
+ Ree.container.packages_facade.load_file(file_path, package.name)
44
+
45
+ const_list = path.split('/').map { |_| Ree::StringUtils.camelize(_) }
46
+ const_short = [const_list[0], const_list.last].join("::")
47
+ const_long = const_list.join("::")
48
+
49
+ file_const = if Object.const_defined?(const_long)
50
+ Object.const_get(const_long)
51
+ elsif Object.const_defined?(const_short)
52
+ Object.const_get(const_short)
53
+ else
54
+ raise Ree::Error.new("Unable to link '#{path}'. #{const_long} or #{const_short} was not defined in #{file_path}")
17
55
  end
56
+
57
+ const_list = Ree::LinkImportBuilder
58
+ .new(Ree.container.packages_facade)
59
+ .build_for_const(self, file_const, import_proc)
18
60
  end
19
61
  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.8"
4
+ VERSION = "1.0.9"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-25 00:00:00.000000000 Z
11
+ date: 2022-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -209,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
209
  - !ruby/object:Gem::Version
210
210
  version: '0'
211
211
  requirements: []
212
- rubygems_version: 3.3.7
212
+ rubygems_version: 3.3.24
213
213
  signing_key:
214
214
  specification_version: 4
215
215
  summary: Ruby framework to create modular applications