activefacts-api 0.9.6 → 0.9.7
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.
- data/.travis.yml +3 -0
- data/Gemfile +1 -0
- data/VERSION +1 -1
- data/activefacts-api.gemspec +5 -2
- data/lib/activefacts/api/constellation.rb +3 -2
- data/lib/activefacts/api/entity.rb +2 -2
- data/lib/activefacts/api/guid.rb +4 -0
- data/lib/activefacts/api/instance_index.rb +88 -11
- data/lib/activefacts/api/numeric.rb +12 -0
- data/lib/activefacts/api/role_values.rb +26 -5
- data/spec/constellation/constellation_spec.rb +1 -1
- data/spec/identification_scheme/identification_spec.rb +1 -1
- metadata +170 -151
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.7
|
data/activefacts-api.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "activefacts-api"
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Clifford Heath"]
|
12
|
-
s.date = "2013-01-
|
12
|
+
s.date = "2013-01-29"
|
13
13
|
s.description = "\nThe ActiveFacts API is a Ruby DSL for managing constellations of elementary facts.\nEach fact is either existential (a value or an entity), characteristic (boolean) or\nbinary relational (A rel B). Relational facts are consistently co-referenced, so you\ncan traverse them efficiently in any direction. Each constellation maintains constraints\nover the fact population.\n"
|
14
14
|
s.email = "clifford.heath@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -75,6 +75,7 @@ Gem::Specification.new do |s|
|
|
75
75
|
s.specification_version = 3
|
76
76
|
|
77
77
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
78
|
+
s.add_runtime_dependency(%q<rbtree-pure>, [">= 0"])
|
78
79
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
79
80
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
80
81
|
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
|
@@ -86,6 +87,7 @@ Gem::Specification.new do |s|
|
|
86
87
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
87
88
|
s.add_development_dependency(%q<rdoc>, [">= 2.4.2"])
|
88
89
|
else
|
90
|
+
s.add_dependency(%q<rbtree-pure>, [">= 0"])
|
89
91
|
s.add_dependency(%q<rake>, [">= 0"])
|
90
92
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
91
93
|
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
@@ -98,6 +100,7 @@ Gem::Specification.new do |s|
|
|
98
100
|
s.add_dependency(%q<rdoc>, [">= 2.4.2"])
|
99
101
|
end
|
100
102
|
else
|
103
|
+
s.add_dependency(%q<rbtree-pure>, [">= 0"])
|
101
104
|
s.add_dependency(%q<rake>, [">= 0"])
|
102
105
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
103
106
|
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
@@ -55,7 +55,7 @@ module ActiveFacts
|
|
55
55
|
if reason = invalid_object_type(k)
|
56
56
|
raise InvalidObjectType.new(@vocabulary, k, reason)
|
57
57
|
end
|
58
|
-
h[k] = InstanceIndex.new(self, k)
|
58
|
+
h[k] = InstanceIndex.new(self, k, !!(@options[:sort] || ENV['ACTIVEFACTS_SORT']))
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -111,8 +111,9 @@ module ActiveFacts
|
|
111
111
|
end
|
112
112
|
|
113
113
|
# Create a new empty Constellation over the given Vocabulary
|
114
|
-
def initialize(vocabulary)
|
114
|
+
def initialize(vocabulary, options = {})
|
115
115
|
@vocabulary = vocabulary
|
116
|
+
@options = options
|
116
117
|
end
|
117
118
|
|
118
119
|
def assert(klass, *args)
|
@@ -132,8 +132,8 @@ module ActiveFacts
|
|
132
132
|
klass.identifying_roles.map do |role|
|
133
133
|
value = send(role.name)
|
134
134
|
counterpart_class = role.counterpart && role.counterpart.object_type
|
135
|
-
|
136
|
-
|
135
|
+
value.identifying_role_values(counterpart_class)
|
136
|
+
end
|
137
137
|
end
|
138
138
|
|
139
139
|
# Identifying role values in a hash form.
|
data/lib/activefacts/api/guid.rb
CHANGED
@@ -4,46 +4,123 @@
|
|
4
4
|
#
|
5
5
|
# Copyright (c) 2009 Clifford Heath. Read the LICENSE file.
|
6
6
|
#
|
7
|
-
require '
|
7
|
+
require 'rbtree'
|
8
8
|
|
9
9
|
module ActiveFacts
|
10
10
|
module API
|
11
|
+
class KeyArray < Array
|
12
|
+
def initialize(a)
|
13
|
+
super(
|
14
|
+
a.map do |e|
|
15
|
+
if e.is_a?(Array) && e.class != self.class
|
16
|
+
KeyArray.new(e)
|
17
|
+
elsif e.eql?(nil)
|
18
|
+
[]
|
19
|
+
else
|
20
|
+
e
|
21
|
+
end
|
22
|
+
end
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def inspect
|
27
|
+
"KeyArray"+super
|
28
|
+
end
|
29
|
+
|
30
|
+
def <=>(other)
|
31
|
+
unless other.is_a?(Array) # Any kind of Array, not just KeyArray
|
32
|
+
return 1
|
33
|
+
end
|
34
|
+
|
35
|
+
0.upto(size-1) do |i|
|
36
|
+
diff = ((s = self[i]) <=> (o = other[i]) rescue nil)
|
37
|
+
case diff
|
38
|
+
when 0 # Same value, whether exactly the same class or not
|
39
|
+
next
|
40
|
+
when nil # Non-comparable values
|
41
|
+
return -1 if s == nil # Ensure that nil values come before other values
|
42
|
+
return 1 if o == nil
|
43
|
+
diff = s.class.name <=> o.class.name # Otherwise just ensure stable sorting
|
44
|
+
return diff if diff != 0
|
45
|
+
else
|
46
|
+
return diff
|
47
|
+
end
|
48
|
+
end
|
49
|
+
0
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
11
53
|
#
|
12
54
|
# Each Constellation maintains an InstanceIndex for each ObjectType in its Vocabulary.
|
13
55
|
# The InstanceIndex object is returned when you call @constellation.ObjectType with no
|
14
56
|
# arguments (where ObjectType is the object_type name you're interested in)
|
15
57
|
#
|
16
58
|
class InstanceIndex
|
17
|
-
extend Forwardable
|
18
|
-
def_delegators :@hash, :size, :empty?, :each, :map,
|
19
|
-
:detect, :values, :keys, :detect, :delete
|
20
59
|
|
21
|
-
|
60
|
+
# Should be in module ForwardableWithArityChecking
|
61
|
+
def self.def_single_delegator(accessor, method, *expected_arities)
|
62
|
+
str = %{
|
63
|
+
def #{method}(*args, &block)
|
64
|
+
if #{expected_arities.size == 0 ? "block" : "!block || !#{expected_arities.inspect}.include?(block.arity)" }
|
65
|
+
raise ArgumentError.new("Arity mismatch on #{name}\##{method}, got \#{block ? block.arity : 'none'} want #{expected_arities.inspect} at \#{caller*"\n\t"})")
|
66
|
+
end
|
67
|
+
#{accessor}.__send__(:#{method}, *args, &block)
|
68
|
+
end
|
69
|
+
}
|
70
|
+
eval(str)
|
71
|
+
end
|
72
|
+
|
73
|
+
def_single_delegator :@hash, :size
|
74
|
+
def_single_delegator :@hash, :empty?
|
75
|
+
def_single_delegator :@hash, :each, 1, 2, -3
|
76
|
+
def_single_delegator :@hash, :map, 1, 2, -3
|
77
|
+
def_single_delegator :@hash, :detect, 1
|
78
|
+
def_single_delegator :@hash, :values
|
79
|
+
def_single_delegator :@hash, :keys
|
80
|
+
|
81
|
+
def initialize(constellation, klass, sort)
|
22
82
|
@constellation = constellation
|
23
83
|
@klass = klass
|
24
|
-
|
84
|
+
@sort = sort
|
85
|
+
@hash = sort ? RBTree.new : {}
|
25
86
|
end
|
26
87
|
|
27
88
|
def inspect
|
28
89
|
"<InstanceIndex for #{@klass.name} in #{@constellation.inspect}>"
|
29
90
|
end
|
30
91
|
|
92
|
+
def delete(k)
|
93
|
+
@hash.delete(@sort ? form_key(k) : k)
|
94
|
+
end
|
95
|
+
|
31
96
|
def detect &b
|
32
97
|
r = @hash.detect &b
|
33
98
|
r ? r[1] : nil
|
34
99
|
end
|
35
100
|
|
36
101
|
def []=(key, value) #:nodoc:
|
37
|
-
@hash[key] = value
|
102
|
+
@hash[@sort ? form_key(key) : key] = value
|
38
103
|
end
|
39
104
|
|
40
105
|
def [](key)
|
41
|
-
|
106
|
+
@hash[@sort ? form_key(key) : key]
|
107
|
+
end
|
108
|
+
|
109
|
+
def refresh_key(old_key)
|
110
|
+
value = @hash.delete(@sort ? form_key(old_key) : old_key)
|
111
|
+
new_key = value.identifying_role_values(@klass)
|
112
|
+
@hash[@sort ? form_key(new_key) : new_key] = value if value
|
42
113
|
end
|
43
114
|
|
44
|
-
def
|
45
|
-
|
46
|
-
|
115
|
+
def form_key key
|
116
|
+
case key
|
117
|
+
when Array
|
118
|
+
KeyArray.new(key)
|
119
|
+
when nil
|
120
|
+
[]
|
121
|
+
else
|
122
|
+
key
|
123
|
+
end
|
47
124
|
end
|
48
125
|
end
|
49
126
|
end
|
@@ -191,6 +191,18 @@ class AutoCounter
|
|
191
191
|
to_s.eql?(o.to_s)
|
192
192
|
end
|
193
193
|
|
194
|
+
def <=>(o) #:nodoc:
|
195
|
+
if self.defined? && !o == [] && o.defined?
|
196
|
+
if (c = (self.class <=> o.class.name)) != 0
|
197
|
+
return c
|
198
|
+
else
|
199
|
+
return to_i <=> o.to_i
|
200
|
+
end
|
201
|
+
else
|
202
|
+
to_s.<=>(o.to_s)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
194
206
|
def identifying_role_values klass = nil
|
195
207
|
self
|
196
208
|
end
|
@@ -4,16 +4,37 @@
|
|
4
4
|
#
|
5
5
|
# Copyright (c) 2009 Clifford Heath. Read the LICENSE file.
|
6
6
|
#
|
7
|
-
require 'forwardable'
|
8
|
-
|
9
7
|
module ActiveFacts
|
10
8
|
module API
|
11
9
|
|
12
10
|
class RoleValues #:nodoc:
|
13
|
-
|
14
|
-
|
11
|
+
# Paranoia. Because of changes in the implementation, I need to catch old code that calls these delegates incorrectly
|
12
|
+
def self.def_single_delegator(accessor, method, *expected_arities)
|
13
|
+
str = %{
|
14
|
+
def #{method}(*args, &block)
|
15
|
+
if #{expected_arities.size == 0 ? "block" : "!block || !#{expected_arities.inspect}.include?(block.arity)" }
|
16
|
+
raise ArgumentError.new("Arity mismatch on #{name}\##{method}, got \#{block ? block.arity : 'none'} want #{expected_arities.inspect} at \#{caller*"\n\t"})")
|
17
|
+
end
|
18
|
+
#{accessor}.__send__(:#{method}, *args, &block)
|
19
|
+
end
|
20
|
+
}
|
21
|
+
eval(str)
|
22
|
+
end
|
15
23
|
|
16
|
-
|
24
|
+
def_single_delegator :@a, :all?, 1
|
25
|
+
def_single_delegator :@a, :empty?
|
26
|
+
def_single_delegator :@a, :include?
|
27
|
+
def_single_delegator :@a, :inject, 2
|
28
|
+
def_single_delegator :@a, :select, 1
|
29
|
+
def_single_delegator :@a, :reject, 1
|
30
|
+
def_single_delegator :@a, :size
|
31
|
+
def_single_delegator :@a, :sort_by, 1
|
32
|
+
def_single_delegator :@a, :to_a
|
33
|
+
def_single_delegator :@a, :-
|
34
|
+
# These delegators allow a negative arity in RSpec because the tests test it (to make sure the code doesn't pass too many args)
|
35
|
+
def_single_delegator :@a, :each, *([1] + Array(defined?(::RSpec) ? -2 : nil))
|
36
|
+
def_single_delegator :@a, :detect, 1, *([1] + Array(defined?(::RSpec) ? -2 : nil))
|
37
|
+
def_single_delegator :@a, :map, 1, -1
|
17
38
|
|
18
39
|
def initialize
|
19
40
|
@a = []
|
@@ -289,7 +289,7 @@ describe "A Constellation instance" do
|
|
289
289
|
it "should support each" do
|
290
290
|
baz = @constellation.Name("baz")
|
291
291
|
count = 0
|
292
|
-
@constellation.Name.each { |
|
292
|
+
@constellation.Name.each { |k, v| count += 1 }
|
293
293
|
count.should == 1
|
294
294
|
end
|
295
295
|
|
@@ -260,7 +260,7 @@ describe "An Entity Type" do
|
|
260
260
|
end
|
261
261
|
|
262
262
|
it "should be found in the constellation using the value" do
|
263
|
-
@c.Room[[@b.identifying_role_values, @rn]].should == @r
|
263
|
+
@c.Room[[@b.identifying_role_values, @rn.identifying_role_values]].should == @r
|
264
264
|
@c.Room[[@b.identifying_role_values, 101]].should == @r
|
265
265
|
@c.Room[[['Mackay'], 101]].should == @r
|
266
266
|
end
|
metadata
CHANGED
@@ -1,190 +1,215 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: activefacts-api
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.7
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 9
|
9
|
-
- 6
|
10
|
-
version: 0.9.6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Clifford Heath
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rbtree-pure
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
22
23
|
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
23
38
|
type: :development
|
24
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
41
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
|
31
|
-
- 0
|
32
|
-
version: "0"
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
35
47
|
name: jeweler
|
36
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
37
54
|
type: :development
|
38
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
57
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
49
63
|
name: rspec
|
50
|
-
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.6.0
|
51
70
|
type: :development
|
52
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
73
|
none: false
|
54
|
-
requirements:
|
74
|
+
requirements:
|
55
75
|
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
hash: 23
|
58
|
-
segments:
|
59
|
-
- 2
|
60
|
-
- 6
|
61
|
-
- 0
|
76
|
+
- !ruby/object:Gem::Version
|
62
77
|
version: 2.6.0
|
63
|
-
|
64
|
-
- !ruby/object:Gem::Dependency
|
78
|
+
- !ruby/object:Gem::Dependency
|
65
79
|
name: ruby-debug
|
66
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
67
86
|
type: :development
|
68
|
-
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
89
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
|
75
|
-
- 0
|
76
|
-
version: "0"
|
77
|
-
version_requirements: *id004
|
78
|
-
- !ruby/object:Gem::Dependency
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
79
95
|
name: debugger
|
80
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
81
102
|
type: :development
|
82
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
|
89
|
-
- 0
|
90
|
-
version: "0"
|
91
|
-
version_requirements: *id005
|
92
|
-
- !ruby/object:Gem::Dependency
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
93
111
|
name: pry
|
94
|
-
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
95
118
|
type: :development
|
96
|
-
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
121
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
|
103
|
-
- 0
|
104
|
-
version: "0"
|
105
|
-
version_requirements: *id006
|
106
|
-
- !ruby/object:Gem::Dependency
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
107
127
|
name: rspec
|
108
|
-
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 2.3.0
|
109
134
|
type: :development
|
110
|
-
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
137
|
none: false
|
112
|
-
requirements:
|
138
|
+
requirements:
|
113
139
|
- - ~>
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
hash: 3
|
116
|
-
segments:
|
117
|
-
- 2
|
118
|
-
- 3
|
119
|
-
- 0
|
140
|
+
- !ruby/object:Gem::Version
|
120
141
|
version: 2.3.0
|
121
|
-
|
122
|
-
- !ruby/object:Gem::Dependency
|
142
|
+
- !ruby/object:Gem::Dependency
|
123
143
|
name: bundler
|
124
|
-
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.0.0
|
125
150
|
type: :development
|
126
|
-
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
153
|
none: false
|
128
|
-
requirements:
|
154
|
+
requirements:
|
129
155
|
- - ~>
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
hash: 23
|
132
|
-
segments:
|
133
|
-
- 1
|
134
|
-
- 0
|
135
|
-
- 0
|
156
|
+
- !ruby/object:Gem::Version
|
136
157
|
version: 1.0.0
|
137
|
-
|
138
|
-
- !ruby/object:Gem::Dependency
|
158
|
+
- !ruby/object:Gem::Dependency
|
139
159
|
name: jeweler
|
140
|
-
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ~>
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 1.5.2
|
141
166
|
type: :development
|
142
|
-
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
143
169
|
none: false
|
144
|
-
requirements:
|
170
|
+
requirements:
|
145
171
|
- - ~>
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
hash: 7
|
148
|
-
segments:
|
149
|
-
- 1
|
150
|
-
- 5
|
151
|
-
- 2
|
172
|
+
- !ruby/object:Gem::Version
|
152
173
|
version: 1.5.2
|
153
|
-
|
154
|
-
- !ruby/object:Gem::Dependency
|
174
|
+
- !ruby/object:Gem::Dependency
|
155
175
|
name: rdoc
|
156
|
-
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ! '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 2.4.2
|
157
182
|
type: :development
|
158
|
-
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
159
185
|
none: false
|
160
|
-
requirements:
|
161
|
-
- -
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
hash: 27
|
164
|
-
segments:
|
165
|
-
- 2
|
166
|
-
- 4
|
167
|
-
- 2
|
186
|
+
requirements:
|
187
|
+
- - ! '>='
|
188
|
+
- !ruby/object:Gem::Version
|
168
189
|
version: 2.4.2
|
169
|
-
|
170
|
-
|
171
|
-
|
190
|
+
description: ! '
|
191
|
+
|
172
192
|
The ActiveFacts API is a Ruby DSL for managing constellations of elementary facts.
|
173
|
-
|
174
|
-
|
193
|
+
|
194
|
+
Each fact is either existential (a value or an entity), characteristic (boolean)
|
195
|
+
or
|
196
|
+
|
197
|
+
binary relational (A rel B). Relational facts are consistently co-referenced, so
|
198
|
+
you
|
199
|
+
|
175
200
|
can traverse them efficiently in any direction. Each constellation maintains constraints
|
201
|
+
|
176
202
|
over the fact population.
|
177
203
|
|
204
|
+
'
|
178
205
|
email: clifford.heath@gmail.com
|
179
206
|
executables: []
|
180
|
-
|
181
207
|
extensions: []
|
182
|
-
|
183
|
-
extra_rdoc_files:
|
208
|
+
extra_rdoc_files:
|
184
209
|
- LICENSE.txt
|
185
210
|
- README.rdoc
|
186
211
|
- TODO
|
187
|
-
files:
|
212
|
+
files:
|
188
213
|
- .document
|
189
214
|
- .rspec
|
190
215
|
- .travis.yml
|
@@ -233,37 +258,31 @@ files:
|
|
233
258
|
- spec/support/reduce_exceptions_helper.rb
|
234
259
|
- TODO
|
235
260
|
homepage: http://github.com/cjheath/activefacts-api
|
236
|
-
licenses:
|
261
|
+
licenses:
|
237
262
|
- MIT
|
238
263
|
post_install_message:
|
239
264
|
rdoc_options: []
|
240
|
-
|
241
|
-
require_paths:
|
265
|
+
require_paths:
|
242
266
|
- lib
|
243
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
267
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
244
268
|
none: false
|
245
|
-
requirements:
|
246
|
-
- -
|
247
|
-
- !ruby/object:Gem::Version
|
248
|
-
|
249
|
-
segments:
|
269
|
+
requirements:
|
270
|
+
- - ! '>='
|
271
|
+
- !ruby/object:Gem::Version
|
272
|
+
version: '0'
|
273
|
+
segments:
|
250
274
|
- 0
|
251
|
-
|
252
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
|
+
hash: -1550200325745257681
|
276
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
253
277
|
none: false
|
254
|
-
requirements:
|
255
|
-
- -
|
256
|
-
- !ruby/object:Gem::Version
|
257
|
-
|
258
|
-
segments:
|
259
|
-
- 0
|
260
|
-
version: "0"
|
278
|
+
requirements:
|
279
|
+
- - ! '>='
|
280
|
+
- !ruby/object:Gem::Version
|
281
|
+
version: '0'
|
261
282
|
requirements: []
|
262
|
-
|
263
283
|
rubyforge_project:
|
264
284
|
rubygems_version: 1.8.24
|
265
285
|
signing_key:
|
266
286
|
specification_version: 3
|
267
287
|
summary: A fact-based data model DSL and API
|
268
288
|
test_files: []
|
269
|
-
|