veritas 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/.rvmrc +1 -0
- data/.travis.yml +8 -0
- data/Gemfile +20 -10
- data/Guardfile +22 -0
- data/README.rdoc +5 -6
- data/Rakefile +4 -2
- data/TODO +18 -23
- data/config/flay.yml +1 -1
- data/config/flog.yml +1 -1
- data/config/roodi.yml +1 -1
- data/config/site.reek +3 -3
- data/lib/veritas/aggregate/count.rb +55 -0
- data/lib/veritas/aggregate/maximum.rb +59 -0
- data/lib/veritas/aggregate/mean.rb +81 -0
- data/lib/veritas/aggregate/minimum.rb +59 -0
- data/lib/veritas/aggregate/standard_deviation.rb +58 -0
- data/lib/veritas/aggregate/sum.rb +81 -0
- data/lib/veritas/aggregate/variance.rb +81 -0
- data/lib/veritas/aggregate.rb +116 -0
- data/lib/veritas/algebra/difference.rb +3 -1
- data/lib/veritas/algebra/extension.rb +12 -10
- data/lib/veritas/algebra/intersection.rb +3 -1
- data/lib/veritas/algebra/join.rb +17 -15
- data/lib/veritas/algebra/product.rb +4 -2
- data/lib/veritas/algebra/projection.rb +4 -3
- data/lib/veritas/algebra/rename/aliases.rb +6 -4
- data/lib/veritas/algebra/rename.rb +12 -3
- data/lib/veritas/algebra/restriction.rb +13 -12
- data/lib/veritas/algebra/summarization/summaries.rb +59 -0
- data/lib/veritas/algebra/summarization/summary.rb +83 -0
- data/lib/veritas/algebra/summarization.rb +88 -75
- data/lib/veritas/algebra/union.rb +4 -2
- data/lib/veritas/attribute/boolean.rb +5 -3
- data/lib/veritas/attribute/class.rb +2 -0
- data/lib/veritas/attribute/comparable.rb +11 -5
- data/lib/veritas/attribute/date.rb +2 -0
- data/lib/veritas/attribute/date_time.rb +2 -0
- data/lib/veritas/attribute/decimal.rb +2 -0
- data/lib/veritas/attribute/float.rb +4 -0
- data/lib/veritas/attribute/integer.rb +2 -0
- data/lib/veritas/attribute/numeric.rb +6 -4
- data/lib/veritas/attribute/object.rb +7 -4
- data/lib/veritas/attribute/orderable.rb +2 -0
- data/lib/veritas/attribute/string.rb +39 -13
- data/lib/veritas/attribute/time.rb +2 -0
- data/lib/veritas/attribute.rb +92 -36
- data/lib/veritas/core_ext/date.rb +2 -0
- data/lib/veritas/core_ext/range.rb +2 -0
- data/lib/veritas/core_ext/time.rb +2 -0
- data/lib/veritas/function/binary.rb +107 -0
- data/lib/veritas/function/comparable.rb +55 -0
- data/lib/veritas/{logic → function}/connective/conjunction.rb +24 -6
- data/lib/veritas/{logic → function}/connective/disjunction.rb +24 -6
- data/lib/veritas/{logic → function}/connective/negation.rb +34 -13
- data/lib/veritas/function/connective.rb +21 -0
- data/lib/veritas/function/numeric/absolute.rb +62 -0
- data/lib/veritas/function/numeric/addition.rb +62 -0
- data/lib/veritas/function/numeric/binary.rb +26 -0
- data/lib/veritas/function/numeric/division.rb +71 -0
- data/lib/veritas/function/numeric/exponentiation.rb +68 -0
- data/lib/veritas/function/numeric/modulo.rb +53 -0
- data/lib/veritas/function/numeric/multiplication.rb +62 -0
- data/lib/veritas/function/numeric/square_root.rb +86 -0
- data/lib/veritas/function/numeric/subtraction.rb +62 -0
- data/lib/veritas/function/numeric/unary.rb +23 -0
- data/lib/veritas/function/numeric/unary_minus.rb +74 -0
- data/lib/veritas/function/numeric/unary_plus.rb +76 -0
- data/lib/veritas/function/numeric.rb +11 -0
- data/lib/veritas/{logic → function}/predicate/enumerable.rb +4 -2
- data/lib/veritas/{logic → function}/predicate/equality.rb +5 -3
- data/lib/veritas/{logic → function}/predicate/exclusion.rb +5 -5
- data/lib/veritas/{logic → function}/predicate/greater_than.rb +5 -3
- data/lib/veritas/{logic → function}/predicate/greater_than_or_equal_to.rb +5 -3
- data/lib/veritas/{logic → function}/predicate/inclusion.rb +5 -5
- data/lib/veritas/{logic → function}/predicate/inequality.rb +4 -2
- data/lib/veritas/{logic → function}/predicate/less_than.rb +5 -3
- data/lib/veritas/{logic → function}/predicate/less_than_or_equal_to.rb +5 -3
- data/lib/veritas/{logic → function}/predicate/match.rb +17 -3
- data/lib/veritas/{logic → function}/predicate/no_match.rb +5 -3
- data/lib/veritas/function/predicate.rb +26 -0
- data/lib/veritas/{logic → function}/proposition/contradiction.rb +7 -4
- data/lib/veritas/{logic → function}/proposition/tautology.rb +7 -4
- data/lib/veritas/{logic → function}/proposition.rb +29 -4
- data/lib/veritas/function/string/length.rb +68 -0
- data/lib/veritas/{logic/connective → function}/unary.rb +48 -12
- data/lib/veritas/function.rb +128 -0
- data/lib/veritas/relation/base.rb +38 -0
- data/lib/veritas/relation/empty.rb +2 -0
- data/lib/veritas/relation/header.rb +14 -37
- data/lib/veritas/relation/materialized.rb +9 -0
- data/lib/veritas/relation/operation/binary.rb +3 -2
- data/lib/veritas/relation/operation/combination.rb +2 -0
- data/lib/veritas/relation/operation/limit.rb +11 -1
- data/lib/veritas/relation/operation/offset.rb +11 -1
- data/lib/veritas/relation/operation/order/direction.rb +2 -0
- data/lib/veritas/relation/operation/order/direction_set.rb +5 -3
- data/lib/veritas/relation/operation/order.rb +15 -7
- data/lib/veritas/relation/operation/reverse.rb +4 -2
- data/lib/veritas/relation/operation/set.rb +2 -0
- data/lib/veritas/relation/operation/unary.rb +3 -2
- data/lib/veritas/relation.rb +9 -6
- data/lib/veritas/support/abstract_class.rb +2 -0
- data/lib/veritas/support/aliasable.rb +2 -0
- data/lib/veritas/support/evaluator.rb +37 -16
- data/lib/veritas/support/immutable.rb +5 -5
- data/lib/veritas/support/operation/binary.rb +2 -0
- data/lib/veritas/support/operation/unary.rb +2 -0
- data/lib/veritas/support/visitable.rb +2 -0
- data/lib/veritas/tuple.rb +13 -9
- data/lib/veritas/version.rb +3 -1
- data/lib/veritas.rb +60 -25
- data/spec/integration/veritas/algebra/join_spec.rb +2 -0
- data/spec/integration/veritas/algebra/product_spec.rb +2 -0
- data/spec/integration/veritas/algebra/projection_spec.rb +2 -0
- data/spec/integration/veritas/algebra/summarization_spec.rb +9 -9
- data/spec/integration/veritas/relation/efficient_enumerable_spec.rb +2 -0
- data/spec/shared/command_method_behavior.rb +2 -0
- data/spec/shared/each_method_behaviour.rb +2 -0
- data/spec/shared/hash_method_behavior.rb +2 -0
- data/spec/shared/idempotent_method_behavior.rb +2 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/unit/date/pred_spec.rb +2 -0
- data/spec/unit/range/overlaps_spec.rb +2 -0
- data/spec/unit/range/to_inclusive_spec.rb +2 -0
- data/spec/unit/time/pred_spec.rb +2 -0
- data/spec/unit/veritas/abstract_class/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/aggregate/call_spec.rb +43 -0
- data/spec/unit/veritas/{logic/proposition → aggregate}/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/aggregate/class_methods/default_spec.rb +11 -0
- data/spec/unit/veritas/aggregate/class_methods/finalize_spec.rb +12 -0
- data/spec/unit/veritas/aggregate/count/class_methods/call_spec.rb +30 -0
- data/spec/unit/veritas/aggregate/count/class_methods/default_spec.rb +13 -0
- data/spec/unit/veritas/aggregate/count/methods/count_spec.rb +14 -0
- data/spec/unit/veritas/aggregate/count/type_spec.rb +12 -0
- data/spec/unit/veritas/aggregate/default_spec.rb +17 -0
- data/spec/unit/veritas/aggregate/finalize_spec.rb +18 -0
- data/spec/unit/veritas/aggregate/maximum/class_methods/call_spec.rb +36 -0
- data/spec/unit/veritas/aggregate/maximum/class_methods/default_spec.rb +13 -0
- data/spec/unit/veritas/aggregate/maximum/methods/maximum_spec.rb +16 -0
- data/spec/unit/veritas/aggregate/maximum/type_spec.rb +20 -0
- data/spec/unit/veritas/aggregate/mean/class_methods/call_spec.rb +30 -0
- data/spec/unit/veritas/aggregate/mean/class_methods/default_spec.rb +15 -0
- data/spec/unit/veritas/aggregate/mean/class_methods/finalize_spec.rb +16 -0
- data/spec/unit/veritas/aggregate/mean/methods/mean_spec.rb +16 -0
- data/spec/unit/veritas/aggregate/mean/type_spec.rb +12 -0
- data/spec/unit/veritas/aggregate/minimum/class_methods/call_spec.rb +36 -0
- data/spec/unit/veritas/aggregate/minimum/class_methods/default_spec.rb +13 -0
- data/spec/unit/veritas/aggregate/minimum/methods/minimum_spec.rb +16 -0
- data/spec/unit/veritas/aggregate/minimum/type_spec.rb +20 -0
- data/spec/unit/veritas/aggregate/standard_deviation/class_methods/finalize_spec.rb +34 -0
- data/spec/unit/veritas/aggregate/standard_deviation/methods/standard_deviation_spec.rb +16 -0
- data/spec/unit/veritas/aggregate/standard_deviation/type_spec.rb +12 -0
- data/spec/unit/veritas/aggregate/sum/class_methods/call_spec.rb +30 -0
- data/spec/unit/veritas/aggregate/sum/class_methods/default_spec.rb +13 -0
- data/spec/unit/veritas/aggregate/sum/default_spec.rb +27 -0
- data/spec/unit/veritas/aggregate/sum/methods/sum_spec.rb +14 -0
- data/spec/unit/veritas/aggregate/sum/type_spec.rb +20 -0
- data/spec/unit/veritas/aggregate/type_spec.rb +13 -0
- data/spec/unit/veritas/aggregate/variance/class_methods/call_spec.rb +30 -0
- data/spec/unit/veritas/aggregate/variance/class_methods/default_spec.rb +15 -0
- data/spec/unit/veritas/aggregate/variance/class_methods/finalize_spec.rb +26 -0
- data/spec/unit/veritas/aggregate/variance/methods/variance_spec.rb +16 -0
- data/spec/unit/veritas/aggregate/variance/type_spec.rb +12 -0
- data/spec/unit/veritas/algebra/difference/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/difference/methods/difference_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/eql_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/extensions_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/header_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/methods/extend_spec.rb +2 -0
- data/spec/unit/veritas/algebra/extension/operand_spec.rb +2 -0
- data/spec/unit/veritas/algebra/intersection/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/intersection/methods/intersect_spec.rb +2 -0
- data/spec/unit/veritas/algebra/join/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/algebra/join/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/join/methods/join_spec.rb +3 -14
- data/spec/unit/veritas/algebra/product/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/algebra/product/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/product/methods/product_spec.rb +2 -0
- data/spec/unit/veritas/algebra/projection/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/projection/eql_spec.rb +2 -0
- data/spec/unit/veritas/algebra/projection/hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/projection/header_spec.rb +2 -0
- data/spec/unit/veritas/algebra/projection/methods/project_spec.rb +2 -0
- data/spec/unit/veritas/algebra/projection/methods/remove_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/class_methods/coerce_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/element_reference_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/empty_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/eql_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/equal_value_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/to_hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases/union_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/aliases_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/directions_spec.rb +4 -2
- data/spec/unit/veritas/algebra/rename/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/eql_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/header_spec.rb +2 -0
- data/spec/unit/veritas/algebra/rename/methods/rename_spec.rb +2 -0
- data/spec/unit/veritas/algebra/restriction/each_spec.rb +36 -6
- data/spec/unit/veritas/algebra/restriction/eql_spec.rb +2 -0
- data/spec/unit/veritas/algebra/restriction/hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/restriction/methods/restrict_spec.rb +9 -26
- data/spec/unit/veritas/algebra/restriction/predicate_spec.rb +2 -0
- data/spec/unit/veritas/algebra/summarization/class_methods/new_spec.rb +30 -0
- data/spec/unit/veritas/algebra/summarization/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/summarization/eql_spec.rb +2 -0
- data/spec/unit/veritas/algebra/summarization/hash_spec.rb +2 -0
- data/spec/unit/veritas/algebra/summarization/header_spec.rb +4 -2
- data/spec/unit/veritas/algebra/summarization/methods/summarize_spec.rb +19 -10
- data/spec/unit/veritas/algebra/summarization/summaries/summarize_by_spec.rb +26 -0
- data/spec/unit/veritas/algebra/summarization/summaries/to_hash_spec.rb +16 -0
- data/spec/unit/veritas/algebra/summarization/{summarize_by_spec.rb → summarize_per_spec.rb} +6 -4
- data/spec/unit/veritas/algebra/summarization/summarizers_spec.rb +3 -1
- data/spec/unit/veritas/algebra/summarization/summary/call_spec.rb +43 -0
- data/spec/unit/veritas/algebra/summarization/summary/summarize_by_spec.rb +20 -0
- data/spec/unit/veritas/algebra/union/each_spec.rb +2 -0
- data/spec/unit/veritas/algebra/union/methods/union_spec.rb +2 -0
- data/spec/unit/veritas/aliasable/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/aliasable/inheritable_alias_spec.rb +3 -1
- data/spec/unit/veritas/attribute/boolean/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/boolean/valid_value_spec.rb +2 -0
- data/spec/unit/veritas/attribute/call_spec.rb +2 -0
- data/spec/unit/veritas/attribute/class/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/class_methods/coerce_spec.rb +36 -0
- data/spec/unit/veritas/attribute/class_methods/descendants_spec.rb +27 -0
- data/spec/unit/veritas/attribute/class_methods/infer_type_spec.rb +121 -0
- data/spec/unit/veritas/attribute/class_methods/inherited_spec.rb +25 -0
- data/spec/unit/veritas/attribute/class_methods/name_from_spec.rb +2 -0
- data/spec/unit/veritas/attribute/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/attribute/comparable/comparable_spec.rb +3 -3
- data/spec/unit/veritas/attribute/comparable/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/attribute/date/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/date/range_spec.rb +2 -0
- data/spec/unit/veritas/attribute/date_time/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/date_time/range_spec.rb +2 -0
- data/spec/unit/veritas/attribute/decimal/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/eql_spec.rb +2 -0
- data/spec/unit/veritas/attribute/equal_value_spec.rb +2 -0
- data/spec/unit/veritas/attribute/float/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/float/size_spec.rb +21 -0
- data/spec/unit/veritas/attribute/hash_spec.rb +2 -0
- data/spec/unit/veritas/attribute/inspect_spec.rb +2 -0
- data/spec/unit/veritas/attribute/integer/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/joinable_spec.rb +2 -0
- data/spec/unit/veritas/attribute/name_spec.rb +2 -0
- data/spec/unit/veritas/attribute/numeric/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/numeric/joinable_spec.rb +2 -0
- data/spec/unit/veritas/attribute/numeric/size_spec.rb +4 -2
- data/spec/unit/veritas/attribute/numeric/valid_value_spec.rb +2 -0
- data/spec/unit/veritas/attribute/object/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/options_spec.rb +2 -0
- data/spec/unit/veritas/attribute/orderable/asc_spec.rb +2 -0
- data/spec/unit/veritas/attribute/orderable/desc_spec.rb +2 -0
- data/spec/unit/veritas/attribute/orderable/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/attribute/rename_spec.rb +2 -0
- data/spec/unit/veritas/attribute/required_spec.rb +2 -0
- data/spec/unit/veritas/attribute/string/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/string/joinable_spec.rb +5 -3
- data/spec/unit/veritas/attribute/string/max_length_spec.rb +20 -0
- data/spec/unit/veritas/attribute/string/min_length_spec.rb +20 -0
- data/spec/unit/veritas/attribute/string/valid_value_spec.rb +3 -1
- data/spec/unit/veritas/attribute/time/class_methods/primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/time/range_spec.rb +2 -0
- data/spec/unit/veritas/attribute/type_spec.rb +12 -0
- data/spec/unit/veritas/attribute/valid_primitive_spec.rb +2 -0
- data/spec/unit/veritas/attribute/valid_value_spec.rb +2 -0
- data/spec/unit/veritas/evaluator/context/add_spec.rb +46 -0
- data/spec/unit/veritas/evaluator/context/element_reference_spec.rb +14 -0
- data/spec/unit/veritas/evaluator/context/functions_spec.rb +16 -0
- data/spec/unit/veritas/{logic/connective → function}/binary/call_spec.rb +10 -8
- data/spec/unit/veritas/{logic/connective → function}/binary/equal_value_spec.rb +3 -1
- data/spec/unit/veritas/{logic/connective → function}/binary/fixtures/classes.rb +5 -1
- data/spec/unit/veritas/function/binary/invertible/inverse_spec.rb +39 -0
- data/spec/unit/veritas/{logic/connective → function}/binary/rename_spec.rb +3 -1
- data/spec/unit/veritas/{logic/expression → function}/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic/predicate → function}/class_methods/extract_value_spec.rb +3 -1
- data/spec/unit/veritas/function/class_methods/rename_attributes_spec.rb +29 -0
- data/spec/unit/veritas/{logic/predicate → function}/comparable/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic/predicate → function}/comparable/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/function/comparable/inspect_spec.rb +15 -0
- data/spec/unit/veritas/{logic → function}/connective/conjunction/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/connective/conjunction/inspect_spec.rb +3 -1
- data/spec/unit/veritas/function/connective/conjunction/inverse_spec.rb +24 -0
- data/spec/unit/veritas/{logic → function}/connective/conjunction/methods/and_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/connective/conjunction/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/connective/disjunction/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/connective/disjunction/inspect_spec.rb +3 -1
- data/spec/unit/veritas/function/connective/disjunction/inverse_spec.rb +24 -0
- data/spec/unit/veritas/{logic → function}/connective/disjunction/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/connective/disjunction/methods/or_spec.rb +4 -2
- data/spec/unit/veritas/function/connective/inspect_spec.rb +12 -0
- data/spec/unit/veritas/{logic → function}/connective/negation/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/connective/negation/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/connective/negation/inverse_spec.rb +3 -1
- data/spec/unit/veritas/function/connective/negation/methods/fixtures/classes.rb +8 -0
- data/spec/unit/veritas/function/connective/negation/methods/not_spec.rb +39 -0
- data/spec/unit/veritas/function/connective/type_spec.rb +12 -0
- data/spec/unit/veritas/function/eql_spec.rb +14 -0
- data/spec/unit/veritas/function/equal_value_spec.rb +14 -0
- data/spec/unit/veritas/function/fixtures/classes.rb +6 -0
- data/spec/unit/veritas/{logic/expression → function}/hash_spec.rb +5 -3
- data/spec/unit/veritas/{logic/expression → function}/inspect_spec.rb +5 -3
- data/spec/unit/veritas/function/numeric/absolute/class_methods/call_spec.rb +21 -0
- data/spec/unit/veritas/function/numeric/absolute/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/absolute/methods/absolute_spec.rb +16 -0
- data/spec/unit/veritas/function/numeric/addition/class_methods/call_spec.rb +13 -0
- data/spec/unit/veritas/function/numeric/addition/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/addition/class_methods/operation_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/addition/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/addition/methods/add_spec.rb +19 -0
- data/spec/unit/veritas/function/numeric/binary/type_spec.rb +33 -0
- data/spec/unit/veritas/function/numeric/division/class_methods/call_spec.rb +13 -0
- data/spec/unit/veritas/function/numeric/division/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/division/class_methods/operation_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/division/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/division/methods/divide_spec.rb +19 -0
- data/spec/unit/veritas/function/numeric/division/type_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/exponentiation/class_methods/call_spec.rb +13 -0
- data/spec/unit/veritas/function/numeric/exponentiation/class_methods/operation_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/exponentiation/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/exponentiation/inverse_spec.rb +18 -0
- data/spec/unit/veritas/function/numeric/exponentiation/methods/exponent_spec.rb +19 -0
- data/spec/unit/veritas/function/numeric/modulo/class_methods/call_spec.rb +13 -0
- data/spec/unit/veritas/function/numeric/modulo/class_methods/operation_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/modulo/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/modulo/methods/modulo_spec.rb +19 -0
- data/spec/unit/veritas/function/numeric/multiplication/class_methods/call_spec.rb +13 -0
- data/spec/unit/veritas/function/numeric/multiplication/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/multiplication/class_methods/operation_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/multiplication/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/multiplication/methods/multiply_spec.rb +19 -0
- data/spec/unit/veritas/function/numeric/square_root/class_methods/call_spec.rb +12 -0
- data/spec/unit/veritas/function/numeric/square_root/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/square_root/inverse_spec.rb +14 -0
- data/spec/unit/veritas/function/numeric/square_root/methods/square_root_spec.rb +16 -0
- data/spec/unit/veritas/function/numeric/square_root/type_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/subtraction/class_methods/call_spec.rb +13 -0
- data/spec/unit/veritas/function/numeric/subtraction/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/subtraction/class_methods/operation_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/subtraction/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/subtraction/methods/subtract_spec.rb +19 -0
- data/spec/unit/veritas/function/numeric/unary/type_spec.rb +21 -0
- data/spec/unit/veritas/function/numeric/unary_minus/class_methods/call_spec.rb +21 -0
- data/spec/unit/veritas/function/numeric/unary_minus/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/unary_minus/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/unary_minus/methods/unary_minus_spec.rb +16 -0
- data/spec/unit/veritas/function/numeric/unary_plus/class_methods/call_spec.rb +21 -0
- data/spec/unit/veritas/function/numeric/unary_plus/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/unary_plus/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/numeric/unary_plus/methods/unary_plus_spec.rb +16 -0
- data/spec/unit/veritas/{logic → function}/predicate/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/enumerable/class_methods/compare_method_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/eql_spec.rb +3 -1
- data/spec/unit/veritas/{logic/predicate/inequality → function/predicate/equality}/class_methods/call_spec.rb +5 -3
- data/spec/unit/veritas/function/predicate/equality/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/equality/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/equality/class_methods/reverse_spec.rb +3 -1
- data/spec/unit/veritas/{logic/predicate/greater_than_or_equal_to → function/predicate/equality}/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic/predicate/greater_than → function/predicate/equality}/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/equality/methods/eq_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/equality/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/exclusion/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/exclusion/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic/predicate/inclusion → function/predicate/exclusion}/inspect_spec.rb +2 -2
- data/spec/unit/veritas/{logic/predicate/inclusion → function/predicate/exclusion}/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/exclusion/methods/exclude_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/exclusion/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/greater_than/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/greater_than/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/greater_than/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/greater_than/class_methods/reverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic/predicate/equality → function/predicate/greater_than}/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic/predicate/less_than → function/predicate/greater_than}/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/greater_than/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/greater_than/methods/gt_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/greater_than_or_equal_to/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/greater_than_or_equal_to/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/greater_than_or_equal_to/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/greater_than_or_equal_to/class_methods/reverse_spec.rb +11 -0
- data/spec/unit/veritas/function/predicate/greater_than_or_equal_to/inspect_spec.rb +12 -0
- data/spec/unit/veritas/{logic → function}/predicate/greater_than_or_equal_to/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/greater_than_or_equal_to/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/greater_than_or_equal_to/methods/gte_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/hash_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/inclusion/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/inclusion/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic/predicate/exclusion → function/predicate/inclusion}/inspect_spec.rb +2 -2
- data/spec/unit/veritas/{logic/predicate/exclusion → function/predicate/inclusion}/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/inclusion/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/inclusion/methods/include_spec.rb +4 -2
- data/spec/unit/veritas/{logic/predicate/equality → function/predicate/inequality}/class_methods/call_spec.rb +5 -3
- data/spec/unit/veritas/function/predicate/inequality/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/inequality/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/inequality/class_methods/reverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/inequality/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic/predicate/equality → function/predicate/inequality}/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/inequality/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/inequality/methods/ne_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/inspect_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/inverse_spec.rb +17 -0
- data/spec/unit/veritas/{logic → function}/predicate/less_than/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/less_than/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/less_than/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/less_than/class_methods/reverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic/predicate/greater_than → function/predicate/less_than}/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic/predicate/inequality → function/predicate/less_than}/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/less_than/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/less_than/methods/lt_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/less_than_or_equal_to/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/less_than_or_equal_to/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/less_than_or_equal_to/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/less_than_or_equal_to/class_methods/reverse_spec.rb +11 -0
- data/spec/unit/veritas/function/predicate/less_than_or_equal_to/inspect_spec.rb +12 -0
- data/spec/unit/veritas/function/predicate/less_than_or_equal_to/inverse_spec.rb +22 -0
- data/spec/unit/veritas/{logic → function}/predicate/less_than_or_equal_to/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/less_than_or_equal_to/methods/lte_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/match/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/match/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/match/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/match/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/match/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/match/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/match/methods/match_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/no_match/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/predicate/no_match/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/predicate/no_match/class_methods/operation_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/no_match/inspect_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/no_match/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/predicate/no_match/methods/fixtures/classes.rb +3 -1
- data/spec/unit/veritas/{logic → function}/predicate/no_match/methods/no_match_spec.rb +4 -2
- data/spec/unit/veritas/function/predicate/type_spec.rb +14 -0
- data/spec/unit/veritas/{logic → function}/proposition/call_spec.rb +5 -3
- data/spec/unit/veritas/function/proposition/class_methods/call_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/proposition/class_methods/new_spec.rb +5 -3
- data/spec/unit/veritas/{logic → function}/proposition/contradiction/and_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/proposition/contradiction/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/proposition/contradiction/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/proposition/contradiction/inspect_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/proposition/contradiction/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/proposition/contradiction/or_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/proposition/eql_spec.rb +6 -4
- data/spec/unit/veritas/{logic → function}/proposition/equal_value_spec.rb +6 -4
- data/spec/unit/veritas/function/proposition/hash_spec.rb +14 -0
- data/spec/unit/veritas/function/proposition/inspect_spec.rb +16 -0
- data/spec/unit/veritas/{logic → function}/proposition/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic/expression → function/proposition}/rename_spec.rb +4 -3
- data/spec/unit/veritas/{logic → function}/proposition/tautology/and_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/proposition/tautology/class_methods/call_spec.rb +3 -1
- data/spec/unit/veritas/function/proposition/tautology/class_methods/inverse_spec.rb +11 -0
- data/spec/unit/veritas/{logic → function}/proposition/tautology/inspect_spec.rb +3 -1
- data/spec/unit/veritas/{logic → function}/proposition/tautology/inverse_spec.rb +4 -2
- data/spec/unit/veritas/{logic → function}/proposition/tautology/or_spec.rb +3 -1
- data/spec/unit/veritas/function/proposition/type_spec.rb +12 -0
- data/spec/unit/veritas/function/rename_spec.rb +14 -0
- data/spec/unit/veritas/function/string/length/class_methods/call_spec.rb +12 -0
- data/spec/unit/veritas/function/string/length/inspect_spec.rb +11 -0
- data/spec/unit/veritas/function/string/length/methods/length_spec.rb +14 -0
- data/spec/unit/veritas/function/string/length/type_spec.rb +11 -0
- data/spec/unit/veritas/function/type_spec.rb +13 -0
- data/spec/unit/veritas/{logic/connective → function}/unary/call_spec.rb +3 -1
- data/spec/unit/veritas/{logic/connective → function}/unary/equal_value_spec.rb +3 -1
- data/spec/unit/veritas/{logic/connective → function}/unary/fixtures/classes.rb +5 -1
- data/spec/unit/veritas/function/unary/invertible/inverse_spec.rb +37 -0
- data/spec/unit/veritas/{logic/connective → function}/unary/rename_spec.rb +4 -2
- data/spec/unit/veritas/immutable/class_methods/freeze_object_spec.rb +2 -0
- data/spec/unit/veritas/immutable/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/immutable/dup_spec.rb +2 -0
- data/spec/unit/veritas/immutable/fixtures/classes.rb +6 -4
- data/spec/unit/veritas/immutable/freeze_spec.rb +2 -0
- data/spec/unit/veritas/immutable/memoize_spec.rb +28 -4
- data/spec/unit/veritas/immutable/memoized_spec.rb +2 -0
- data/spec/unit/veritas/immutable/memory/element_reference_spec.rb +2 -0
- data/spec/unit/veritas/immutable/memory/element_set_spec.rb +5 -3
- data/spec/unit/veritas/immutable/module_methods/included_spec.rb +2 -0
- data/spec/unit/veritas/immutable/module_methods/memoize_spec.rb +9 -1
- data/spec/unit/veritas/operation/binary/eql_spec.rb +2 -0
- data/spec/unit/veritas/operation/binary/hash_spec.rb +2 -0
- data/spec/unit/veritas/operation/binary/left_spec.rb +2 -0
- data/spec/unit/veritas/operation/binary/right_spec.rb +2 -0
- data/spec/unit/veritas/operation/unary/eql_spec.rb +2 -0
- data/spec/unit/veritas/operation/unary/hash_spec.rb +2 -0
- data/spec/unit/veritas/operation/unary/operand_spec.rb +2 -0
- data/spec/unit/veritas/relation/base/name_spec.rb +45 -0
- data/spec/unit/veritas/relation/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/directions_spec.rb +3 -1
- data/spec/unit/veritas/relation/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/element_reference_spec.rb +2 -0
- data/spec/unit/veritas/relation/empty/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/empty/empty_spec.rb +2 -0
- data/spec/unit/veritas/relation/empty/header_spec.rb +2 -0
- data/spec/unit/veritas/relation/empty_spec.rb +2 -0
- data/spec/unit/veritas/relation/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/equal_value_spec.rb +2 -0
- data/spec/unit/veritas/relation/hash_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/class_methods/coerce_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/difference_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/element_reference_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/empty_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/equal_value_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/hash_spec.rb +5 -3
- data/spec/unit/veritas/relation/header/inspect_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/intersect_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/project_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/rename_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/to_ary_spec.rb +2 -0
- data/spec/unit/veritas/relation/header/union_spec.rb +2 -0
- data/spec/unit/veritas/relation/header_spec.rb +2 -0
- data/spec/unit/veritas/relation/materialize_spec.rb +2 -0
- data/spec/unit/veritas/relation/materialized/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/materialized/directions_spec.rb +27 -0
- data/spec/unit/veritas/relation/materialized/empty_spec.rb +2 -0
- data/spec/unit/veritas/relation/materialized/materialize_spec.rb +2 -0
- data/spec/unit/veritas/relation/materialized/size_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/binary/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/binary/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/relation/operation/binary/header_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/combination/class_methods/combine_tuples_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/combination/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/relation/operation/combination/header_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/directions_spec.rb +15 -0
- data/spec/unit/veritas/relation/operation/limit/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/hash_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/limit_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/methods/first_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/methods/last_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/limit/methods/take_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/offset/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/offset/directions_spec.rb +15 -0
- data/spec/unit/veritas/relation/operation/offset/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/offset/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/offset/hash_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/offset/methods/drop_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/offset/offset_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/ascending/class_methods/call_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/ascending/class_methods/reverse_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/ascending/reverse_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/descending/class_methods/call_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/descending/class_methods/reverse_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/descending/reverse_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/attribute_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/call_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/class_methods/coerce_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/hash_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/rename_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction/reverse_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/attributes_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/class_methods/coerce_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/empty_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/equal_value_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/hash_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/project_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/rename_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/reverse_spec.rb +4 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/sort_tuples_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/to_ary_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/direction_set/union_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/directions_spec.rb +5 -3
- data/spec/unit/veritas/relation/operation/order/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/eql_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/hash_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/header_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/order/methods/order_spec.rb +2 -14
- data/spec/unit/veritas/relation/operation/reverse/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/reverse/directions_spec.rb +17 -0
- data/spec/unit/veritas/relation/operation/reverse/each_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/reverse/methods/reverse_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/set/class_methods/new_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/set/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/relation/operation/set/header_spec.rb +2 -0
- data/spec/unit/veritas/relation/operation/unary/fixtures/classes.rb +2 -0
- data/spec/unit/veritas/relation/operation/unary/header_spec.rb +2 -0
- data/spec/unit/veritas/tuple/class_methods/coerce_spec.rb +2 -0
- data/spec/unit/veritas/tuple/element_reference_spec.rb +2 -0
- data/spec/unit/veritas/tuple/eql_spec.rb +2 -0
- data/spec/unit/veritas/tuple/equal_value_spec.rb +2 -0
- data/spec/unit/veritas/tuple/extend_spec.rb +29 -4
- data/spec/unit/veritas/tuple/hash_spec.rb +3 -1
- data/spec/unit/veritas/tuple/header_spec.rb +2 -0
- data/spec/unit/veritas/tuple/inspect_spec.rb +2 -0
- data/spec/unit/veritas/tuple/join_spec.rb +2 -0
- data/spec/unit/veritas/tuple/project_spec.rb +2 -0
- data/spec/unit/veritas/tuple/to_ary_spec.rb +4 -0
- data/spec/unit/veritas/visitable/accept_spec.rb +2 -0
- data/tasks/metrics/ci.rake +7 -0
- data/tasks/{quality → metrics}/flay.rake +0 -0
- data/tasks/{quality → metrics}/flog.rake +0 -0
- data/tasks/{quality → metrics}/heckle.rake +25 -3
- data/tasks/{quality → metrics}/metric_fu.rake +3 -0
- data/tasks/{quality → metrics}/reek.rake +0 -0
- data/tasks/{quality → metrics}/roodi.rake +0 -0
- data/tasks/{quality → metrics}/yardstick.rake +0 -0
- data/tasks/spec.rake +1 -0
- data/veritas.gemspec +332 -580
- metadata +375 -584
- data/lib/veritas/logic/connective/binary.rb +0 -70
- data/lib/veritas/logic/connective.rb +0 -24
- data/lib/veritas/logic/expression.rb +0 -99
- data/lib/veritas/logic/predicate/comparable.rb +0 -57
- data/lib/veritas/logic/predicate.rb +0 -99
- data/spec/unit/veritas/algebra/projection/directions_spec.rb +0 -24
- data/spec/unit/veritas/algebra/summarization/class_methods/summarize_spec.rb +0 -26
- data/spec/unit/veritas/attribute/string/length_spec.rb +0 -20
- data/spec/unit/veritas/evaluator/expression/add_spec.rb +0 -21
- data/spec/unit/veritas/evaluator/expression/expressions_spec.rb +0 -13
- data/spec/unit/veritas/logic/connective/inspect_spec.rb +0 -10
- data/spec/unit/veritas/logic/connective/inverse_spec.rb +0 -26
- data/spec/unit/veritas/logic/connective/negation/methods/fixtures/classes.rb +0 -6
- data/spec/unit/veritas/logic/connective/negation/methods/not_spec.rb +0 -24
- data/spec/unit/veritas/logic/expression/eql_spec.rb +0 -12
- data/spec/unit/veritas/logic/expression/equal_value_spec.rb +0 -12
- data/spec/unit/veritas/logic/expression/fixtures/classes.rb +0 -4
- data/spec/unit/veritas/logic/expression/inverse_spec.rb +0 -16
- data/spec/unit/veritas/logic/predicate/comparable/inspect_spec.rb +0 -13
- data/spec/unit/veritas/logic/predicate/equal_value_spec.rb +0 -64
- data/spec/unit/veritas/logic/predicate/equality/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/exclusion/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/greater_than/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/greater_than/class_methods/reverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/greater_than_or_equal_to/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/greater_than_or_equal_to/class_methods/reverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/inclusion/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/inequality/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/inequality/class_methods/reverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/inverse_spec.rb +0 -31
- data/spec/unit/veritas/logic/predicate/less_than/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/less_than/class_methods/reverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/less_than/inspect_spec.rb +0 -10
- data/spec/unit/veritas/logic/predicate/less_than_or_equal_to/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/less_than_or_equal_to/class_methods/reverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/less_than_or_equal_to/inspect_spec.rb +0 -10
- data/spec/unit/veritas/logic/predicate/less_than_or_equal_to/inverse_spec.rb +0 -20
- data/spec/unit/veritas/logic/predicate/match/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/no_match/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/predicate/rename_spec.rb +0 -45
- data/spec/unit/veritas/logic/proposition/contradiction/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/logic/proposition/hash_spec.rb +0 -12
- data/spec/unit/veritas/logic/proposition/inspect_spec.rb +0 -14
- data/spec/unit/veritas/logic/proposition/tautology/class_methods/inverse_spec.rb +0 -9
- data/spec/unit/veritas/relation/header/index_spec.rb +0 -20
- data/spec/unit/veritas/relation/operation/binary/directions_spec.rb +0 -17
- data/spec/unit/veritas/relation/operation/unary/directions_spec.rb +0 -16
- data/tasks/quality/ci.rake +0 -2
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
|
@@ -69,8 +71,9 @@ module Veritas
|
|
69
71
|
#
|
70
72
|
# @api private
|
71
73
|
def self.duplicate_attributes(attributes)
|
72
|
-
|
73
|
-
|
74
|
+
names = attributes.map { |attribute| attribute.name }
|
75
|
+
names.select! { |name| names.count(name) > 1 }
|
76
|
+
names.uniq!
|
74
77
|
end
|
75
78
|
|
76
79
|
private_class_method :coerce_attributes, :assert_unique_attributes, :duplicate_attributes
|
@@ -86,9 +89,8 @@ module Veritas
|
|
86
89
|
#
|
87
90
|
# @api public
|
88
91
|
def initialize(attributes)
|
89
|
-
@attributes
|
90
|
-
@
|
91
|
-
@indexes = {}
|
92
|
+
@names = attributes.map { |attribute| attribute.name }
|
93
|
+
@attributes = Hash[@names.zip(attributes)]
|
92
94
|
end
|
93
95
|
|
94
96
|
# Iterate over each attribute in the header
|
@@ -105,33 +107,12 @@ module Veritas
|
|
105
107
|
# @return [self]
|
106
108
|
#
|
107
109
|
# @api public
|
108
|
-
def each
|
110
|
+
def each
|
109
111
|
return to_enum unless block_given?
|
110
|
-
|
112
|
+
@names.each { |name| yield @attributes.fetch(name) }
|
111
113
|
self
|
112
114
|
end
|
113
115
|
|
114
|
-
# Lookup the index of an attribute in the header given a name
|
115
|
-
#
|
116
|
-
# @example
|
117
|
-
# index = header.index(:id)
|
118
|
-
#
|
119
|
-
# @param [Attribute, #to_ary, #to_sym] name
|
120
|
-
#
|
121
|
-
# @return [Integer]
|
122
|
-
# the offset when the name is known
|
123
|
-
# @return [nil]
|
124
|
-
# nil when the attribute is unknown
|
125
|
-
#
|
126
|
-
# @api private
|
127
|
-
def index(name)
|
128
|
-
@indexes[name] ||=
|
129
|
-
begin
|
130
|
-
attribute = self[name]
|
131
|
-
to_ary.index(attribute) if attribute
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
116
|
# Lookup an attribute in the header given a name
|
136
117
|
#
|
137
118
|
# @example
|
@@ -146,11 +127,7 @@ module Veritas
|
|
146
127
|
#
|
147
128
|
# @api public
|
148
129
|
def [](name)
|
149
|
-
@
|
150
|
-
begin
|
151
|
-
name = Attribute.name_from(name)
|
152
|
-
detect { |attribute| attribute.name == name }
|
153
|
-
end
|
130
|
+
@attributes[Attribute.name_from(name)]
|
154
131
|
end
|
155
132
|
|
156
133
|
# Return a header with only the attributes specified
|
@@ -225,7 +202,7 @@ module Veritas
|
|
225
202
|
#
|
226
203
|
# @api private
|
227
204
|
def to_ary
|
228
|
-
@attributes
|
205
|
+
@attributes.values_at(*@names).freeze
|
229
206
|
end
|
230
207
|
|
231
208
|
# Compare the header with other header for equivalency
|
@@ -268,7 +245,7 @@ module Veritas
|
|
268
245
|
#
|
269
246
|
# @api public
|
270
247
|
def hash
|
271
|
-
self.class.hash ^
|
248
|
+
self.class.hash ^ @attributes.hash
|
272
249
|
end
|
273
250
|
|
274
251
|
# Test if there are no attributes
|
@@ -280,7 +257,7 @@ module Veritas
|
|
280
257
|
#
|
281
258
|
# @api public
|
282
259
|
def empty?
|
283
|
-
|
260
|
+
@names.empty?
|
284
261
|
end
|
285
262
|
|
286
263
|
# Return a string representing the header
|
@@ -321,7 +298,7 @@ module Veritas
|
|
321
298
|
object.kind_of?(Header) ? object : new(object)
|
322
299
|
end
|
323
300
|
|
324
|
-
memoize :hash
|
301
|
+
memoize :hash, :to_ary
|
325
302
|
|
326
303
|
end # class Header
|
327
304
|
end # class Relation
|
@@ -1,9 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
|
4
6
|
# A materialized relation
|
5
7
|
class Materialized < Relation
|
6
8
|
|
9
|
+
# The relation sort order
|
10
|
+
#
|
11
|
+
# @return [Operation::Order::DirectionSet]
|
12
|
+
#
|
13
|
+
# @api private
|
14
|
+
attr_reader :directions
|
15
|
+
|
7
16
|
# Initialize a materialized Relation
|
8
17
|
#
|
9
18
|
# @param [Header, #to_ary] header
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -29,8 +31,7 @@ module Veritas
|
|
29
31
|
# @api private
|
30
32
|
def initialize(left, right)
|
31
33
|
super
|
32
|
-
@header
|
33
|
-
@directions = Relation::Operation::Order::DirectionSet::EMPTY
|
34
|
+
@header = left.header | right.header
|
34
35
|
end
|
35
36
|
|
36
37
|
module ClassMethods
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -16,6 +18,13 @@ module Veritas
|
|
16
18
|
# @api public
|
17
19
|
attr_reader :limit
|
18
20
|
|
21
|
+
# The relation sort order
|
22
|
+
#
|
23
|
+
# @return [Operation::Order::DirectionSet]
|
24
|
+
#
|
25
|
+
# @api private
|
26
|
+
attr_reader :directions
|
27
|
+
|
19
28
|
# Instantiate a new Limit
|
20
29
|
#
|
21
30
|
# @example
|
@@ -81,7 +90,8 @@ module Veritas
|
|
81
90
|
# @api private
|
82
91
|
def initialize(operand, limit)
|
83
92
|
super(operand)
|
84
|
-
@limit
|
93
|
+
@limit = limit.to_int
|
94
|
+
@directions = operand.directions
|
85
95
|
end
|
86
96
|
|
87
97
|
# Iterate over each tuple in the set
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -16,6 +18,13 @@ module Veritas
|
|
16
18
|
# @api public
|
17
19
|
attr_reader :offset
|
18
20
|
|
21
|
+
# The relation sort order
|
22
|
+
#
|
23
|
+
# @return [Operation::Order::DirectionSet]
|
24
|
+
#
|
25
|
+
# @api private
|
26
|
+
attr_reader :directions
|
27
|
+
|
19
28
|
# Instantiate a new Offset
|
20
29
|
#
|
21
30
|
# @example
|
@@ -81,7 +90,8 @@ module Veritas
|
|
81
90
|
# @api private
|
82
91
|
def initialize(operand, offset)
|
83
92
|
super(operand)
|
84
|
-
@offset
|
93
|
+
@offset = offset.to_int
|
94
|
+
@directions = operand.directions
|
85
95
|
end
|
86
96
|
|
87
97
|
# Iterate over each tuple in the set
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -84,9 +86,9 @@ module Veritas
|
|
84
86
|
# @return [self]
|
85
87
|
#
|
86
88
|
# @api public
|
87
|
-
def each
|
89
|
+
def each
|
88
90
|
return to_enum unless block_given?
|
89
|
-
to_ary.each
|
91
|
+
to_ary.each { |tuple| yield tuple }
|
90
92
|
self
|
91
93
|
end
|
92
94
|
|
@@ -238,7 +240,7 @@ module Veritas
|
|
238
240
|
object.kind_of?(DirectionSet) ? object : new(object)
|
239
241
|
end
|
240
242
|
|
241
|
-
memoize :hash
|
243
|
+
memoize :hash, :reverse
|
242
244
|
|
243
245
|
end # class DirectionSet
|
244
246
|
end # class Order
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -6,6 +8,13 @@ module Veritas
|
|
6
8
|
class Order < Relation
|
7
9
|
include Unary
|
8
10
|
|
11
|
+
# The relation sort order
|
12
|
+
#
|
13
|
+
# @return [Operation::Order::DirectionSet]
|
14
|
+
#
|
15
|
+
# @api private
|
16
|
+
attr_reader :directions
|
17
|
+
|
9
18
|
# Instantiate a new Order
|
10
19
|
#
|
11
20
|
# @example
|
@@ -77,9 +86,9 @@ module Veritas
|
|
77
86
|
# @return [self]
|
78
87
|
#
|
79
88
|
# @api public
|
80
|
-
def each
|
89
|
+
def each
|
81
90
|
return to_enum unless block_given?
|
82
|
-
directions.sort_tuples(operand).each
|
91
|
+
directions.sort_tuples(operand).each { |tuple| yield tuple }
|
83
92
|
self
|
84
93
|
end
|
85
94
|
|
@@ -117,9 +126,6 @@ module Veritas
|
|
117
126
|
# @example with no directions
|
118
127
|
# order = relation.order # sort by the header
|
119
128
|
#
|
120
|
-
# @example with directions
|
121
|
-
# order = relation.order([ relation[:a].desc, relation[:b] ])
|
122
|
-
#
|
123
129
|
# @example with a block
|
124
130
|
# order = relation.order { |r| [ r[:a].desc, r[:b] ] }
|
125
131
|
#
|
@@ -128,11 +134,13 @@ module Veritas
|
|
128
134
|
#
|
129
135
|
# @yieldparam [Relation] relation
|
130
136
|
#
|
137
|
+
# @yieldreturn [Array<Direction>, Header]
|
138
|
+
#
|
131
139
|
# @return [Order]
|
132
140
|
#
|
133
141
|
# @api public
|
134
|
-
def order
|
135
|
-
Order.new(self,
|
142
|
+
def order
|
143
|
+
Order.new(self, block_given? ? Array(yield(self)) : header)
|
136
144
|
end
|
137
145
|
|
138
146
|
end # module Methods
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -52,9 +54,9 @@ module Veritas
|
|
52
54
|
# @return [self]
|
53
55
|
#
|
54
56
|
# @api public
|
55
|
-
def each
|
57
|
+
def each
|
56
58
|
return to_enum unless block_given?
|
57
|
-
operand.reverse_each
|
59
|
+
operand.reverse_each { |tuple| yield tuple }
|
58
60
|
self
|
59
61
|
end
|
60
62
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
class Relation
|
3
5
|
module Operation
|
@@ -15,8 +17,7 @@ module Veritas
|
|
15
17
|
# @api private
|
16
18
|
def initialize(operand)
|
17
19
|
super
|
18
|
-
@header
|
19
|
-
@directions = operand.directions
|
20
|
+
@header = operand.header
|
20
21
|
end
|
21
22
|
|
22
23
|
end # module Unary
|
data/lib/veritas/relation.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
|
3
5
|
# Abstract base class for Relation operations
|
@@ -16,7 +18,9 @@ module Veritas
|
|
16
18
|
# @return [Operation::Order::DirectionSet]
|
17
19
|
#
|
18
20
|
# @api private
|
19
|
-
|
21
|
+
def directions
|
22
|
+
Operation::Order::DirectionSet::EMPTY
|
23
|
+
end
|
20
24
|
|
21
25
|
# Instantiate a new Relation
|
22
26
|
#
|
@@ -59,9 +63,8 @@ module Veritas
|
|
59
63
|
#
|
60
64
|
# @api private
|
61
65
|
def initialize(header, tuples)
|
62
|
-
@header
|
63
|
-
@tuples
|
64
|
-
@directions = Operation::Order::DirectionSet::EMPTY
|
66
|
+
@header = Header.coerce(header)
|
67
|
+
@tuples = tuples
|
65
68
|
end
|
66
69
|
|
67
70
|
# Lookup an Attribute in the header given an attribute name
|
@@ -184,14 +187,14 @@ module Veritas
|
|
184
187
|
|
185
188
|
# Coerce an Enumerable into a Relation
|
186
189
|
#
|
187
|
-
# @param [
|
190
|
+
# @param [Enumerable] tuples
|
188
191
|
# the tuples to coerce
|
189
192
|
#
|
190
193
|
# @return [Relation]
|
191
194
|
#
|
192
195
|
# @api private
|
193
196
|
def coerce(tuples)
|
194
|
-
|
197
|
+
Relation.new(header, tuples)
|
195
198
|
end
|
196
199
|
|
197
200
|
memoize :hash
|
@@ -1,52 +1,73 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
module Evaluator
|
3
5
|
|
4
6
|
# Provide a context to evaluate a Relation operation block
|
5
|
-
class
|
7
|
+
class Context
|
6
8
|
include Immutable
|
7
9
|
|
8
|
-
# The
|
10
|
+
# The functions to evaluate
|
9
11
|
#
|
10
12
|
# @return [Hash]
|
11
13
|
#
|
12
14
|
# @api private
|
13
|
-
attr_reader :
|
15
|
+
attr_reader :functions
|
14
16
|
|
15
|
-
# Initialize
|
17
|
+
# Initialize a Context
|
18
|
+
#
|
19
|
+
# @param [Header] header
|
16
20
|
#
|
17
21
|
# @return [undefined]
|
18
22
|
#
|
19
23
|
# @api private
|
20
|
-
def initialize
|
21
|
-
@
|
24
|
+
def initialize(header)
|
25
|
+
@header = header
|
26
|
+
@functions = {}
|
22
27
|
yield self
|
23
|
-
@
|
28
|
+
@functions.freeze
|
24
29
|
end
|
25
30
|
|
26
|
-
# Add
|
31
|
+
# Add a function to be evaluated by the summarization operation
|
27
32
|
#
|
28
33
|
# @example of a function
|
29
|
-
#
|
34
|
+
# context.add(:total, context[:unit_price] * context[:quantity])
|
30
35
|
#
|
31
36
|
# @example of a block
|
32
|
-
#
|
37
|
+
# context.add(:total) { |tuple| tuple[:unit_price] * tuple[:quantity] } }
|
33
38
|
#
|
34
39
|
# @param [Attribute, #to_ary, #to_sym] attribute
|
35
40
|
# the attribute to add to the header
|
36
|
-
# @param [
|
37
|
-
# optional
|
41
|
+
# @param [Object] object
|
42
|
+
# optional object
|
38
43
|
#
|
39
44
|
# @yield []
|
40
|
-
# optional block to execute in the
|
45
|
+
# optional block to execute in the summarization operation
|
41
46
|
#
|
42
47
|
# @return [self]
|
43
48
|
#
|
44
49
|
# @api public
|
45
|
-
def add(attribute,
|
46
|
-
|
50
|
+
def add(attribute, object = Undefined, &block)
|
51
|
+
object = block if object.equal?(Undefined)
|
52
|
+
type = Attribute.infer_type(object)
|
53
|
+
functions[type.coerce(attribute)] = object
|
47
54
|
self
|
48
55
|
end
|
49
56
|
|
50
|
-
|
57
|
+
# Lookup the attribute in the header
|
58
|
+
#
|
59
|
+
# @example
|
60
|
+
# attribute = context[name]
|
61
|
+
#
|
62
|
+
# @param [Symbol]
|
63
|
+
#
|
64
|
+
# @return [Attribute]
|
65
|
+
#
|
66
|
+
# @api public
|
67
|
+
def [](name)
|
68
|
+
@header[name]
|
69
|
+
end
|
70
|
+
|
71
|
+
end # class Context
|
51
72
|
end # module Evaluator
|
52
73
|
end # module Veritas
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
|
3
5
|
# Allows objects to be made immutable
|
@@ -59,7 +61,7 @@ module Veritas
|
|
59
61
|
#
|
60
62
|
# @api public
|
61
63
|
def memoize(name, value)
|
62
|
-
@__memory["@#{name}"] = value
|
64
|
+
@__memory["@#{name}"] = Immutable.freeze_object(value)
|
63
65
|
self
|
64
66
|
end
|
65
67
|
|
@@ -174,7 +176,7 @@ module Veritas
|
|
174
176
|
original = instance_method(method)
|
175
177
|
ivar = "@#{method}"
|
176
178
|
send(:define_method, method) do |*args|
|
177
|
-
@__memory[ivar] ||= original.bind(self).call(*args)
|
179
|
+
@__memory[ivar] ||= Immutable.freeze_object(original.bind(self).call(*args))
|
178
180
|
end
|
179
181
|
end
|
180
182
|
|
@@ -241,9 +243,7 @@ module Veritas
|
|
241
243
|
# @return [undefined]
|
242
244
|
#
|
243
245
|
# @api public
|
244
|
-
|
245
|
-
instance_variable_set(ivar, Immutable.freeze_object(value))
|
246
|
-
end
|
246
|
+
alias []= instance_variable_set
|
247
247
|
|
248
248
|
end # class Memory
|
249
249
|
end # module Immutable
|
data/lib/veritas/tuple.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
module Veritas
|
2
4
|
|
3
5
|
# A set of objects representing a unique fact in a relation
|
@@ -23,7 +25,7 @@ module Veritas
|
|
23
25
|
# @api private
|
24
26
|
def initialize(header, data)
|
25
27
|
@header = header
|
26
|
-
@data = data.to_ary
|
28
|
+
@data = Hash[header.zip(data.to_ary)].freeze
|
27
29
|
end
|
28
30
|
|
29
31
|
# Lookup a value in the tuple given an attribute
|
@@ -37,8 +39,7 @@ module Veritas
|
|
37
39
|
#
|
38
40
|
# @api public
|
39
41
|
def [](attribute)
|
40
|
-
|
41
|
-
to_ary.at(index) if index
|
42
|
+
@data[header[attribute]]
|
42
43
|
end
|
43
44
|
|
44
45
|
# Return a tuple with only the specified attributes
|
@@ -53,7 +54,7 @@ module Veritas
|
|
53
54
|
#
|
54
55
|
# @api public
|
55
56
|
def project(header)
|
56
|
-
self.class.new(header, header
|
57
|
+
self.class.new(header, @data.values_at(*header))
|
57
58
|
end
|
58
59
|
|
59
60
|
# Append values to the tuple and return a new tuple
|
@@ -80,14 +81,17 @@ module Veritas
|
|
80
81
|
#
|
81
82
|
# @param [Header] header
|
82
83
|
# the attributes to include in the tuple
|
83
|
-
# @param [Array
|
84
|
+
# @param [Array<Object>] extensions
|
84
85
|
# the functions to extend the tuple with
|
85
86
|
#
|
86
87
|
# @return [Tuple]
|
87
88
|
#
|
88
89
|
# @api public
|
89
90
|
def extend(header, extensions)
|
90
|
-
join(
|
91
|
+
join(
|
92
|
+
header,
|
93
|
+
extensions.map { |extension| Function.extract_value(extension, self) }
|
94
|
+
)
|
91
95
|
end
|
92
96
|
|
93
97
|
# Convert the Tuple into an Array
|
@@ -99,7 +103,7 @@ module Veritas
|
|
99
103
|
#
|
100
104
|
# @api public
|
101
105
|
def to_ary
|
102
|
-
@data
|
106
|
+
@data.values_at(*header).freeze
|
103
107
|
end
|
104
108
|
|
105
109
|
# Compare the tuple with other tuple for equivalency
|
@@ -147,7 +151,7 @@ module Veritas
|
|
147
151
|
#
|
148
152
|
# @api public
|
149
153
|
def hash
|
150
|
-
self.class.hash ^ header.hash ^
|
154
|
+
self.class.hash ^ header.hash ^ @data.hash
|
151
155
|
end
|
152
156
|
|
153
157
|
# Return a string representing the tuple data
|
@@ -176,7 +180,7 @@ module Veritas
|
|
176
180
|
object.kind_of?(Tuple) ? object : new(header, object)
|
177
181
|
end
|
178
182
|
|
179
|
-
memoize :hash
|
183
|
+
memoize :hash, :to_ary
|
180
184
|
|
181
185
|
end # class Tuple
|
182
186
|
end # module Veritas
|
data/lib/veritas/version.rb
CHANGED