project_store 0.3.3 → 0.4.0

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
  SHA1:
3
- metadata.gz: 7c2e72891eb775947a8f1c05d3497a27bbb6dbc2
4
- data.tar.gz: 158ffc592cbd96c26a32b68c6e879bfead9d8859
3
+ metadata.gz: 050ec32cc6b6e2ead81816487f0ee4abd535336c
4
+ data.tar.gz: e5badf7ed14f1de29c4eae3cd9c6b384678f16cf
5
5
  SHA512:
6
- metadata.gz: 87398cace0fc49f20fed9e7621c28931f824582050f9c19b8e9500101cf2bfcad238a69413fd09d1aa82ee0d226e39cbef8c3804d03e4dc3156fce6270f1fa2d
7
- data.tar.gz: 5965f8f86736626cb19591e6e2c0cc65565956649429619a086c52ef53d879ecbdf9377b4541bc9bcce464b7ce0553698e8f8d9517b22a477616ddcd7fe648c7
6
+ metadata.gz: e3193091b55fb7133b968e46abe5b7ae065521106d1a3956a06b005a028da53a9e4e930917410a1e85bf3b374d7e65daea5a36793c4b37793930265c5c150c86
7
+ data.tar.gz: 89495629dcd16bdb23b43181d5ce48df9b84102195476db86d85b1f67a3c174f3e93b740f829a59b24627c770b644d9c0083cbe6929911ceeda758335ac43563
data/lib/project_store.rb CHANGED
@@ -12,7 +12,7 @@ module ProjectStore
12
12
 
13
13
  end
14
14
 
15
- require 'project_store/entity/properties_binder'
15
+ require 'project_store/entity/property_binder'
16
16
  require 'project_store/entity/mandatory_properties'
17
17
  require 'project_store/entity/common_properties'
18
18
  require 'project_store/entity/base'
@@ -65,6 +65,8 @@ module ProjectStore
65
65
  raise PSE, "Entity '#{entity.name}' already defined in file '#{project_entities[entity.name].backing_store.path}'" if project_entities[entity.name]
66
66
  # Adds extra decorator
67
67
  add_decorators entity
68
+ # Re-check the validity of the object now that it has been decorated
69
+ entity.valid?(raise_exception: true)
68
70
  entity.backing_store = store
69
71
  # Add to the store index store -> entity list
70
72
  stores[store] << entity
@@ -87,6 +89,7 @@ module ProjectStore
87
89
  [decorators[decorators_key]]
88
90
  end .each do |decorator|
89
91
  entity.extend decorator
92
+ entity.mandatory_properties.concat decorator.mandatory_properties
90
93
  logger.debug "Decorated entity '#{entity.name}' with '#{decorator}'"
91
94
  end
92
95
  end
@@ -19,15 +19,28 @@ module ProjectStore
19
19
  end
20
20
  end
21
21
 
22
+ def valid?(raise_exception: false)
23
+ mandatory_properties.each do |mandatory_property|
24
+ unless self[mandatory_property]
25
+ raise_exception ? raise(PSE, "Invalid entity '#{name}'. Missing '#{mandatory_property}' property") : false
26
+ end
27
+ end
28
+ true
29
+ end
30
+
31
+ def mandatory_properties
32
+ @mandatory_properties ||= [:type]
33
+ end
22
34
 
23
35
  def basic_checks
24
36
  raise PSE, 'Invalid entity. Missing name' unless name
25
37
  raise PSE, 'Invalid entity. You should not specify a name as it would not be taken in account' if self[:name]
26
- raise PSE, "Invalid entity '#{name}'. Missing type" unless type
27
- raise PSE, "Invalid entity '#{name}'. Forbidden 'backing_store' entry" if self[:backing_store]
28
- raise PSE, "Invalid entity '#{name}'. Forbidden 'basic_checks' entry" if self[:basic_checks]
29
- raise PSE, "Invalid entity '#{name}'. Forbidden 'save' entry" if self[:save]
30
- raise PSE, "Invalid entity '#{name}'. Forbidden 'internal_type' entry" if self[:internal_type]
38
+
39
+ [:backing_store, :basic_checks, :save, :internal_type, :mandatory_properties, :valid?].each do |forbidden_name|
40
+ raise PSE, "Invalid entity '#{name}'. Forbidden '#{forbidden_name}' property" if self[forbidden_name]
41
+ end
42
+
43
+ valid?(raise_exception: true)
31
44
  end
32
45
 
33
46
  end
@@ -0,0 +1,48 @@
1
+ module ProjectStore
2
+ module Entity
3
+
4
+ module PropertyBinder
5
+
6
+ def yaml_accessor(*yaml_properties)
7
+ yaml_properties.each do |yaml_property|
8
+ yaml_reader yaml_property
9
+ yaml_writer yaml_property
10
+ end
11
+ end
12
+
13
+ def yaml_reader(*yaml_properties)
14
+ yaml_properties.each do |yaml_property|
15
+ self.class_eval do
16
+ define_method yaml_property do
17
+ self[yaml_property]
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ def yaml_writer(*yaml_properties)
24
+ yaml_properties.each do |yaml_property|
25
+ self.class_eval do
26
+ define_method "#{yaml_property}=" do |val|
27
+ self[yaml_property] = val
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ def mandatory_properties
34
+ @mandatory_properties ||= []
35
+ end
36
+
37
+ def mandatory_property(*properties)
38
+ properties.each do |property|
39
+ mandatory_properties << property
40
+ end
41
+ end
42
+
43
+
44
+
45
+ end
46
+
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  module ProjectStore
2
- VERSION = '0.3.3'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: project_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent B.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-16 00:00:00.000000000 Z
11
+ date: 2016-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -89,7 +89,7 @@ files:
89
89
  - lib/project_store/entity/base.rb
90
90
  - lib/project_store/entity/common_properties.rb
91
91
  - lib/project_store/entity/mandatory_properties.rb
92
- - lib/project_store/entity/properties_binder.rb
92
+ - lib/project_store/entity/property_binder.rb
93
93
  - lib/project_store/error.rb
94
94
  - lib/project_store/initializer.rb
95
95
  - lib/project_store/utils/basic_logger.rb
@@ -1,36 +0,0 @@
1
- module ProjectStore
2
- module Entity
3
-
4
- module PropertyBinder
5
-
6
- def yaml_accessor(*args)
7
- args.each do |arg|
8
- yaml_reader arg
9
- yaml_writer arg
10
- end
11
- end
12
-
13
- def yaml_reader(*args)
14
- args.each do |arg|
15
- self.class_eval do
16
- define_method arg do
17
- self[arg]
18
- end
19
- end
20
- end
21
- end
22
-
23
- def yaml_writer(*args)
24
- args.each do |arg|
25
- self.class_eval do
26
- define_method "#{arg}=" do |val|
27
- self[arg] = val
28
- end
29
- end
30
- end
31
- end
32
-
33
- end
34
-
35
- end
36
- end