activefacts-api 1.8.5 → 1.9.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: 5dd3ccb8e1684da9fef67f076dce29a3e4450365
4
- data.tar.gz: 689a58ce7bf7055f7329bd5c2d990980b13934ad
3
+ metadata.gz: 21a02e9269652ab77d07c778444ba5c502c94c98
4
+ data.tar.gz: 6df79ce9c7f637ba80471e3661fc64145b2d3686
5
5
  SHA512:
6
- metadata.gz: b483b542cd6984bca09d2aa6866fc06259fb0442e2062112cd035dd784baa09051907d72f010c374fcfd1f3013eb2d764b2c926c517fb385f026c5db114e3375
7
- data.tar.gz: a652aeded7b2ab278f6829cad84320e7d9169c28c76a588538106e962eb79ab5286bbda6907482275c3084e313e22320eb23c1896a1de6d292d33a907f47a0c1
6
+ metadata.gz: 7039e5fe1a242951fc967ee84e098b1eae9bea18bd2cfdf16d9f914ded12977cf1f72f0bbb75f1a31d4a51aeb268e92e1e9ba2b8e61dae77919605206aaa9724
7
+ data.tar.gz: 22f0cf6fa9189e7908fbd81b4a433e8206bee09abfe25f6dd9dc58d669a49daf88ca4a257eb3a31897a98e5182802d75964d587b55c84c4172edb686b6449b36
@@ -27,8 +27,7 @@ over the fact population.
27
27
 
28
28
  spec.extra_rdoc_files = [
29
29
  "LICENSE.txt",
30
- "README.rdoc",
31
- "TODO"
30
+ "README.rdoc"
32
31
  ]
33
32
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
34
33
 
@@ -236,6 +236,27 @@ module ActiveFacts
236
236
  end.compact*"\n"
237
237
  end
238
238
 
239
+ # Make a new instance like "instance", but with some new attributes assigned.
240
+ # All identifiers should overall be different from the forked instance, and
241
+ # all one-to-ones must be assigned new values (otherwise we change old objects)
242
+ def fork instance, attrs = {}
243
+ object_type = instance.class
244
+
245
+ role_value_map =
246
+ object_type.all_role_transitive.inject({}) do |hash, (role_name, role)|
247
+ next hash if !role.unique
248
+ next hash if role.fact_type.class == ActiveFacts::API::TypeInheritanceFactType
249
+ if role.counterpart && role.counterpart.unique && !attrs.include?(role.name) && instance.send(role.getter) != nil
250
+ raise "#{object_type.basename} cannot be forked unless a replacement value for #{role.name} is provided"
251
+ end
252
+ value = attrs[role_name] || instance.send(role.getter)
253
+ hash[role_name] = value if value != nil
254
+ hash
255
+ end
256
+
257
+ assert(object_type, role_value_map)
258
+ end
259
+
239
260
  def clone
240
261
  remaining_object_types = vocabulary.object_type.clone
241
262
  constellation = self.class.new(vocabulary, @options)
@@ -1,5 +1,5 @@
1
1
  module ActiveFacts
2
2
  module API
3
- VERSION = "1.8.5"
3
+ VERSION = "1.9.0"
4
4
  end
5
5
  end
@@ -50,6 +50,10 @@ module ActiveFacts
50
50
 
51
51
  class Tracer
52
52
  def initialize
53
+ reinitialize
54
+ end
55
+
56
+ def reinitialize
53
57
  @indent = 0 # Current nesting level of enabled trace blocks
54
58
  @nested = false # Set when a block enables all enclosed tracing
55
59
  @available = {} # Hash of available trace keys, accumulated during the run
@@ -79,6 +83,10 @@ module ActiveFacts
79
83
  !key.empty? && @keys[key.to_sym]
80
84
  end
81
85
 
86
+ def enabled
87
+ @keys.keys
88
+ end
89
+
82
90
  def enable key
83
91
  if !key.empty? && !@keys[s = key.to_sym]
84
92
  @keys[s] = true
@@ -190,9 +198,13 @@ module ActiveFacts
190
198
  end
191
199
  end
192
200
 
201
+ def display key, msg
202
+ puts msg
203
+ end
204
+
193
205
  private
194
206
  def show(*args)
195
- enabled_prefix = selected?(args)
207
+ key, enabled_prefix = *selected?(args)
196
208
 
197
209
  # Emit the message if enabled or a parent is:
198
210
  if enabled_prefix && args.size > 0
@@ -206,11 +218,11 @@ module ActiveFacts
206
218
  if @delayed == true
207
219
  @delayed = message # Arrange to display this message later, if necessary
208
220
  elsif @delayed
209
- puts @delayed # Display a delayed message, then the current one
221
+ display key, @delayed # Display a delayed message, then the current one
210
222
  @delayed = nil
211
- puts message
223
+ display key, message
212
224
  else
213
- puts message
225
+ display key, message
214
226
  end
215
227
  end
216
228
  @indent += (enabled_prefix ? 1 : 0)
@@ -237,7 +249,6 @@ module ActiveFacts
237
249
  end
238
250
 
239
251
  @available[key] ||= key # Remember that this trace was requested, for help
240
- @nested ||= nested # Activate nesting, if requested
241
252
  if @nested || # This trace is enabled because it's in a nested block
242
253
  @keys[key] || # This trace is enabled in its own right
243
254
  @keys[:all] # This trace is enabled because all are
@@ -247,9 +258,10 @@ module ActiveFacts
247
258
  else
248
259
  enabled_prefix = ''
249
260
  end
261
+ @nested ||= nested # Activate nesting, if requested
250
262
  end
251
263
 
252
- enabled_prefix
264
+ [key, enabled_prefix]
253
265
  end
254
266
 
255
267
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activefacts-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.5
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clifford Heath
@@ -106,7 +106,6 @@ extensions: []
106
106
  extra_rdoc_files:
107
107
  - LICENSE.txt
108
108
  - README.rdoc
109
- - TODO
110
109
  files:
111
110
  - ".document"
112
111
  - ".gitignore"
@@ -116,7 +115,6 @@ files:
116
115
  - LICENSE.txt
117
116
  - README.rdoc
118
117
  - Rakefile
119
- - TODO
120
118
  - VERSION
121
119
  - activefacts-api.gemspec
122
120
  - lib/activefacts/api.rb
data/TODO DELETED
@@ -1,7 +0,0 @@
1
- Default to rbtree from Hash
2
- For InstanceIndex
3
- For RoleValues
4
-
5
- Constraints
6
- Ensure role methods arguments are flexible for plugins
7
- Make mandatory work (propagate retraction? or just optionally?)