criteria_operator 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +12 -11
- data/CODE_OF_CONDUCT.md +1 -1
- data/README.md +12 -4
- data/criteria_operator.gemspec +42 -37
- data/lib/criteria_operator.rb +11 -4
- data/lib/criteria_operator/base_operator.rb +27 -0
- data/lib/criteria_operator/binary_operator.rb +51 -0
- data/lib/criteria_operator/exceptions.rb +16 -0
- data/lib/criteria_operator/group_operator.rb +40 -0
- data/lib/criteria_operator/operand_property.rb +27 -0
- data/lib/criteria_operator/operand_value.rb +27 -0
- data/lib/criteria_operator/unary_operator.rb +42 -0
- data/lib/criteria_operator/version.rb +3 -1
- metadata +40 -9
- data/.idea/criteria_operator.iml +0 -15
- data/.idea/misc.xml +0 -4
- data/.idea/modules.xml +0 -8
- data/.idea/vcs.xml +0 -6
- data/.idea/workspace.xml +0 -224
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6d6ba55f042935bb7b916c270c415c863d305565
|
|
4
|
+
data.tar.gz: 51e3ace7e81abdddc0f52bfc816d33364d946c26
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2f2eed740d9047e1ee324e5261c75f84ed38f37bc3c655a975c611573ad8e8dd2077ccb9322c0d1d1fcdb634fa2ee3f585be988957b111d6f92b4320dceb2228
|
|
7
|
+
data.tar.gz: 1f49583c147795674709284e630f86428de1a265d07fa4bfefc72cbd842095c3e9f91f9cd387527bf7c31464db26dacc86fcb2fe18249e9f5173e8a05900507d
|
data/.gitignore
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
/.bundle/
|
|
2
|
-
/.
|
|
3
|
-
|
|
4
|
-
/
|
|
5
|
-
/
|
|
6
|
-
/
|
|
7
|
-
/
|
|
8
|
-
/
|
|
9
|
-
/
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
/.bundle/
|
|
2
|
+
/.idea/
|
|
3
|
+
/.yardoc
|
|
4
|
+
/Gemfile.lock
|
|
5
|
+
/_yardoc/
|
|
6
|
+
/coverage/
|
|
7
|
+
/doc/
|
|
8
|
+
/pkg/
|
|
9
|
+
/spec/reports/
|
|
10
|
+
/tmp/
|
|
11
|
+
|
|
12
|
+
*.gem
|
data/CODE_OF_CONDUCT.md
CHANGED
|
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
|
|
|
55
55
|
## Enforcement
|
|
56
56
|
|
|
57
57
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
58
|
-
reported by contacting the project team at
|
|
58
|
+
reported by contacting the project team at floriankochde@arcor.de. All
|
|
59
59
|
complaints will be reviewed and investigated and will result in a response that
|
|
60
60
|
is deemed necessary and appropriate to the circumstances. The project team is
|
|
61
61
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
data/README.md
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://rubygems.org/gems/criteria_operator)
|
|
2
|
+
[](http://TheFlow0360.mit-license.org)
|
|
3
|
+
[](https://travis-ci.org/TheFlow0360/criteria_operator)
|
|
4
|
+
[](https://gemnasium.com/TheFlow0360/criteria_operator)
|
|
5
|
+
[](https://codeclimate.com/github/TheFlow0360/criteria_operator)
|
|
6
|
+
[](https://coveralls.io/github/TheFlow0360/criteria_operator?branch=master)
|
|
7
|
+
[](http://inch-ci.org/github/TheFlow0360/criteria_operator)
|
|
8
|
+
[](https://bestpractices.coreinfrastructure.org/projects/958)
|
|
9
|
+
|
|
2
10
|
|
|
3
|
-
|
|
11
|
+
# CriteriaOperator
|
|
4
12
|
|
|
5
|
-
|
|
13
|
+
This gem provides classes to create arbitrary complex conditions, by building an expression tree. ...
|
|
6
14
|
|
|
7
15
|
## Installation
|
|
8
16
|
|
|
@@ -32,7 +40,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
|
32
40
|
|
|
33
41
|
## Contributing
|
|
34
42
|
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
|
43
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/TheFlow0360/criteria_operator. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
|
36
44
|
|
|
37
45
|
|
|
38
46
|
## License
|
data/criteria_operator.gemspec
CHANGED
|
@@ -1,37 +1,42 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require 'criteria_operator/version'
|
|
5
|
-
|
|
6
|
-
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name = "criteria_operator"
|
|
8
|
-
spec.version = CriteriaOperator::VERSION
|
|
9
|
-
spec.authors = ["Florian Koch"]
|
|
10
|
-
spec.email = ["floriankochde@arcor.de"]
|
|
11
|
-
|
|
12
|
-
spec.summary = "Provides objects to encapsulate arbitrary complex conditions."
|
|
13
|
-
spec.description = "This gem provides classes to create arbitrary complex chains respectively trees " \
|
|
14
|
-
"of conditions. This enables handling filter statements as objects."
|
|
15
|
-
spec.homepage = "https://github.com/TheFlow0360/criteria_operator.git"
|
|
16
|
-
spec.license = "MIT"
|
|
17
|
-
|
|
18
|
-
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
19
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
|
20
|
-
if spec.respond_to?(:metadata)
|
|
21
|
-
spec.metadata['allowed_push_host'] = "https://rubygems.org/"
|
|
22
|
-
else
|
|
23
|
-
raise "RubyGems 2.0 or newer is required to protect against " \
|
|
24
|
-
"public gem pushes."
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
28
|
-
f.match(%r{^(test|spec|features)/})
|
|
29
|
-
end
|
|
30
|
-
spec.bindir = "exe"
|
|
31
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
32
|
-
spec.require_paths = ["lib"]
|
|
33
|
-
|
|
34
|
-
spec.add_development_dependency "bundler", "~> 1.14"
|
|
35
|
-
spec.add_development_dependency "rake", "~>
|
|
36
|
-
spec.add_development_dependency "minitest", "~> 5.0"
|
|
37
|
-
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'criteria_operator/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "criteria_operator"
|
|
8
|
+
spec.version = CriteriaOperator::VERSION
|
|
9
|
+
spec.authors = ["Florian Koch"]
|
|
10
|
+
spec.email = ["floriankochde@arcor.de"]
|
|
11
|
+
|
|
12
|
+
spec.summary = "Provides objects to encapsulate arbitrary complex conditions."
|
|
13
|
+
spec.description = "This gem provides classes to create arbitrary complex chains respectively trees " \
|
|
14
|
+
"of conditions. This enables handling filter statements as objects."
|
|
15
|
+
spec.homepage = "https://github.com/TheFlow0360/criteria_operator.git"
|
|
16
|
+
spec.license = "MIT"
|
|
17
|
+
|
|
18
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
|
19
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
|
20
|
+
if spec.respond_to?(:metadata)
|
|
21
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org/"
|
|
22
|
+
else
|
|
23
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
|
24
|
+
"public gem pushes."
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
28
|
+
f.match(%r{^(test|spec|features)/})
|
|
29
|
+
end
|
|
30
|
+
spec.bindir = "exe"
|
|
31
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
32
|
+
spec.require_paths = ["lib"]
|
|
33
|
+
|
|
34
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
|
35
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
|
36
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
|
37
|
+
spec.add_development_dependency "minitest-reporters", "~> 1.1"
|
|
38
|
+
spec.add_development_dependency "coveralls", "~> 0.8"
|
|
39
|
+
|
|
40
|
+
# let yard run on install
|
|
41
|
+
spec.metadata["yard.run"] = "yri"
|
|
42
|
+
end
|
data/lib/criteria_operator.rb
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
require
|
|
1
|
+
require 'criteria_operator/version'
|
|
2
|
+
require 'criteria_operator/exceptions'
|
|
3
|
+
require 'criteria_operator/base_operator'
|
|
4
|
+
require 'criteria_operator/unary_operator'
|
|
5
|
+
require 'criteria_operator/binary_operator'
|
|
6
|
+
require 'criteria_operator/group_operator'
|
|
7
|
+
require 'criteria_operator/operand_property'
|
|
8
|
+
require 'criteria_operator/operand_value'
|
|
2
9
|
|
|
10
|
+
# The main module of this gem. Contains all operator classes as well as
|
|
11
|
+
# various helpers.
|
|
3
12
|
module CriteriaOperator
|
|
4
|
-
|
|
5
|
-
puts "Working!"
|
|
6
|
-
end
|
|
13
|
+
|
|
7
14
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'criteria_operator/exceptions'
|
|
2
|
+
|
|
3
|
+
module CriteriaOperator
|
|
4
|
+
|
|
5
|
+
# Base class for all criteria operators. Provides operator overloads and other
|
|
6
|
+
# useful utility and convenience functions.
|
|
7
|
+
# @abstract Subclass and override {#clone} to implement.
|
|
8
|
+
class BaseOperator
|
|
9
|
+
|
|
10
|
+
# Clones an operator with all sub-operators, creating a deep copy.
|
|
11
|
+
# @abstract
|
|
12
|
+
# @return [BaseOperator] the cloned operator
|
|
13
|
+
def clone
|
|
14
|
+
raise NotImplementedError
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
protected
|
|
18
|
+
|
|
19
|
+
# Clones the passed operator if it isn't nil.
|
|
20
|
+
# @param [BaseOperator] op the operator to clone
|
|
21
|
+
# @return [BaseOperator, nil] The cloned base operator, if it exists, or nil, otherwise.
|
|
22
|
+
def clone_or_nil(op)
|
|
23
|
+
return nil if op.nil? || !op.is_a?(BaseOperator)
|
|
24
|
+
op.clone
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'criteria_operator/base_operator'
|
|
2
|
+
|
|
3
|
+
module CriteriaOperator
|
|
4
|
+
|
|
5
|
+
# Enum representing all possible types for a {BinaryOperator}.
|
|
6
|
+
module BinaryOperatorType
|
|
7
|
+
# with this type, a {BinaryOperator} will check for equality of both operands
|
|
8
|
+
EQUAL = 1
|
|
9
|
+
# with this type, a {BinaryOperator} will check for no equality of both operands
|
|
10
|
+
NOT_EQUAL = 2
|
|
11
|
+
# with this type, a {BinaryOperator} will check if the left operand is greater than the right operand
|
|
12
|
+
GREATER = 4
|
|
13
|
+
# with this type, a {BinaryOperator} will check if the left operand is greater than or equal to the right operand
|
|
14
|
+
GREATER_OR_EQUAL = 8
|
|
15
|
+
# with this type, a {BinaryOperator} will check if the left operand is less than the right operand
|
|
16
|
+
LESS = 16
|
|
17
|
+
# with this type, a {BinaryOperator} will check if the left operand is less than or equal to the right operand
|
|
18
|
+
LESS_OR_EQUAL = 32
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Operator representing any of the binary conditionals defined in {BinaryOperatorType}.
|
|
22
|
+
class BinaryOperator < BaseOperator
|
|
23
|
+
|
|
24
|
+
# @return [BinaryOperatorType] the type of this operator
|
|
25
|
+
attr_accessor :operator_type
|
|
26
|
+
|
|
27
|
+
# @return [BaseOperator] the left hand side operand
|
|
28
|
+
attr_accessor :left_operand
|
|
29
|
+
|
|
30
|
+
# @return [BaseOperator] the right hand side operand
|
|
31
|
+
attr_accessor :right_operand
|
|
32
|
+
|
|
33
|
+
# The constructor for this operator. Expects the operands and the operator type as parameters.
|
|
34
|
+
# @param [BaseOperator] left_operand the left hand side operand
|
|
35
|
+
# @param [BaseOperator] right_operand the right hand side operand
|
|
36
|
+
# @param [BinaryOperatorType] binary_operator_type the type of this operator
|
|
37
|
+
# @return [Void]
|
|
38
|
+
def initialize(left_operand = nil, right_operand = nil, binary_operator_type = BinaryOperatorType::EQUAL)
|
|
39
|
+
self.left_operand = left_operand
|
|
40
|
+
self.right_operand = right_operand
|
|
41
|
+
self.operator_type = binary_operator_type
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Clones an operator with all sub-operators, creating a deep copy.
|
|
45
|
+
# Implementation of the abstract {BaseOperator#clone}.
|
|
46
|
+
# @return [BinaryOperator] the cloned operator
|
|
47
|
+
def clone
|
|
48
|
+
BinaryOperator.new clone_or_nil(self.left_operand), clone_or_nil(self.right_operand), self.operator_type
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module CriteriaOperator
|
|
2
|
+
|
|
3
|
+
# The base exception class for this gem.
|
|
4
|
+
class Error < StandardError; end
|
|
5
|
+
|
|
6
|
+
# Exception class for unimplemented functions in abstract classes.
|
|
7
|
+
class NotImplementedError < Error
|
|
8
|
+
|
|
9
|
+
# Overrides the default message with a hint regarding the abstract class instantiation.
|
|
10
|
+
# @return [String] the error message
|
|
11
|
+
def message
|
|
12
|
+
'The function that was called is not implemented. '\
|
|
13
|
+
'Probably the containing class is abstract but was instantiated.'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'criteria_operator/base_operator'
|
|
2
|
+
|
|
3
|
+
module CriteriaOperator
|
|
4
|
+
|
|
5
|
+
# Enum representing all possible types for a {GroupOperator}.
|
|
6
|
+
module GroupOperatorType
|
|
7
|
+
# with this type, a {GroupOperator} will check that all grouped operands are true
|
|
8
|
+
AND = 1
|
|
9
|
+
# with this type, a {GroupOperator} will check that at least one of the grouped operands is true
|
|
10
|
+
OR = 2
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Operator that groups multiple operators using one grouping type.
|
|
14
|
+
class GroupOperator < BaseOperator
|
|
15
|
+
|
|
16
|
+
# @return [GroupOperatorType] the type of this operator
|
|
17
|
+
attr_accessor :operator_type
|
|
18
|
+
|
|
19
|
+
# @return [Array<BaseOperator>] the collection of operands grouped by this operator
|
|
20
|
+
attr_accessor :operand_collection
|
|
21
|
+
|
|
22
|
+
# The constructor for this operator. Expects a collection of operands and the operator type as parameters.
|
|
23
|
+
# @param [Array<BaseOperator>] operands a collection of operands to group together
|
|
24
|
+
# @param [GroupOperatorType] group_operator_type the type of this operator
|
|
25
|
+
# @return [Void]
|
|
26
|
+
def initialize(operands = [], group_operator_type = GroupOperatorType::AND)
|
|
27
|
+
self.operand_collection = operands
|
|
28
|
+
self.operator_type = group_operator_type
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Clones an operator with all sub-operators, creating a deep copy.
|
|
32
|
+
# Implementation of the abstract {BaseOperator#clone}.
|
|
33
|
+
# @return [GroupOperator] the cloned operator
|
|
34
|
+
def clone
|
|
35
|
+
ops = []
|
|
36
|
+
self.operand_collection.each { |op| ops << clone_or_nil(op) }
|
|
37
|
+
GroupOperator.new ops, self.operator_type
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'criteria_operator/base_operator'
|
|
2
|
+
|
|
3
|
+
module CriteriaOperator
|
|
4
|
+
|
|
5
|
+
# Operator that stores a property (e.g. column name).
|
|
6
|
+
# This operator is an operand, thus it is always a leaf of the expression tree.
|
|
7
|
+
class OperandProperty < BaseOperator
|
|
8
|
+
|
|
9
|
+
# @return [String] the name of the property described by this operand.
|
|
10
|
+
attr_accessor :property_name
|
|
11
|
+
|
|
12
|
+
# The constructor for the operand. Expects the property name as parameter.
|
|
13
|
+
# @param [String] property_name the name of the property described by this operand
|
|
14
|
+
# @return [Void]
|
|
15
|
+
def initialize(property_name)
|
|
16
|
+
self.property_name = property_name
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Clones an operator with all sub-operators, creating a deep copy.
|
|
20
|
+
# Since this is an operand, there are no sub-operators to clone.
|
|
21
|
+
# Implementation of the abstract {BaseOperator#clone}.
|
|
22
|
+
# @return [OperandProperty] the cloned operator
|
|
23
|
+
def clone
|
|
24
|
+
OperandProperty.new self.property_name
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'criteria_operator/base_operator'
|
|
2
|
+
|
|
3
|
+
module CriteriaOperator
|
|
4
|
+
|
|
5
|
+
# Operator that holds a value. This operator is an operand,
|
|
6
|
+
# thus it is always a leaf of the expression tree.
|
|
7
|
+
class OperandValue < BaseOperator
|
|
8
|
+
|
|
9
|
+
# @return [Object] the stored value.
|
|
10
|
+
attr_accessor :value
|
|
11
|
+
|
|
12
|
+
# The constructor for this operand. Expects the value as parameter.
|
|
13
|
+
# @param [Object] value the value of the operand
|
|
14
|
+
# @return [Void]
|
|
15
|
+
def initialize(value)
|
|
16
|
+
self.value = value
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Clones an operator with all sub-operators, creating a deep copy.
|
|
20
|
+
# Since this is an operand, there are no sub-operators to clone.
|
|
21
|
+
# Implementation of the abstract {BaseOperator#clone}.
|
|
22
|
+
# @return [OperandValue] the cloned operator
|
|
23
|
+
def clone
|
|
24
|
+
OperandValue.new self.value
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'criteria_operator/base_operator'
|
|
2
|
+
|
|
3
|
+
module CriteriaOperator
|
|
4
|
+
|
|
5
|
+
# Enum representing all possible types for a {UnaryOperator}.
|
|
6
|
+
module UnaryOperatorType
|
|
7
|
+
# with this type, a {UnaryOperator} will inverse the logical value of the operand
|
|
8
|
+
NOT = 1
|
|
9
|
+
# with this type, a {UnaryOperator} will check for if the operand equals null/nil
|
|
10
|
+
IS_NULL = 2
|
|
11
|
+
# with this type, a {UnaryOperator} will prepend a numerical positive sign to the operand
|
|
12
|
+
PLUS = 4
|
|
13
|
+
# with this type, a {UnaryOperator} will prepend a numerical negative sign to the operand
|
|
14
|
+
MINUS = 8
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Operator representing an unary operation.
|
|
18
|
+
class UnaryOperator < BaseOperator
|
|
19
|
+
|
|
20
|
+
# @return [UnaryOperatorType] the type of this operator
|
|
21
|
+
attr_accessor :operator_type
|
|
22
|
+
|
|
23
|
+
# @return [BaseOperator] the operand
|
|
24
|
+
attr_accessor :operand
|
|
25
|
+
|
|
26
|
+
# The constructor for this operator. Expects the operand and the operator type as parameters.
|
|
27
|
+
# @param [BaseOperator] operand the operand
|
|
28
|
+
# @param [UnaryOperatorType] unary_operator_type the type of this operator
|
|
29
|
+
# @return [Void]
|
|
30
|
+
def initialize(operand = nil, unary_operator_type = UnaryOperatorType::NOT)
|
|
31
|
+
self.operand = operand
|
|
32
|
+
self.operator_type = unary_operator_type
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Clones an operator with all sub-operators, creating a deep copy.
|
|
36
|
+
# Implementation of the abstract {BaseOperator#clone}.
|
|
37
|
+
# @return [UnaryOperator] the cloned operator
|
|
38
|
+
def clone
|
|
39
|
+
UnaryOperator.new clone_or_nil(self.operand), self.operator_type
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: criteria_operator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Florian Koch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-05-
|
|
11
|
+
date: 2017-05-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
33
|
+
version: '12.0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
40
|
+
version: '12.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: minitest
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +52,34 @@ dependencies:
|
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '5.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: minitest-reporters
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '1.1'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '1.1'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: coveralls
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.8'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.8'
|
|
55
83
|
description: This gem provides classes to create arbitrary complex chains respectively
|
|
56
84
|
trees of conditions. This enables handling filter statements as objects.
|
|
57
85
|
email:
|
|
@@ -61,11 +89,6 @@ extensions: []
|
|
|
61
89
|
extra_rdoc_files: []
|
|
62
90
|
files:
|
|
63
91
|
- ".gitignore"
|
|
64
|
-
- ".idea/criteria_operator.iml"
|
|
65
|
-
- ".idea/misc.xml"
|
|
66
|
-
- ".idea/modules.xml"
|
|
67
|
-
- ".idea/vcs.xml"
|
|
68
|
-
- ".idea/workspace.xml"
|
|
69
92
|
- ".travis.yml"
|
|
70
93
|
- CODE_OF_CONDUCT.md
|
|
71
94
|
- Gemfile
|
|
@@ -76,12 +99,20 @@ files:
|
|
|
76
99
|
- bin/setup
|
|
77
100
|
- criteria_operator.gemspec
|
|
78
101
|
- lib/criteria_operator.rb
|
|
102
|
+
- lib/criteria_operator/base_operator.rb
|
|
103
|
+
- lib/criteria_operator/binary_operator.rb
|
|
104
|
+
- lib/criteria_operator/exceptions.rb
|
|
105
|
+
- lib/criteria_operator/group_operator.rb
|
|
106
|
+
- lib/criteria_operator/operand_property.rb
|
|
107
|
+
- lib/criteria_operator/operand_value.rb
|
|
108
|
+
- lib/criteria_operator/unary_operator.rb
|
|
79
109
|
- lib/criteria_operator/version.rb
|
|
80
110
|
homepage: https://github.com/TheFlow0360/criteria_operator.git
|
|
81
111
|
licenses:
|
|
82
112
|
- MIT
|
|
83
113
|
metadata:
|
|
84
114
|
allowed_push_host: https://rubygems.org/
|
|
115
|
+
yard.run: yri
|
|
85
116
|
post_install_message:
|
|
86
117
|
rdoc_options: []
|
|
87
118
|
require_paths:
|
data/.idea/criteria_operator.iml
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<module type="RUBY_MODULE" version="4">
|
|
3
|
-
<component name="ModuleRunConfigurationManager">
|
|
4
|
-
<shared />
|
|
5
|
-
<local />
|
|
6
|
-
</component>
|
|
7
|
-
<component name="NewModuleRootManager">
|
|
8
|
-
<content url="file://$MODULE_DIR$" />
|
|
9
|
-
<orderEntry type="inheritedJdk" />
|
|
10
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
|
11
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v1.14.6, ruby-2.3.3-p222) [gem]" level="application" />
|
|
12
|
-
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.10.1, ruby-2.3.3-p222) [gem]" level="application" />
|
|
13
|
-
<orderEntry type="library" scope="PROVIDED" name="rake (v10.4.2, ruby-2.3.3-p222) [gem]" level="application" />
|
|
14
|
-
</component>
|
|
15
|
-
</module>
|
data/.idea/misc.xml
DELETED
data/.idea/modules.xml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ProjectModuleManager">
|
|
4
|
-
<modules>
|
|
5
|
-
<module fileurl="file://$PROJECT_DIR$/.idea/criteria_operator.iml" filepath="$PROJECT_DIR$/.idea/criteria_operator.iml" />
|
|
6
|
-
</modules>
|
|
7
|
-
</component>
|
|
8
|
-
</project>
|
data/.idea/vcs.xml
DELETED
data/.idea/workspace.xml
DELETED
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project version="4">
|
|
3
|
-
<component name="ChangeListManager">
|
|
4
|
-
<list default="true" id="cf9e500e-74a3-4ed4-8e51-31799cafd00a" name="Default" comment="">
|
|
5
|
-
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/criteria_operator.gemspec" afterPath="$PROJECT_DIR$/criteria_operator.gemspec" />
|
|
6
|
-
</list>
|
|
7
|
-
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
|
8
|
-
<option name="TRACKING_ENABLED" value="true" />
|
|
9
|
-
<option name="SHOW_DIALOG" value="false" />
|
|
10
|
-
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
11
|
-
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
12
|
-
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
13
|
-
</component>
|
|
14
|
-
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
|
15
|
-
<component name="FileEditorManager">
|
|
16
|
-
<leaf>
|
|
17
|
-
<file leaf-file-name="criteria_operator.gemspec" pinned="false" current-in-tab="true">
|
|
18
|
-
<entry file="file://$PROJECT_DIR$/criteria_operator.gemspec">
|
|
19
|
-
<provider selected="true" editor-type-id="text-editor">
|
|
20
|
-
<state relative-caret-position="340">
|
|
21
|
-
<caret line="20" column="64" lean-forward="true" selection-start-line="20" selection-start-column="64" selection-end-line="20" selection-end-column="64" />
|
|
22
|
-
<folding />
|
|
23
|
-
</state>
|
|
24
|
-
</provider>
|
|
25
|
-
</entry>
|
|
26
|
-
</file>
|
|
27
|
-
<file leaf-file-name="criteria_operator.rb" pinned="false" current-in-tab="false">
|
|
28
|
-
<entry file="file://$PROJECT_DIR$/lib/criteria_operator.rb">
|
|
29
|
-
<provider selected="true" editor-type-id="text-editor">
|
|
30
|
-
<state relative-caret-position="119">
|
|
31
|
-
<caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
|
|
32
|
-
<folding />
|
|
33
|
-
</state>
|
|
34
|
-
</provider>
|
|
35
|
-
</entry>
|
|
36
|
-
</file>
|
|
37
|
-
</leaf>
|
|
38
|
-
</component>
|
|
39
|
-
<component name="Git.Settings">
|
|
40
|
-
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
41
|
-
</component>
|
|
42
|
-
<component name="IdeDocumentHistory">
|
|
43
|
-
<option name="CHANGED_PATHS">
|
|
44
|
-
<list>
|
|
45
|
-
<option value="$PROJECT_DIR$/lib/criteria_operator.rb" />
|
|
46
|
-
<option value="$PROJECT_DIR$/criteria_operator.gemspec" />
|
|
47
|
-
</list>
|
|
48
|
-
</option>
|
|
49
|
-
</component>
|
|
50
|
-
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
|
|
51
|
-
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
|
|
52
|
-
<component name="JsGulpfileManager">
|
|
53
|
-
<detection-done>true</detection-done>
|
|
54
|
-
<sorting>DEFINITION_ORDER</sorting>
|
|
55
|
-
</component>
|
|
56
|
-
<component name="ProjectFrameBounds">
|
|
57
|
-
<option name="x" value="-8" />
|
|
58
|
-
<option name="y" value="-8" />
|
|
59
|
-
<option name="width" value="1936" />
|
|
60
|
-
<option name="height" value="1176" />
|
|
61
|
-
</component>
|
|
62
|
-
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
|
63
|
-
<component name="ProjectView">
|
|
64
|
-
<navigator currentView="ProjectPane" proportions="" version="1">
|
|
65
|
-
<flattenPackages />
|
|
66
|
-
<showMembers />
|
|
67
|
-
<showModules />
|
|
68
|
-
<showLibraryContents />
|
|
69
|
-
<hideEmptyPackages />
|
|
70
|
-
<abbreviatePackageNames />
|
|
71
|
-
<autoscrollToSource />
|
|
72
|
-
<autoscrollFromSource ProjectPane="true" />
|
|
73
|
-
<sortByType />
|
|
74
|
-
<manualOrder />
|
|
75
|
-
<foldersAlwaysOnTop value="true" />
|
|
76
|
-
</navigator>
|
|
77
|
-
<panes>
|
|
78
|
-
<pane id="Scratches" />
|
|
79
|
-
<pane id="Scope" />
|
|
80
|
-
<pane id="ProjectPane">
|
|
81
|
-
<subPane>
|
|
82
|
-
<PATH>
|
|
83
|
-
<PATH_ELEMENT>
|
|
84
|
-
<option name="myItemId" value="criteria_operator" />
|
|
85
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
86
|
-
</PATH_ELEMENT>
|
|
87
|
-
<PATH_ELEMENT>
|
|
88
|
-
<option name="myItemId" value="criteria_operator" />
|
|
89
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
90
|
-
</PATH_ELEMENT>
|
|
91
|
-
</PATH>
|
|
92
|
-
<PATH>
|
|
93
|
-
<PATH_ELEMENT>
|
|
94
|
-
<option name="myItemId" value="criteria_operator" />
|
|
95
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
96
|
-
</PATH_ELEMENT>
|
|
97
|
-
<PATH_ELEMENT>
|
|
98
|
-
<option name="myItemId" value="criteria_operator" />
|
|
99
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
100
|
-
</PATH_ELEMENT>
|
|
101
|
-
<PATH_ELEMENT>
|
|
102
|
-
<option name="myItemId" value="test" />
|
|
103
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
104
|
-
</PATH_ELEMENT>
|
|
105
|
-
</PATH>
|
|
106
|
-
<PATH>
|
|
107
|
-
<PATH_ELEMENT>
|
|
108
|
-
<option name="myItemId" value="criteria_operator" />
|
|
109
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
110
|
-
</PATH_ELEMENT>
|
|
111
|
-
<PATH_ELEMENT>
|
|
112
|
-
<option name="myItemId" value="criteria_operator" />
|
|
113
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
114
|
-
</PATH_ELEMENT>
|
|
115
|
-
<PATH_ELEMENT>
|
|
116
|
-
<option name="myItemId" value="lib" />
|
|
117
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
118
|
-
</PATH_ELEMENT>
|
|
119
|
-
</PATH>
|
|
120
|
-
<PATH>
|
|
121
|
-
<PATH_ELEMENT>
|
|
122
|
-
<option name="myItemId" value="criteria_operator" />
|
|
123
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
|
124
|
-
</PATH_ELEMENT>
|
|
125
|
-
<PATH_ELEMENT>
|
|
126
|
-
<option name="myItemId" value="criteria_operator" />
|
|
127
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
128
|
-
</PATH_ELEMENT>
|
|
129
|
-
<PATH_ELEMENT>
|
|
130
|
-
<option name="myItemId" value="bin" />
|
|
131
|
-
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
|
132
|
-
</PATH_ELEMENT>
|
|
133
|
-
</PATH>
|
|
134
|
-
</subPane>
|
|
135
|
-
</pane>
|
|
136
|
-
</panes>
|
|
137
|
-
</component>
|
|
138
|
-
<component name="PropertiesComponent">
|
|
139
|
-
<property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
|
|
140
|
-
<property name="WebServerToolWindowFactoryState" value="false" />
|
|
141
|
-
</component>
|
|
142
|
-
<component name="RunDashboard">
|
|
143
|
-
<option name="ruleStates">
|
|
144
|
-
<list>
|
|
145
|
-
<RuleState>
|
|
146
|
-
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
|
147
|
-
</RuleState>
|
|
148
|
-
<RuleState>
|
|
149
|
-
<option name="name" value="StatusDashboardGroupingRule" />
|
|
150
|
-
</RuleState>
|
|
151
|
-
</list>
|
|
152
|
-
</option>
|
|
153
|
-
</component>
|
|
154
|
-
<component name="ShelveChangesManager" show_recycled="false">
|
|
155
|
-
<option name="remove_strategy" value="false" />
|
|
156
|
-
</component>
|
|
157
|
-
<component name="SpringUtil" SPRING_PRE_LOADER_OPTION="true" />
|
|
158
|
-
<component name="TaskManager">
|
|
159
|
-
<task active="true" id="Default" summary="Default task">
|
|
160
|
-
<changelist id="cf9e500e-74a3-4ed4-8e51-31799cafd00a" name="Default" comment="" />
|
|
161
|
-
<created>1494339147835</created>
|
|
162
|
-
<option name="number" value="Default" />
|
|
163
|
-
<option name="presentableId" value="Default" />
|
|
164
|
-
<updated>1494339147835</updated>
|
|
165
|
-
<workItem from="1494339149077" duration="562000" />
|
|
166
|
-
</task>
|
|
167
|
-
<servers />
|
|
168
|
-
</component>
|
|
169
|
-
<component name="TimeTrackingManager">
|
|
170
|
-
<option name="totallyTimeSpent" value="562000" />
|
|
171
|
-
</component>
|
|
172
|
-
<component name="ToolWindowManager">
|
|
173
|
-
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
|
|
174
|
-
<layout>
|
|
175
|
-
<window_info id="Project" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="3" side_tool="false" content_ui="combo" />
|
|
176
|
-
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32949087" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
|
177
|
-
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32949087" sideWeight="0.5021322" order="1" side_tool="true" content_ui="tabs" />
|
|
178
|
-
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32995737" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
179
|
-
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32949087" sideWeight="0.4978678" order="8" side_tool="false" content_ui="tabs" />
|
|
180
|
-
<window_info id="Version Control" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32995737" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
|
181
|
-
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
182
|
-
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32949087" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
|
183
|
-
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.31412104" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
|
184
|
-
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
|
|
185
|
-
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
|
186
|
-
<window_info id="Messages" active="false" anchor="bottom" auto_hide="true" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32949087" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
187
|
-
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
|
188
|
-
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
|
189
|
-
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
|
190
|
-
<window_info id="REST Client" active="false" anchor="bottom" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.32949087" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
|
|
191
|
-
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
|
192
|
-
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32949087" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
|
193
|
-
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
|
194
|
-
</layout>
|
|
195
|
-
</component>
|
|
196
|
-
<component name="TypeScriptGeneratedFilesManager">
|
|
197
|
-
<option name="processedProjectFiles" value="true" />
|
|
198
|
-
</component>
|
|
199
|
-
<component name="VcsContentAnnotationSettings">
|
|
200
|
-
<option name="myLimit" value="2678400000" />
|
|
201
|
-
</component>
|
|
202
|
-
<component name="XDebuggerManager">
|
|
203
|
-
<breakpoint-manager />
|
|
204
|
-
<watches-manager />
|
|
205
|
-
</component>
|
|
206
|
-
<component name="editorHistoryManager">
|
|
207
|
-
<entry file="file://$PROJECT_DIR$/lib/criteria_operator.rb">
|
|
208
|
-
<provider selected="true" editor-type-id="text-editor">
|
|
209
|
-
<state relative-caret-position="119">
|
|
210
|
-
<caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
|
|
211
|
-
<folding />
|
|
212
|
-
</state>
|
|
213
|
-
</provider>
|
|
214
|
-
</entry>
|
|
215
|
-
<entry file="file://$PROJECT_DIR$/criteria_operator.gemspec">
|
|
216
|
-
<provider selected="true" editor-type-id="text-editor">
|
|
217
|
-
<state relative-caret-position="340">
|
|
218
|
-
<caret line="20" column="64" lean-forward="true" selection-start-line="20" selection-start-column="64" selection-end-line="20" selection-end-column="64" />
|
|
219
|
-
<folding />
|
|
220
|
-
</state>
|
|
221
|
-
</provider>
|
|
222
|
-
</entry>
|
|
223
|
-
</component>
|
|
224
|
-
</project>
|