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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d26f7abaafccccb51ef4077d66fed7a4a8ef846df2a7d46191d7113b27a2a689
4
- data.tar.gz: 8d0a64e42a4a695edc7ef5a7958ceb69aa6a965e53778782bd865c49a8752a4f
3
+ metadata.gz: fec35b6880c4cfe0224107a19dd60c4b2e9ca6316b87331897b06d339f1e0f39
4
+ data.tar.gz: c096effe0c1789dae54ad5da35c9ca603f279c55f93597871f0c03846c04e457
5
5
  SHA512:
6
- metadata.gz: 65c7a43401b8933e212dea979319cc75a0e42349123f0cd98871ee4d1493002b2f280a229820101ef481168c64a2e97333a549036dd3c88dfa3d05b4230d9085
7
- data.tar.gz: 9106f2c57b7840e95de6a6dba53859f0d0c4e0bea5770b22d558c35894e847145fe0b9d5640d017441baa91be48bcbc4a09cf38ae8390ab9d0efe379b5add37b
6
+ metadata.gz: 6b2b85cf88fe6f5857fd51d5f58989f4ef078829749bf565b41184b15472b6247c9fa9f901848fcdfc0cc2dfe04be32098e43351e887ea546cbc2817171f0d44
7
+ data.tar.gz: 1d720b58f13c156e8ee1a8c2c81d88f27339a5924fdfac8a362341a6c0324524d540c82ce1fb2df09e05d7ca7c01e5ca77369b8a35861f8aa131f06eb40018be
@@ -43,6 +43,10 @@ class Factbase::Accum
43
43
  "#{@fact} + #{@props}"
44
44
  end
45
45
 
46
+ def all_properties
47
+ @fact.all_properties
48
+ end
49
+
46
50
  others do |*args|
47
51
  k = args[0].to_s
48
52
  if k.end_with?('=')
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 == 'to_s'
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
@@ -66,6 +66,10 @@ class Factbase::Inv
66
66
  @fact.to_s
67
67
  end
68
68
 
69
+ def all_properties
70
+ @fact.all_properties
71
+ end
72
+
69
73
  others do |*args|
70
74
  k = args[0].to_s
71
75
  @block.call(k[0..-2], args[1]) if k.end_with?('=')
@@ -86,6 +86,14 @@ class Factbase::Looged
86
86
  @loog = loog
87
87
  end
88
88
 
89
+ def to_s
90
+ @fact.to_s
91
+ end
92
+
93
+ def all_properties
94
+ @fact.all_properties
95
+ end
96
+
89
97
  others do |*args|
90
98
  r = @fact.method_missing(*args)
91
99
  k = args[0].to_s
@@ -89,6 +89,14 @@ class Factbase::Rules
89
89
  @check = check
90
90
  end
91
91
 
92
+ def to_s
93
+ @fact.to_s
94
+ end
95
+
96
+ def all_properties
97
+ @fact.all_properties
98
+ end
99
+
92
100
  others do |*args|
93
101
  r = @fact.method_missing(*args)
94
102
  k = args[0].to_s
data/lib/factbase/tee.rb CHANGED
@@ -41,6 +41,10 @@ class Factbase::Tee
41
41
  @fact.to_s
42
42
  end
43
43
 
44
+ def all_properties
45
+ @fact.all_properties
46
+ end
47
+
44
48
  others do |*args|
45
49
  if args[0].to_s == '[]' && args[1].to_s.start_with?('$')
46
50
  n = args[1].to_s
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.56'
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
@@ -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
@@ -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.56
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-27 00:00:00.000000000 Z
11
+ date: 2024-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace