veritas 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +5 -4
- data/Gemfile +16 -14
- data/Guardfile +0 -4
- data/README.md +188 -0
- data/Rakefile +2 -2
- data/TODO +0 -16
- data/config/flay.yml +1 -1
- data/config/flog.yml +1 -1
- data/config/roodi.yml +4 -4
- data/config/site.reek +7 -3
- data/lib/veritas/aggregate.rb +18 -0
- data/lib/veritas/algebra/extension.rb +2 -29
- data/lib/veritas/algebra/projection.rb +2 -29
- data/lib/veritas/algebra/rename/aliases.rb +4 -32
- data/lib/veritas/algebra/rename.rb +2 -29
- data/lib/veritas/algebra/restriction.rb +2 -29
- data/lib/veritas/algebra/summarization.rb +2 -31
- data/lib/veritas/attribute/time.rb +1 -1
- data/lib/veritas/attribute.rb +20 -40
- data/lib/veritas/function/binary.rb +2 -3
- data/lib/veritas/function/connective/negation.rb +1 -1
- data/lib/veritas/function/predicate/enumerable.rb +19 -0
- data/lib/veritas/function/predicate/exclusion.rb +1 -1
- data/lib/veritas/function/predicate/match.rb +1 -1
- data/lib/veritas/function/unary.rb +5 -3
- data/lib/veritas/function.rb +1 -41
- data/lib/veritas/relation/base.rb +2 -29
- data/lib/veritas/relation/empty.rb +30 -2
- data/lib/veritas/relation/header.rb +17 -31
- data/lib/veritas/relation/materialized.rb +0 -12
- data/lib/veritas/relation/operation/limit.rb +2 -29
- data/lib/veritas/relation/operation/offset.rb +2 -29
- data/lib/veritas/relation/operation/order/direction.rb +3 -29
- data/lib/veritas/relation/operation/order/direction_set.rb +18 -34
- data/lib/veritas/relation/operation/order.rb +4 -56
- data/lib/veritas/relation.rb +8 -36
- data/lib/veritas/support/aliasable.rb +20 -7
- data/lib/veritas/support/comparator.rb +81 -0
- data/lib/veritas/support/evaluator.rb +1 -1
- data/lib/veritas/support/immutable.rb +22 -49
- data/lib/veritas/support/operation/binary.rb +3 -30
- data/lib/veritas/support/operation/unary.rb +3 -29
- data/lib/veritas/tuple.rb +19 -29
- data/lib/veritas/version.rb +1 -1
- data/lib/veritas.rb +1 -0
- data/spec/integration/veritas/relation/efficient_enumerable_spec.rb +3 -3
- data/spec/shared/hash_method_behavior.rb +7 -2
- data/spec/unit/date/pred_spec.rb +1 -1
- data/spec/unit/veritas/aggregate/equal_value_spec.rb +52 -0
- data/spec/unit/veritas/aggregate/hash_spec.rb +15 -0
- data/spec/unit/veritas/aliasable/inheritable_alias_spec.rb +1 -1
- data/spec/unit/veritas/comparator/compare_spec.rb +40 -0
- data/spec/unit/veritas/comparator/methods/eql_spec.rb +48 -0
- data/spec/unit/veritas/evaluator/context/respond_to_spec.rb +1 -1
- data/spec/unit/veritas/function/predicate/enumerable/call_spec.rb +36 -0
- data/spec/unit/veritas/function/unary/hash_spec.rb +18 -0
- data/spec/unit/veritas/immutable/freeze_spec.rb +2 -2
- data/spec/unit/veritas/immutable/memoize_spec.rb +13 -0
- data/spec/unit/veritas/immutable/module_methods/memoize_spec.rb +1 -1
- data/spec/unit/veritas/relation/empty/class_methods/new_spec.rb +30 -0
- data/spec/unit/veritas/relation/empty/each_spec.rb +20 -5
- data/spec/unit/veritas/relation/empty/size_spec.rb +11 -0
- data/spec/unit/veritas/relation/header/hash_spec.rb +1 -1
- data/spec/unit/veritas/relation/materialized/empty_spec.rb +0 -10
- data/spec/unit/veritas/relation/operation/order/direction_set/class_methods/coerce_spec.rb +12 -3
- data/tasks/metrics/heckle.rake +2 -3
- data/veritas.gemspec +21 -18
- metadata +36 -33
- data/README.rdoc +0 -143
- data/spec/unit/veritas/function/eql_spec.rb +0 -14
- data/spec/unit/veritas/function/equal_value_spec.rb +0 -14
- data/spec/unit/veritas/function/hash_spec.rb +0 -13
- data/spec/unit/veritas/immutable/memory/element_reference_spec.rb +0 -26
- data/spec/unit/veritas/immutable/memory/element_set_spec.rb +0 -19
- data/spec/unit/veritas/relation/operation/order/methods/order_spec.rb +0 -54
data/lib/veritas.rb
CHANGED
@@ -3,9 +3,14 @@
|
|
3
3
|
shared_examples_for 'a hash method' do
|
4
4
|
it_should_behave_like 'an idempotent method'
|
5
5
|
|
6
|
-
|
6
|
+
# TOOD: figure out if #hash under rbx should also always use Fixnum
|
7
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
8
|
+
it { should be_kind_of(Integer) }
|
9
|
+
else
|
10
|
+
it { should be_instance_of(Fixnum) }
|
11
|
+
end
|
7
12
|
|
8
13
|
it 'memoizes the hash code' do
|
9
|
-
subject.should eql(object.memoized(
|
14
|
+
subject.should eql(object.memoized(:hash))
|
10
15
|
end
|
11
16
|
end
|
data/spec/unit/date/pred_spec.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Aggregate, '#==' do
|
6
|
+
subject { object == other }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new(Aggregate) }
|
9
|
+
let(:object) { described_class.new(attribute) }
|
10
|
+
let(:attribute) { Attribute::Integer.new(:id) }
|
11
|
+
|
12
|
+
context 'with the same object' do
|
13
|
+
let(:other) { object }
|
14
|
+
|
15
|
+
it { should be(true) }
|
16
|
+
|
17
|
+
it 'is symmetric' do
|
18
|
+
should eql(other == object)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with an equivalent object' do
|
23
|
+
let(:other) { object.dup }
|
24
|
+
|
25
|
+
it { should be(true) }
|
26
|
+
|
27
|
+
it 'is symmetric' do
|
28
|
+
should eql(other == object)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'with an equivalent object of a subclass' do
|
33
|
+
let(:other) { Class.new(described_class).new(attribute) }
|
34
|
+
|
35
|
+
it { should be(true) }
|
36
|
+
|
37
|
+
it 'is symmetric' do
|
38
|
+
should eql(other == object)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with an object having a different attribute' do
|
43
|
+
let(:other_attribute) { Attribute::Integer.new(:other_id) }
|
44
|
+
let(:other) { described_class.new(other_attribute) }
|
45
|
+
|
46
|
+
it { should be(false) }
|
47
|
+
|
48
|
+
it 'is symmetric' do
|
49
|
+
should eql(other.eql?(object))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Aggregate, '#hash' do
|
6
|
+
subject { object.hash }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new(Aggregate) }
|
9
|
+
let(:object) { described_class.new(attribute) }
|
10
|
+
let(:attribute) { Attribute::Integer.new(:id) }
|
11
|
+
|
12
|
+
it_should_behave_like 'a hash method'
|
13
|
+
|
14
|
+
it { should == described_class.hash ^ attribute.hash }
|
15
|
+
end
|
@@ -37,7 +37,7 @@ describe Aliasable, '#inheritable_alias' do
|
|
37
37
|
file, line = aliasable.other.first.split(':')[0, 2]
|
38
38
|
|
39
39
|
File.expand_path(file).should eql(File.expand_path('../../../../../lib/veritas/support/aliasable.rb', __FILE__))
|
40
|
-
line.to_i.should eql(
|
40
|
+
line.to_i.should eql(38)
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'sets the file and line number properly' do
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Comparator, '#compare' do
|
6
|
+
subject { object.compare(*methods) }
|
7
|
+
|
8
|
+
let(:methods) { [ :nil?, :to_s ] }
|
9
|
+
let(:object) { Class.new { extend Comparator } }
|
10
|
+
let(:instance) { object.new }
|
11
|
+
|
12
|
+
before do
|
13
|
+
object.instance_eval { include Immutable }
|
14
|
+
end
|
15
|
+
|
16
|
+
it { should equal(object) }
|
17
|
+
|
18
|
+
it 'includes Comparator::Methods' do
|
19
|
+
expect { subject }.to change { object.include?(Comparator::Methods) }.from(false).to(true)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'defines a #hash public instance method' do
|
23
|
+
expect { subject }.to change { object.public_instance_methods(false).map(&:to_s) }.from([]).to([ 'hash' ])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'defines a #hash method that uses the class and declared methods' do
|
27
|
+
subject
|
28
|
+
instance.hash.should equal(object.hash ^ false.hash ^ instance.to_s.hash)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'memoizes #hash' do
|
32
|
+
subject
|
33
|
+
instance.hash
|
34
|
+
instance.memoized(:hash).should_not be_nil
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'defines a #cmp? private instance method' do
|
38
|
+
expect { subject }.to change { object.private_instance_methods(false).map(&:to_s) }.from([]).to([ 'cmp?' ])
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Comparator::Methods, '#eql?' do
|
6
|
+
subject { object.eql?(other) }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new { include Comparator::Methods } }
|
9
|
+
let(:object) { described_class.new }
|
10
|
+
|
11
|
+
before do
|
12
|
+
described_class.class_eval do
|
13
|
+
extend Comparator
|
14
|
+
include Immutable
|
15
|
+
compare :nil?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'with the same object' do
|
20
|
+
let(:other) { object }
|
21
|
+
|
22
|
+
it { should be(true) }
|
23
|
+
|
24
|
+
it 'is symmetric' do
|
25
|
+
should eql(other.eql?(object))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'with an equivalent object' do
|
30
|
+
let(:other) { object.dup }
|
31
|
+
|
32
|
+
it { should be(true) }
|
33
|
+
|
34
|
+
it 'is symmetric' do
|
35
|
+
should eql(other.eql?(object))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'with an equivalent object of a subclass' do
|
40
|
+
let(:other) { Class.new(described_class).new }
|
41
|
+
|
42
|
+
it { should be(false) }
|
43
|
+
|
44
|
+
it 'is symmetric' do
|
45
|
+
should eql(other.eql?(object))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Evaluator::Context, '#respond_to?' do
|
6
|
-
subject { object.respond_to?(method) }
|
6
|
+
subject { object.respond_to?(method, include_private) }
|
7
7
|
|
8
8
|
let(:attribute) { Attribute::Integer.new(:id) }
|
9
9
|
let(:header) { Relation::Header.new([ attribute ]) }
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Function::Predicate::Enumerable, '#call' do
|
6
|
+
subject { object.call(tuple) }
|
7
|
+
|
8
|
+
let(:described_class) { Class.new(Function) { include Function::Binary } }
|
9
|
+
let(:header) { Relation::Header.new([ [ :id, Integer ] ]) }
|
10
|
+
let(:tuple) { Tuple.new(header, [ 1 ]) }
|
11
|
+
|
12
|
+
before do
|
13
|
+
described_class.class_eval { include Function::Predicate::Enumerable }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with an enumerable of non-callable objects' do
|
17
|
+
let(:object) { described_class.new(header[:id], [ 1 ]) }
|
18
|
+
|
19
|
+
it 'sends the left and right value to self.class.call' do
|
20
|
+
response = mock('#call response')
|
21
|
+
described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
|
22
|
+
should equal(response)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'with an enumerable of callable objects' do
|
27
|
+
let(:callable) { proc { 1 } }
|
28
|
+
let(:object) { described_class.new(header[:id], [ callable ]) }
|
29
|
+
|
30
|
+
it 'sends the left and right value to self.class.call' do
|
31
|
+
response = mock('#call response')
|
32
|
+
described_class.should_receive(:call).with(1, [ 1 ]).and_return(response)
|
33
|
+
should equal(response)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require File.expand_path('../fixtures/classes', __FILE__)
|
5
|
+
|
6
|
+
describe Function::Unary, '#hash' do
|
7
|
+
subject { object.hash }
|
8
|
+
|
9
|
+
let(:described_class) { UnarySpecs::Object }
|
10
|
+
let(:attribute) { Attribute::Integer.new(:id) }
|
11
|
+
let(:header) { Relation::Header.new([ attribute ]) }
|
12
|
+
let(:operand) { attribute.eq(1) }
|
13
|
+
let(:object) { described_class.new(operand) }
|
14
|
+
|
15
|
+
it_should_behave_like 'a hash method'
|
16
|
+
|
17
|
+
it { should == described_class.hash ^ operand.hash }
|
18
|
+
end
|
@@ -26,7 +26,7 @@ describe Immutable, '#freeze' do
|
|
26
26
|
it 'sets a memoization instance variable' do
|
27
27
|
object.should_not be_instance_variable_defined(:@__memory)
|
28
28
|
subject
|
29
|
-
object.instance_variable_get(:@__memory).should be_instance_of(
|
29
|
+
object.instance_variable_get(:@__memory).should be_instance_of(Hash)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -44,7 +44,7 @@ describe Immutable, '#freeze' do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'sets an instance variable for memoization' do
|
47
|
-
subject.instance_variable_get(:@__memory).should be_instance_of(
|
47
|
+
subject.instance_variable_get(:@__memory).should be_instance_of(Hash)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -41,4 +41,17 @@ describe Immutable, '#memoize' do
|
|
41
41
|
object.send(method).should be_frozen
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
context 'when the method is already memoized' do
|
46
|
+
let(:value) { stub }
|
47
|
+
let(:original) { nil }
|
48
|
+
|
49
|
+
before do
|
50
|
+
object.memoize(method, original)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'does not change the value' do
|
54
|
+
expect { subject }.to_not change { object.send(method) }
|
55
|
+
end
|
56
|
+
end
|
44
57
|
end
|
@@ -26,7 +26,7 @@ shared_examples_for 'memoizes method' do
|
|
26
26
|
file, line = object.new.send(method).first.split(':')[0, 2]
|
27
27
|
|
28
28
|
File.expand_path(file).should eql(File.expand_path('../../../../../../lib/veritas/support/immutable.rb', __FILE__))
|
29
|
-
line.to_i.should eql(
|
29
|
+
line.to_i.should eql(185)
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'sets the file and line number properly' do
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Relation::Empty, '.new' do
|
6
|
+
let(:object) { described_class }
|
7
|
+
let(:header) { [ [ :id, Integer ] ] }
|
8
|
+
|
9
|
+
context 'with a header' do
|
10
|
+
subject { object.new(header) }
|
11
|
+
|
12
|
+
it { should be_instance_of(object) }
|
13
|
+
|
14
|
+
its(:header){ should == header }
|
15
|
+
|
16
|
+
its(:tuples) { should == [] }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'with a header and tuples' do
|
20
|
+
subject { object.new(header, tuples) }
|
21
|
+
|
22
|
+
let(:tuples) { mock('Tuples') }
|
23
|
+
|
24
|
+
it { should be_instance_of(object) }
|
25
|
+
|
26
|
+
its(:header){ should == header }
|
27
|
+
|
28
|
+
its(:tuples) { should equal(tuples) }
|
29
|
+
end
|
30
|
+
end
|
@@ -5,12 +5,27 @@ require 'spec_helper'
|
|
5
5
|
describe Relation::Empty, '#each' do
|
6
6
|
subject { object.each { |tuple| yields << tuple } }
|
7
7
|
|
8
|
-
let(:
|
9
|
-
let(:yields) { []
|
8
|
+
let(:header) { [ [ :id, Integer ] ] }
|
9
|
+
let(:yields) { [] }
|
10
10
|
|
11
|
-
|
11
|
+
context 'with an empty relation having no tuples' do
|
12
|
+
let(:object) { described_class.new(header) }
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
it_should_behave_like 'an #each method'
|
15
|
+
|
16
|
+
it 'yields no tuples' do
|
17
|
+
expect { subject }.to_not change { yields.dup }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'with an empty relation having tuples' do
|
22
|
+
let(:tuples) { mock('Tuples') }
|
23
|
+
let(:object) { described_class.new(header, tuples) }
|
24
|
+
|
25
|
+
it_should_behave_like 'an #each method'
|
26
|
+
|
27
|
+
it 'yields no tuples' do
|
28
|
+
expect { subject }.to_not change { yields.dup }
|
29
|
+
end
|
15
30
|
end
|
16
31
|
end
|
@@ -12,21 +12,11 @@ describe Relation::Materialized, '#empty?' do
|
|
12
12
|
let(:body) { [] }
|
13
13
|
|
14
14
|
it { should be(true) }
|
15
|
-
|
16
|
-
it 'does not execute body#each' do
|
17
|
-
body.should_not_receive(:each)
|
18
|
-
subject
|
19
|
-
end
|
20
15
|
end
|
21
16
|
|
22
17
|
context 'with a body containing an entry' do
|
23
18
|
let(:body) { [ [ 1 ] ] }
|
24
19
|
|
25
20
|
it { should be(false) }
|
26
|
-
|
27
|
-
it 'does not execute body#each' do
|
28
|
-
body.should_not_receive(:each)
|
29
|
-
subject
|
30
|
-
end
|
31
21
|
end
|
32
22
|
end
|
@@ -5,9 +5,10 @@ require 'spec_helper'
|
|
5
5
|
describe Relation::Operation::Order::DirectionSet, '.coerce' do
|
6
6
|
subject { object.coerce(argument) }
|
7
7
|
|
8
|
-
let(:
|
9
|
-
let(:
|
10
|
-
let(:
|
8
|
+
let(:direction) { Attribute::Integer.new(:id).desc }
|
9
|
+
let(:directions) { [ direction ] }
|
10
|
+
let(:object) { described_class }
|
11
|
+
let(:direction_set) { object.new(directions) }
|
11
12
|
|
12
13
|
context 'when the argument is a DirectionSet' do
|
13
14
|
let(:argument) { direction_set }
|
@@ -15,6 +16,14 @@ describe Relation::Operation::Order::DirectionSet, '.coerce' do
|
|
15
16
|
it { should equal(argument) }
|
16
17
|
end
|
17
18
|
|
19
|
+
context 'when the argument is a Direction' do
|
20
|
+
let(:argument) { direction }
|
21
|
+
|
22
|
+
it { should be_instance_of(object) }
|
23
|
+
|
24
|
+
it { should == direction_set }
|
25
|
+
end
|
26
|
+
|
18
27
|
context 'when the argument responds to #to_ary' do
|
19
28
|
let(:argument) { directions }
|
20
29
|
|
data/tasks/metrics/heckle.rake
CHANGED
@@ -194,7 +194,7 @@ begin
|
|
194
194
|
ObjectSpace.each_object(Module) do |descedant|
|
195
195
|
next unless descedant.name =~ /\A#{root_module}(?::|\z)/ && mod >= descedant
|
196
196
|
descedant_spec_prefix = spec_dir.join(descedant.name.underscore)
|
197
|
-
descedant_specs
|
197
|
+
descedant_specs << descedant_spec_prefix
|
198
198
|
|
199
199
|
if method.to_s == 'initialize'
|
200
200
|
descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('class_methods/new_spec.rb')))
|
@@ -209,8 +209,7 @@ begin
|
|
209
209
|
|
210
210
|
ObjectSpace.each_object(Module) do |descedant|
|
211
211
|
next unless descedant.name =~ /\A#{root_module}(?::|\z)/ && mod >= descedant
|
212
|
-
|
213
|
-
descedant_specs.concat(Pathname.glob(descedant_spec_prefix.join('class_methods/*_spec.rb')))
|
212
|
+
descedant_specs << spec_dir.join(descedant.name.underscore).join('class_methods')
|
214
213
|
end
|
215
214
|
|
216
215
|
specs << [ ".#{method}", descedant_specs ]
|
data/veritas.gemspec
CHANGED
@@ -4,17 +4,17 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "veritas"
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
11
|
+
s.authors = ["Dan Kubb"]
|
12
|
+
s.date = "2011-10-04"
|
13
|
+
s.description = "Simplifies querying of structured data using relational algebra"
|
14
|
+
s.email = "dan.kubb@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
"README.
|
17
|
+
"README.md",
|
18
18
|
"TODO"
|
19
19
|
]
|
20
20
|
s.files = [
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Gemfile",
|
26
26
|
"Guardfile",
|
27
27
|
"LICENSE",
|
28
|
-
"README.
|
28
|
+
"README.md",
|
29
29
|
"Rakefile",
|
30
30
|
"TODO",
|
31
31
|
"benchmarks/memory.rb",
|
@@ -128,6 +128,7 @@ Gem::Specification.new do |s|
|
|
128
128
|
"lib/veritas/relation/operation/unary.rb",
|
129
129
|
"lib/veritas/support/abstract_class.rb",
|
130
130
|
"lib/veritas/support/aliasable.rb",
|
131
|
+
"lib/veritas/support/comparator.rb",
|
131
132
|
"lib/veritas/support/evaluator.rb",
|
132
133
|
"lib/veritas/support/immutable.rb",
|
133
134
|
"lib/veritas/support/operation/binary.rb",
|
@@ -161,7 +162,9 @@ Gem::Specification.new do |s|
|
|
161
162
|
"spec/unit/veritas/aggregate/count/methods/count_spec.rb",
|
162
163
|
"spec/unit/veritas/aggregate/count/type_spec.rb",
|
163
164
|
"spec/unit/veritas/aggregate/default_spec.rb",
|
165
|
+
"spec/unit/veritas/aggregate/equal_value_spec.rb",
|
164
166
|
"spec/unit/veritas/aggregate/finalize_spec.rb",
|
167
|
+
"spec/unit/veritas/aggregate/hash_spec.rb",
|
165
168
|
"spec/unit/veritas/aggregate/maximum/class_methods/call_spec.rb",
|
166
169
|
"spec/unit/veritas/aggregate/maximum/class_methods/default_spec.rb",
|
167
170
|
"spec/unit/veritas/aggregate/maximum/methods/maximum_spec.rb",
|
@@ -299,6 +302,8 @@ Gem::Specification.new do |s|
|
|
299
302
|
"spec/unit/veritas/attribute/type_spec.rb",
|
300
303
|
"spec/unit/veritas/attribute/valid_primitive_spec.rb",
|
301
304
|
"spec/unit/veritas/attribute/valid_value_spec.rb",
|
305
|
+
"spec/unit/veritas/comparator/compare_spec.rb",
|
306
|
+
"spec/unit/veritas/comparator/methods/eql_spec.rb",
|
302
307
|
"spec/unit/veritas/evaluator/context/add_spec.rb",
|
303
308
|
"spec/unit/veritas/evaluator/context/element_reference_spec.rb",
|
304
309
|
"spec/unit/veritas/evaluator/context/functions_spec.rb",
|
@@ -334,10 +339,7 @@ Gem::Specification.new do |s|
|
|
334
339
|
"spec/unit/veritas/function/connective/negation/methods/fixtures/classes.rb",
|
335
340
|
"spec/unit/veritas/function/connective/negation/methods/not_spec.rb",
|
336
341
|
"spec/unit/veritas/function/connective/type_spec.rb",
|
337
|
-
"spec/unit/veritas/function/eql_spec.rb",
|
338
|
-
"spec/unit/veritas/function/equal_value_spec.rb",
|
339
342
|
"spec/unit/veritas/function/fixtures/classes.rb",
|
340
|
-
"spec/unit/veritas/function/hash_spec.rb",
|
341
343
|
"spec/unit/veritas/function/inspect_spec.rb",
|
342
344
|
"spec/unit/veritas/function/numeric/absolute/class_methods/call_spec.rb",
|
343
345
|
"spec/unit/veritas/function/numeric/absolute/inspect_spec.rb",
|
@@ -389,6 +391,7 @@ Gem::Specification.new do |s|
|
|
389
391
|
"spec/unit/veritas/function/numeric/unary_plus/methods/unary_plus_spec.rb",
|
390
392
|
"spec/unit/veritas/function/predicate/call_spec.rb",
|
391
393
|
"spec/unit/veritas/function/predicate/class_methods/call_spec.rb",
|
394
|
+
"spec/unit/veritas/function/predicate/enumerable/call_spec.rb",
|
392
395
|
"spec/unit/veritas/function/predicate/enumerable/class_methods/compare_method_spec.rb",
|
393
396
|
"spec/unit/veritas/function/predicate/eql_spec.rb",
|
394
397
|
"spec/unit/veritas/function/predicate/equality/class_methods/call_spec.rb",
|
@@ -501,6 +504,7 @@ Gem::Specification.new do |s|
|
|
501
504
|
"spec/unit/veritas/function/unary/call_spec.rb",
|
502
505
|
"spec/unit/veritas/function/unary/equal_value_spec.rb",
|
503
506
|
"spec/unit/veritas/function/unary/fixtures/classes.rb",
|
507
|
+
"spec/unit/veritas/function/unary/hash_spec.rb",
|
504
508
|
"spec/unit/veritas/function/unary/invertible/inverse_spec.rb",
|
505
509
|
"spec/unit/veritas/function/unary/rename_spec.rb",
|
506
510
|
"spec/unit/veritas/immutable/class_methods/freeze_object_spec.rb",
|
@@ -510,8 +514,6 @@ Gem::Specification.new do |s|
|
|
510
514
|
"spec/unit/veritas/immutable/freeze_spec.rb",
|
511
515
|
"spec/unit/veritas/immutable/memoize_spec.rb",
|
512
516
|
"spec/unit/veritas/immutable/memoized_spec.rb",
|
513
|
-
"spec/unit/veritas/immutable/memory/element_reference_spec.rb",
|
514
|
-
"spec/unit/veritas/immutable/memory/element_set_spec.rb",
|
515
517
|
"spec/unit/veritas/immutable/module_methods/included_spec.rb",
|
516
518
|
"spec/unit/veritas/immutable/module_methods/memoize_spec.rb",
|
517
519
|
"spec/unit/veritas/operation/binary/eql_spec.rb",
|
@@ -529,9 +531,11 @@ Gem::Specification.new do |s|
|
|
529
531
|
"spec/unit/veritas/relation/directions_spec.rb",
|
530
532
|
"spec/unit/veritas/relation/each_spec.rb",
|
531
533
|
"spec/unit/veritas/relation/element_reference_spec.rb",
|
534
|
+
"spec/unit/veritas/relation/empty/class_methods/new_spec.rb",
|
532
535
|
"spec/unit/veritas/relation/empty/each_spec.rb",
|
533
536
|
"spec/unit/veritas/relation/empty/empty_spec.rb",
|
534
537
|
"spec/unit/veritas/relation/empty/header_spec.rb",
|
538
|
+
"spec/unit/veritas/relation/empty/size_spec.rb",
|
535
539
|
"spec/unit/veritas/relation/empty_spec.rb",
|
536
540
|
"spec/unit/veritas/relation/eql_spec.rb",
|
537
541
|
"spec/unit/veritas/relation/equal_value_spec.rb",
|
@@ -615,7 +619,6 @@ Gem::Specification.new do |s|
|
|
615
619
|
"spec/unit/veritas/relation/operation/order/eql_spec.rb",
|
616
620
|
"spec/unit/veritas/relation/operation/order/hash_spec.rb",
|
617
621
|
"spec/unit/veritas/relation/operation/order/header_spec.rb",
|
618
|
-
"spec/unit/veritas/relation/operation/order/methods/order_spec.rb",
|
619
622
|
"spec/unit/veritas/relation/operation/order/methods/sort_by_spec.rb",
|
620
623
|
"spec/unit/veritas/relation/operation/reverse/class_methods/new_spec.rb",
|
621
624
|
"spec/unit/veritas/relation/operation/reverse/directions_spec.rb",
|
@@ -652,10 +655,10 @@ Gem::Specification.new do |s|
|
|
652
655
|
"tasks/yard.rake",
|
653
656
|
"veritas.gemspec"
|
654
657
|
]
|
655
|
-
s.homepage =
|
656
|
-
s.require_paths = [
|
657
|
-
s.rubygems_version =
|
658
|
-
s.summary =
|
658
|
+
s.homepage = "https://github.com/dkubb/veritas"
|
659
|
+
s.require_paths = ["lib"]
|
660
|
+
s.rubygems_version = "1.8.10"
|
661
|
+
s.summary = "Ruby Relational Algebra"
|
659
662
|
|
660
663
|
if s.respond_to? :specification_version then
|
661
664
|
s.specification_version = 3
|