factbase 0.0.56 → 0.0.57
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 +4 -4
- data/lib/factbase/accum.rb +4 -0
- data/lib/factbase/fact.rb +7 -1
- data/lib/factbase/inv.rb +4 -0
- data/lib/factbase/looged.rb +8 -0
- data/lib/factbase/rules.rb +8 -0
- data/lib/factbase/tee.rb +4 -0
- data/lib/factbase.rb +1 -1
- data/test/factbase/test_fact.rb +12 -0
- data/test/factbase/test_query.rb +7 -0
- data/test/factbase/test_to_xml.rb +0 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fec35b6880c4cfe0224107a19dd60c4b2e9ca6316b87331897b06d339f1e0f39
|
4
|
+
data.tar.gz: c096effe0c1789dae54ad5da35c9ca603f279c55f93597871f0c03846c04e457
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b2b85cf88fe6f5857fd51d5f58989f4ef078829749bf565b41184b15472b6247c9fa9f901848fcdfc0cc2dfe04be32098e43351e887ea546cbc2817171f0d44
|
7
|
+
data.tar.gz: 1d720b58f13c156e8ee1a8c2c81d88f27339a5924fdfac8a362341a6c0324524d540c82ce1fb2df09e05d7ca7c01e5ca77369b8a35861f8aa131f06eb40018be
|
data/lib/factbase/accum.rb
CHANGED
data/lib/factbase/fact.rb
CHANGED
@@ -57,13 +57,19 @@ class Factbase::Fact
|
|
57
57
|
"[ #{@map.map { |k, v| "#{k}: #{v}" }.join(', ')} ]"
|
58
58
|
end
|
59
59
|
|
60
|
+
# Get a list of all props.
|
61
|
+
# @return [Array<String>] List of all props in the fact
|
62
|
+
def all_properties
|
63
|
+
@map.keys
|
64
|
+
end
|
65
|
+
|
60
66
|
# When a method is missing, this method is called.
|
61
67
|
others do |*args|
|
62
68
|
k = args[0].to_s
|
63
69
|
if k.end_with?('=')
|
64
70
|
kk = k[0..-2]
|
65
71
|
raise "Invalid prop name '#{kk}'" unless kk.match?(/^[a-z_][_a-zA-Z0-9]*$/)
|
66
|
-
raise "Prohibited prop name '#{kk}'" if kk
|
72
|
+
raise "Prohibited prop name '#{kk}'" if methods.include?(kk.to_sym)
|
67
73
|
v = args[1]
|
68
74
|
raise "Prop value can't be nil" if v.nil?
|
69
75
|
raise "Prop value can't be empty" if v == ''
|
data/lib/factbase/inv.rb
CHANGED
data/lib/factbase/looged.rb
CHANGED
data/lib/factbase/rules.rb
CHANGED
data/lib/factbase/tee.rb
CHANGED
data/lib/factbase.rb
CHANGED
@@ -81,7 +81,7 @@ require 'yaml'
|
|
81
81
|
# License:: MIT
|
82
82
|
class Factbase
|
83
83
|
# Current version of the gem (changed by .rultor.yml on every release)
|
84
|
-
VERSION = '0.0.
|
84
|
+
VERSION = '0.0.57'
|
85
85
|
|
86
86
|
# An exception that may be thrown in a transaction, to roll it back.
|
87
87
|
class Rollback < StandardError; end
|
data/test/factbase/test_fact.rb
CHANGED
@@ -110,4 +110,16 @@ class TestFact < Minitest::Test
|
|
110
110
|
assert_equal(t.utc, f.foo)
|
111
111
|
assert_equal(t.utc.to_s, f.foo.to_s)
|
112
112
|
end
|
113
|
+
|
114
|
+
def test_some_names_are_prohibited
|
115
|
+
f = Factbase::Fact.new(Mutex.new, {})
|
116
|
+
assert_raises { f.to_s = 42 }
|
117
|
+
assert_raises { f.class = 42 }
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_get_all_properties
|
121
|
+
f = Factbase::Fact.new(Mutex.new, {})
|
122
|
+
f.foo = 42
|
123
|
+
assert(f.all_properties.include?('foo'))
|
124
|
+
end
|
113
125
|
end
|
data/test/factbase/test_query.rb
CHANGED
@@ -173,4 +173,11 @@ class TestQuery < Minitest::Test
|
|
173
173
|
maps << { 'foo' => [42] }
|
174
174
|
assert(Factbase::Query.new(maps, Mutex.new, '(as bar (plus xxx 3))').each.to_a[0]['bar'].nil?)
|
175
175
|
end
|
176
|
+
|
177
|
+
def test_get_all_properties
|
178
|
+
maps = []
|
179
|
+
maps << { 'foo' => [42] }
|
180
|
+
f = Factbase::Query.new(maps, Mutex.new, '(always)').each.to_a[0]
|
181
|
+
assert(f.all_properties.include?('foo'))
|
182
|
+
end
|
176
183
|
end
|
@@ -65,12 +65,10 @@ class TestToXML < Minitest::Test
|
|
65
65
|
f = fb.insert
|
66
66
|
f.type = 1
|
67
67
|
f.f = 2
|
68
|
-
f.class = 3
|
69
68
|
to = Factbase::ToXML.new(fb)
|
70
69
|
xml = Nokogiri::XML.parse(to.xml)
|
71
70
|
assert(!xml.xpath('/fb/f/type').empty?)
|
72
71
|
assert(!xml.xpath('/fb/f/f').empty?)
|
73
|
-
assert(!xml.xpath('/fb/f/class').empty?)
|
74
72
|
end
|
75
73
|
|
76
74
|
def test_show_types_as_attributes
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.57
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|