jaina 0.4.1 → 0.5.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/CHANGELOG.md +4 -0
- data/README.md +6 -0
- data/jaina.gemspec +1 -1
- data/lib/jaina.rb +9 -0
- data/lib/jaina/parser/expression/registry.rb +28 -2
- data/lib/jaina/parser/expression/registry/access_interface_mixin.rb +9 -0
- data/lib/jaina/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9a98b33875e25f9b5133548da379b6a4af1886c09cb1a942a4b600c7841014d
|
4
|
+
data.tar.gz: 8ca16e944faa24ef61e2467a63718a75fd9e7d87f176e320d63f2247b9814497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb36863a52b5dcae3af2852710d4208d40942305a8fa296b32b92615afa1b3fae94629aea2f28185dfa99c2c02e1dd836b7da6177549f04d3ad6e54b977e3f35
|
7
|
+
data.tar.gz: 8caac2e609dcbe5973dd0e61c031b21d0bed24ae43ae5f69ed8450f23ecdea9f7befd38eaabe9f9a9ff97ba1b34e25bced17dbcffac2dcfef1fb4f2ba59c8fa9
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [0.5.0] - 2019-06-27
|
5
|
+
### Added
|
6
|
+
- An ability to redefine existing expressions (`Jaina.redefine(expression_klass)`);
|
7
|
+
|
4
8
|
## [0.4.1] - 2019-06-24
|
5
9
|
### Fixed
|
6
10
|
- Fxied `NOT` operator (`#evaluate` fails on incorrect `context` varibale name);
|
data/README.md
CHANGED
data/jaina.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'coveralls', '~> 0.8'
|
29
29
|
spec.add_development_dependency 'simplecov', '~> 0.16'
|
30
30
|
spec.add_development_dependency 'rspec', '~> 3.8'
|
31
|
-
spec.add_development_dependency 'armitage-rubocop', '~> 0.
|
31
|
+
spec.add_development_dependency 'armitage-rubocop', '~> 0.71'
|
32
32
|
|
33
33
|
spec.add_development_dependency 'bundler'
|
34
34
|
spec.add_development_dependency 'rake'
|
data/lib/jaina.rb
CHANGED
@@ -42,6 +42,15 @@ module Jaina
|
|
42
42
|
Jaina::Parser::Expression.register(expression_klass)
|
43
43
|
end
|
44
44
|
|
45
|
+
# @param expression_klass [Class{Jaina::Parser::Expression::Operator::Abstract}]
|
46
|
+
# @return [void]
|
47
|
+
#
|
48
|
+
# @api public
|
49
|
+
# @since 0.5.0
|
50
|
+
def redefine_expression(expression_klass)
|
51
|
+
Jaina::Parser::Expression.redefine(expression_klass)
|
52
|
+
end
|
53
|
+
|
45
54
|
# @return [Array<String>]
|
46
55
|
#
|
47
56
|
# @api public
|
@@ -38,6 +38,15 @@ class Jaina::Parser::Expression::Registry
|
|
38
38
|
# @api private
|
39
39
|
# @since 0.1.0
|
40
40
|
def register(expression)
|
41
|
+
thread_safe { add(expression) }
|
42
|
+
end
|
43
|
+
|
44
|
+
# @param expression [Class{Jaina::Parser::Operator::Abstract}]
|
45
|
+
# @return [void]
|
46
|
+
#
|
47
|
+
# @api private
|
48
|
+
# @since 0.5.0
|
49
|
+
def redefine(expression)
|
41
50
|
thread_safe { apply(expression) }
|
42
51
|
end
|
43
52
|
|
@@ -92,15 +101,32 @@ class Jaina::Parser::Expression::Registry
|
|
92
101
|
# @return [void]
|
93
102
|
#
|
94
103
|
# @raise [Jaina::Parser::Expression::Registry::AlreadyRegisteredExpressionError]
|
104
|
+
# @raise [Jaina::Parser::Expression::Registry::IncorrectExpressionObjectError]
|
95
105
|
#
|
96
106
|
# @api private
|
97
|
-
# @since 0.
|
98
|
-
def
|
107
|
+
# @since 0.5.0
|
108
|
+
def add(expression)
|
109
|
+
raise(
|
110
|
+
IncorrectExpressionObjectError,
|
111
|
+
'Expression should be a subtype of Jaina::Parser::Expression::Operation::Abstract'
|
112
|
+
) unless expression.is_a?(Class) && expression < Jaina::Parser::Expression::Operator::Abstract
|
113
|
+
|
99
114
|
raise(
|
100
115
|
AlreadyRegisteredExpressionError,
|
101
116
|
"Expression with token `#{expression.token}` already exist"
|
102
117
|
) if registered?(expression.token)
|
103
118
|
|
119
|
+
expression_set[expression.token] = expression
|
120
|
+
end
|
121
|
+
|
122
|
+
# @param expression [Class{Jaina::Parser::Operator::Abstract}]
|
123
|
+
# @return [void]
|
124
|
+
#
|
125
|
+
# @raise [Jaina::Parser::Expression::Registry::IncorrectExpressionObjectError]
|
126
|
+
#
|
127
|
+
# @api private
|
128
|
+
# @since 0.5.0
|
129
|
+
def apply(expression)
|
104
130
|
raise(
|
105
131
|
IncorrectExpressionObjectError,
|
106
132
|
'Expression should be a subtype of Jaina::Parser::Expression::Operation::Abstract'
|
@@ -43,6 +43,15 @@ module Jaina::Parser::Expression
|
|
43
43
|
def register(expression)
|
44
44
|
@__expression_registry__.register(expression)
|
45
45
|
end
|
46
|
+
|
47
|
+
# @param expression [Class{Jaina::Parser::Expressions::Operator::Abstract}]
|
48
|
+
# @return [void]
|
49
|
+
#
|
50
|
+
# @api private
|
51
|
+
# @since 0.5.0
|
52
|
+
def redefine(expression)
|
53
|
+
@__expression_registry__.redefine(expression)
|
54
|
+
end
|
46
55
|
end
|
47
56
|
end
|
48
57
|
end
|
data/lib/jaina/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jaina
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rustam Ibragimov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: coveralls
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '0.
|
61
|
+
version: '0.71'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '0.
|
68
|
+
version: '0.71'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|