synvert-core 1.3.0 → 1.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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -4
  3. data/CHANGELOG.md +16 -0
  4. data/Gemfile +0 -3
  5. data/Guardfile +0 -9
  6. data/README.md +30 -12
  7. data/Rakefile +1 -15
  8. data/lib/synvert/core/engine/erb.rb +1 -1
  9. data/lib/synvert/core/engine.rb +1 -1
  10. data/lib/synvert/core/node_ext.rb +0 -466
  11. data/lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb +20 -17
  12. data/lib/synvert/core/rewriter/condition/if_exist_condition.rb +1 -1
  13. data/lib/synvert/core/rewriter/condition/unless_exist_condition.rb +1 -1
  14. data/lib/synvert/core/rewriter/instance.rb +89 -135
  15. data/lib/synvert/core/rewriter/scope/query_scope.rb +2 -2
  16. data/lib/synvert/core/rewriter/scope/within_scope.rb +4 -4
  17. data/lib/synvert/core/rewriter.rb +0 -10
  18. data/lib/synvert/core/version.rb +1 -1
  19. data/lib/synvert/core.rb +4 -6
  20. data/spec/synvert/core/engine/erb_spec.rb +3 -3
  21. data/spec/synvert/core/node_ext_spec.rb +0 -795
  22. data/spec/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action_spec.rb +21 -1
  23. data/spec/synvert/core/rewriter/instance_spec.rb +49 -112
  24. data/spec/synvert/core/rewriter/scope/goto_scope_spec.rb +1 -4
  25. data/spec/synvert/core/rewriter/scope/query_scope_spec.rb +8 -4
  26. data/spec/synvert/core/rewriter/scope/within_scope_spec.rb +1 -4
  27. data/synvert-core-ruby.gemspec +4 -2
  28. metadata +44 -61
  29. data/lib/synvert/core/array_ext.rb +0 -48
  30. data/lib/synvert/core/node_query/compiler/array.rb +0 -34
  31. data/lib/synvert/core/node_query/compiler/attribute.rb +0 -39
  32. data/lib/synvert/core/node_query/compiler/attribute_list.rb +0 -24
  33. data/lib/synvert/core/node_query/compiler/boolean.rb +0 -23
  34. data/lib/synvert/core/node_query/compiler/comparable.rb +0 -86
  35. data/lib/synvert/core/node_query/compiler/dynamic_attribute.rb +0 -51
  36. data/lib/synvert/core/node_query/compiler/expression.rb +0 -58
  37. data/lib/synvert/core/node_query/compiler/float.rb +0 -23
  38. data/lib/synvert/core/node_query/compiler/identifier.rb +0 -41
  39. data/lib/synvert/core/node_query/compiler/integer.rb +0 -23
  40. data/lib/synvert/core/node_query/compiler/invalid_operator_error.rb +0 -7
  41. data/lib/synvert/core/node_query/compiler/nil.rb +0 -23
  42. data/lib/synvert/core/node_query/compiler/parse_error.rb +0 -7
  43. data/lib/synvert/core/node_query/compiler/regexp.rb +0 -37
  44. data/lib/synvert/core/node_query/compiler/selector.rb +0 -138
  45. data/lib/synvert/core/node_query/compiler/simple_selector.rb +0 -29
  46. data/lib/synvert/core/node_query/compiler/string.rb +0 -23
  47. data/lib/synvert/core/node_query/compiler/symbol.rb +0 -23
  48. data/lib/synvert/core/node_query/compiler.rb +0 -25
  49. data/lib/synvert/core/node_query/lexer.rex +0 -108
  50. data/lib/synvert/core/node_query/lexer.rex.rb +0 -321
  51. data/lib/synvert/core/node_query/parser.racc.rb +0 -322
  52. data/lib/synvert/core/node_query/parser.y +0 -62
  53. data/lib/synvert/core/node_query.rb +0 -37
  54. data/lib/synvert/core/rewriter/action/append_action.rb +0 -28
  55. data/lib/synvert/core/rewriter/action/delete_action.rb +0 -32
  56. data/lib/synvert/core/rewriter/action/insert_action.rb +0 -34
  57. data/lib/synvert/core/rewriter/action/insert_after_action.rb +0 -22
  58. data/lib/synvert/core/rewriter/action/prepend_action.rb +0 -44
  59. data/lib/synvert/core/rewriter/action/remove_action.rb +0 -53
  60. data/lib/synvert/core/rewriter/action/replace_action.rb +0 -33
  61. data/lib/synvert/core/rewriter/action/replace_with_action.rb +0 -36
  62. data/lib/synvert/core/rewriter/action/wrap_action.rb +0 -37
  63. data/lib/synvert/core/rewriter/action.rb +0 -102
  64. data/spec/synvert/core/node_query/lexer_spec.rb +0 -640
  65. data/spec/synvert/core/node_query/parser_spec.rb +0 -382
  66. data/spec/synvert/core/rewriter/action/append_action_spec.rb +0 -70
  67. data/spec/synvert/core/rewriter/action/delete_action_spec.rb +0 -26
  68. data/spec/synvert/core/rewriter/action/insert_action_spec.rb +0 -70
  69. data/spec/synvert/core/rewriter/action/insert_after_action_spec.rb +0 -26
  70. data/spec/synvert/core/rewriter/action/prepend_action_spec.rb +0 -175
  71. data/spec/synvert/core/rewriter/action/remove_action_spec.rb +0 -26
  72. data/spec/synvert/core/rewriter/action/replace_action_spec.rb +0 -28
  73. data/spec/synvert/core/rewriter/action/replace_with_action_spec.rb +0 -59
  74. data/spec/synvert/core/rewriter/action/wrap_action_spec.rb +0 -31
  75. data/spec/synvert/core/rewriter/action_spec.rb +0 -14
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Compare acutal value with expected value.
5
- module Comparable
6
- SIMPLE_VALID_OPERATORS = ['==', '!=', 'includes']
7
- STRING_VALID_OPERATORS = ['==', '!=', '^=', '$=', '*=', 'includes']
8
- NUMBER_VALID_OPERATORS = ['==', '!=', '>', '>=', '<', '<=', 'includes']
9
- ARRAY_VALID_OPERATORS = ['==', '!=', 'in', 'not_in']
10
- REGEXP_VALID_OPERATORS = ['=~', '!~']
11
-
12
- # Check if the actual value matches the expected value.
13
- #
14
- # @param node [Parser::AST::Node] node to calculate actual value
15
- # @param operator [Symbol] operator to compare with expected value, operator can be <code>'=='</code>, <code>'!='</code>, <code>'>'</code>, <code>'>='</code>, <code>'<'</code>, <code>'<='</code>, <code>'includes'</code>, <code>'in'</code>, <code>'not_in'</code>, <code>'=~'</code>, <code>'!~'</code>
16
- # @return [Boolean] true if actual value matches the expected value
17
- # @raise [Synvert::Core::NodeQuery::Compiler::InvalidOperatorError] if operator is invalid
18
- def match?(node, operator)
19
- raise InvalidOperatorError, "invalid operator #{operator}" unless valid_operator?(operator)
20
-
21
- case operator
22
- when '!='
23
- if expected_value.is_a?(::Array)
24
- actual = actual_value(node)
25
- !actual.is_a?(::Array) || actual.size != expected_value.size ||
26
- actual.zip(expected_value).any? { |actual_node, expected_node| expected_node.match?(actual_node, '!=') }
27
- else
28
- actual_value(node) != expected_value
29
- end
30
- when '=~'
31
- actual_value(node) =~ expected_value
32
- when '!~'
33
- actual_value(node) !~ expected_value
34
- when '^='
35
- actual_value(node).start_with?(expected_value)
36
- when '$='
37
- actual_value(node).end_with?(expected_value)
38
- when '*='
39
- actual_value(node).include?(expected_value)
40
- when '>'
41
- actual_value(node) > expected_value
42
- when '>='
43
- actual_value(node) >= expected_value
44
- when '<'
45
- actual_value(node) < expected_value
46
- when '<='
47
- actual_value(node) <= expected_value
48
- when 'in'
49
- expected_value.any? { |expected| expected.match?(node, '==') }
50
- when 'not_in'
51
- expected_value.all? { |expected| expected.match?(node, '!=') }
52
- when 'includes'
53
- actual_value(node).any? { |actual| actual == expected_value }
54
- else
55
- if expected_value.is_a?(::Array)
56
- actual = actual_value(node)
57
- actual.is_a?(::Array) && actual.size == expected_value.size &&
58
- actual.zip(expected_value).all? { |actual_node, expected_node| expected_node.match?(actual_node, '==') }
59
- else
60
- actual_value(node) == expected_value
61
- end
62
- end
63
- end
64
-
65
- # Get the actual value from ast node.
66
- # @return if node is a {Parser::AST::Node}, return the node value, otherwise, return the node itself.
67
- def actual_value(node)
68
- if node.is_a?(::Parser::AST::Node)
69
- node.to_value
70
- else
71
- node
72
- end
73
- end
74
-
75
- # Get the expected value
76
- def expected_value
77
- @value
78
- end
79
-
80
- # Check if the operator is valid.
81
- # @return [Boolean] true if the operator is valid
82
- def valid_operator?(operator)
83
- valid_operators.include?(operator)
84
- end
85
- end
86
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # DynamicAttribute represents a ruby dynamic attribute.
5
- # e.g. code is <code>{ a: a }</code>, query is <code>'.hash > .pair[key={{value}}]'</code>,
6
- # <code>{{value}}</code> is the dynamic attribute.
7
- class DynamicAttribute
8
- include Comparable
9
-
10
- attr_accessor :base_node
11
-
12
- # Initialize a DynamicAttribute.
13
- # @param value [String] the dynamic attribute value
14
- def initialize(value:)
15
- @value = value
16
- end
17
-
18
- # Get the actual value of a node.
19
- #
20
- # @param node the node
21
- # @return [String] if node is a {Parser::AST::Node}, return the node source code, otherwise return the node itself.
22
- def actual_value(node)
23
- if node.is_a?(::Parser::AST::Node)
24
- node.to_source
25
- else
26
- node
27
- end
28
- end
29
-
30
- # Get the expected value.
31
- #
32
- # @return [String] Query the node by @valud from base_node, if the node is a {Parser::AST::Node}, return the node source code, otherwise return the node itself.
33
- def expected_value
34
- node = base_node.child_node_by_name(@value)
35
- if node.is_a?(::Parser::AST::Node)
36
- node.to_source
37
- else
38
- node
39
- end
40
- end
41
-
42
- # Get valid operators.
43
- def valid_operators
44
- SIMPLE_VALID_OPERATORS
45
- end
46
-
47
- def to_s
48
- "{{#{@value}}}"
49
- end
50
- end
51
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Expression represents a node query expression.
5
- class Expression
6
- # Initialize a Expression.
7
- # @param selector [Synvert::Core::NodeQuery::Compiler::Selector] the selector
8
- # @param rest [Synvert::Core::NodeQuery::Compiler::Expression] the rest expression
9
- def initialize(selector: nil, rest: nil)
10
- @selector = selector
11
- @rest = rest
12
- end
13
-
14
- # Check if the node matches the expression.
15
- # @param node [Parser::AST::Node] the node
16
- # @return [Boolean]
17
- def match?(node)
18
- !query_nodes(node).empty?
19
- end
20
-
21
- # Query nodes by the selector and the rest expression.
22
- #
23
- # @param node [Parser::AST::Node] node to match
24
- # @param descendant_match [Boolean] whether to match in descendant node
25
- # @return [Array<Parser::AST::Node>] matching nodes.
26
- def query_nodes(node, descendant_match = true)
27
- matching_nodes = find_nodes_by_selector(node, descendant_match)
28
- return matching_nodes if @rest.nil?
29
-
30
- matching_nodes.flat_map { |matching_node| find_nodes_by_rest(matching_node, descendant_match) }
31
- end
32
-
33
- def to_s
34
- result = []
35
- result << @selector.to_s if @selector
36
- result << @rest.to_s if @rest
37
- result.join(' ')
38
- end
39
-
40
- private
41
-
42
- # Find nodes by @rest
43
- # @param node [Parser::AST::Node] node to match
44
- # @param descendant_match [Boolean] whether to match in descendant node
45
- def find_nodes_by_rest(node, descendant_match = false)
46
- @rest.query_nodes(node, descendant_match)
47
- end
48
-
49
- # Find nodes with nil relationship.
50
- # @param node [Parser::AST::Node] node to match
51
- # @param descendant_match [Boolean] whether to match in descendant node
52
- def find_nodes_by_selector(node, descendant_match = true)
53
- return Array(node) if !@selector
54
-
55
- @selector.query_nodes(node, descendant_match)
56
- end
57
- end
58
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Float represents a ruby float value.
5
- class Float
6
- include Comparable
7
-
8
- # Initialize a Float.
9
- # @param value [Float] the float value
10
- def initialize(value:)
11
- @value = value
12
- end
13
-
14
- # Get valid operators.
15
- def valid_operators
16
- NUMBER_VALID_OPERATORS
17
- end
18
-
19
- def to_s
20
- @value.to_s
21
- end
22
- end
23
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Identifier represents a ruby identifier value.
5
- # e.g. code is `class Synvert; end`, `Synvert` is an identifier.
6
- class Identifier
7
- include Comparable
8
-
9
- # Initialize an Identifier.
10
- # @param value [String] the identifier value
11
- def initialize(value:)
12
- @value = value
13
- end
14
-
15
- # Get the actual value.
16
- #
17
- # @param node the node
18
- # @return [String|Array]
19
- # If the node is a {Parser::AST::Node}, return the node source code,
20
- # if the node is an Array, return the array of each element's actual value,
21
- # otherwise, return the String value.
22
- def actual_value(node)
23
- if node.is_a?(::Parser::AST::Node)
24
- node.to_source
25
- elsif node.is_a?(::Array)
26
- node.map { |n| actual_value(n) }
27
- else
28
- node.to_s
29
- end
30
- end
31
-
32
- # Get valid operators.
33
- def valid_operators
34
- STRING_VALID_OPERATORS
35
- end
36
-
37
- def to_s
38
- @value
39
- end
40
- end
41
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Integer represents a ruby integer value.
5
- class Integer
6
- include Comparable
7
-
8
- # Initialize a Integer.
9
- # @param value [Integer] the integer value
10
- def initialize(value:)
11
- @value = value
12
- end
13
-
14
- # Get valid operators.
15
- def valid_operators
16
- NUMBER_VALID_OPERATORS
17
- end
18
-
19
- def to_s
20
- @value.to_s
21
- end
22
- end
23
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Operator is invalid error.
5
- class InvalidOperatorError < StandardError
6
- end
7
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Nil represents a ruby nil value.
5
- class Nil
6
- include Comparable
7
-
8
- # Initialize a Nil.
9
- # @param value [nil] the nil value
10
- def initialize(value:)
11
- @value = value
12
- end
13
-
14
- # Get valid operators.
15
- def valid_operators
16
- SIMPLE_VALID_OPERATORS
17
- end
18
-
19
- def to_s
20
- 'nil'
21
- end
22
- end
23
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # The parser error.
5
- class ParseError < StandardError
6
- end
7
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Regexp represents a ruby regexp value.
5
- class Regexp
6
- include Comparable
7
-
8
- # Initialize a Regexp.
9
- # @param value [Regexp] the regexp value
10
- def initialize(value:)
11
- @value = value
12
- end
13
-
14
- # Check if the regexp value matches the node value.
15
- # @param node [Parser::AST::Node] the node
16
- # @param operator [Symbol] the operator
17
- # @return [Boolean] true if the regexp value matches the node value, otherwise, false.
18
- def match?(node, operator = '=~')
19
- match =
20
- if node.is_a?(::Parser::AST::Node)
21
- @value.match(node.to_source)
22
- else
23
- @value.match(node.to_s)
24
- end
25
- operator == '=~' ? match : !match
26
- end
27
-
28
- # Get valid operators.
29
- def valid_operators
30
- REGEXP_VALID_OPERATORS
31
- end
32
-
33
- def to_s
34
- @value.to_s
35
- end
36
- end
37
- end
@@ -1,138 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Selector used to match nodes, it combines by node type and/or attribute list, plus index or has expression.
5
- class Selector
6
- # Initialize a Selector.
7
- # @param goto_scope [String] goto scope
8
- # @param relationship [Symbol] the relationship between the selectors, it can be descendant <code>nil</code>, child <code>></code>, next sibling <code>+</code> or subsequent sibing <code>~</code>.
9
- # @param rest [Synvert::Core::NodeQuery::Compiler::Selector] the rest selector
10
- # @param simple_selector [Synvert::Core::NodeQuery::Compiler::SimpleSelector] the simple selector
11
- # @param attribute_list [Synvert::Core::NodeQuery::Compiler::AttributeList] the attribute list
12
- # @param index [Integer] the index
13
- # @param pseudo_class [String] the pseudo class, can be <code>has</code> or <code>not_has</code>
14
- # @param pseudo_selector [Synvert::Core::NodeQuery::Compiler::Expression] the pseudo selector
15
- def initialize(goto_scope: nil, relationship: nil, rest: nil, simple_selector: nil, index: nil, pseudo_class: nil, pseudo_selector: nil)
16
- @goto_scope = goto_scope
17
- @relationship = relationship
18
- @rest = rest
19
- @simple_selector = simple_selector
20
- @index = index
21
- @pseudo_class = pseudo_class
22
- @pseudo_selector = pseudo_selector
23
- end
24
-
25
- # Check if node matches the selector.
26
- # @param node [Parser::AST::Node] the node
27
- def match?(node)
28
- node.is_a?(::Parser::AST::Node) &&
29
- (!@simple_selector || @simple_selector.match?(node)) &&
30
- match_pseudo_class?(node)
31
- end
32
-
33
- # Query nodes by the selector.
34
- #
35
- # * If relationship is nil, it will match in all recursive child nodes and return matching nodes.
36
- # * If relationship is decendant, it will match in all recursive child nodes.
37
- # * If relationship is child, it will match in direct child nodes.
38
- # * If relationship is next sibling, it try to match next sibling node.
39
- # * If relationship is subsequent sibling, it will match in all sibling nodes.
40
- # @param node [Parser::AST::Node] node to match
41
- # @param descendant_match [Boolean] whether to match in descendant node
42
- # @return [Array<Parser::AST::Node>] matching nodes.
43
- def query_nodes(node, descendant_match = true)
44
- return find_nodes_by_relationship(node) if @relationship
45
-
46
- if node.is_a?(::Array)
47
- return node.flat_map { |child_node| query_nodes(child_node, descendant_match) }
48
- end
49
-
50
- return find_nodes_by_goto_scope(node) if @goto_scope
51
-
52
- nodes = []
53
- nodes << node if match?(node)
54
- if descendant_match && @simple_selector
55
- node.recursive_children do |child_node|
56
- nodes << child_node if match?(child_node)
57
- end
58
- end
59
- filter(nodes)
60
- end
61
-
62
- def to_s
63
- result = []
64
- result << "<#{@goto_scope}> " if @goto_scope
65
- result << "#{@relationship} " if @relationship
66
- result << @rest.to_s if @rest
67
- result << @simple_selector.to_s if @simple_selector
68
- result << ":#{@pseudo_class}(#{@pseudo_selector})" if @pseudo_class
69
- if @index
70
- result <<
71
- case @index
72
- when 0
73
- ':first-child'
74
- when -1
75
- ':last-child'
76
- when (1..)
77
- ":nth-child(#{@index + 1})"
78
- else # ...-1
79
- ":nth-last-child(#{-@index})"
80
- end
81
- end
82
- result.join('')
83
- end
84
-
85
- private
86
-
87
- # Find nodes by @goto_scope
88
- # @param node [Parser::AST::Node] node to match
89
- def find_nodes_by_goto_scope(node)
90
- @goto_scope.split('.').each { |scope| node = node.send(scope) }
91
- @rest.query_nodes(node, false)
92
- end
93
-
94
- # Find ndoes by @relationship
95
- # @param node [Parser::AST::Node] node to match
96
- def find_nodes_by_relationship(node)
97
- nodes = []
98
- case @relationship
99
- when '>'
100
- if node.is_a?(::Array)
101
- node.each do |child_node|
102
- nodes << child_node if @rest.match?(child_node)
103
- end
104
- else
105
- node.children.each do |child_node|
106
- nodes << child_node if @rest.match?(child_node)
107
- end
108
- end
109
- when '+'
110
- next_sibling = node.siblings.first
111
- nodes << next_sibling if @rest.match?(next_sibling)
112
- when '~'
113
- node.siblings.each do |sibling_node|
114
- nodes << sibling_node if @rest.match?(sibling_node)
115
- end
116
- end
117
- return filter(nodes)
118
- end
119
-
120
- def match_pseudo_class?(node)
121
- case @pseudo_class
122
- when 'has'
123
- !@pseudo_selector.query_nodes(node).empty?
124
- when 'not_has'
125
- @pseudo_selector.query_nodes(node).empty?
126
- else
127
- true
128
- end
129
- end
130
-
131
- # Filter nodes by index.
132
- def filter(nodes)
133
- return nodes if @index.nil?
134
-
135
- nodes[@index] ? [nodes[@index]] : []
136
- end
137
- end
138
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # SimpleSelector used to match nodes, it combines by node type and/or attribute list.
5
- class SimpleSelector
6
- # Initialize a SimpleSelector.
7
- # @param node_type [String] the node type
8
- # @param attribute_list [Synvert::Core::NodeQuery::Compiler::AttributeList] the attribute list
9
- def initialize(node_type:, attribute_list: nil)
10
- @node_type = node_type
11
- @attribute_list = attribute_list
12
- end
13
-
14
- # Check if node matches the selector.
15
- # @param node [Parser::AST::Node] the node
16
- def match?(node, _operator = '==')
17
- return false unless node
18
-
19
- @node_type.to_sym == node.type && (!@attribute_list || @attribute_list.match?(node))
20
- end
21
-
22
- def to_s
23
- result = []
24
- result << ".#{@node_type}" if @node_type
25
- result << @attribute_list.to_s if @attribute_list
26
- result.join('')
27
- end
28
- end
29
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # String represents a ruby string value.
5
- class String
6
- include Comparable
7
-
8
- # Initialize a String.
9
- # @param value [String] the string value
10
- def initialize(value:)
11
- @value = value
12
- end
13
-
14
- # Get valid operators.
15
- def valid_operators
16
- STRING_VALID_OPERATORS
17
- end
18
-
19
- def to_s
20
- "\"#{@value}\""
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- # Symbol represents a ruby symbol value.
5
- class Symbol
6
- include Comparable
7
-
8
- # Initliaze a Symobol.
9
- # @param value [Symbol] the symbol value
10
- def initialize(value:)
11
- @value = value
12
- end
13
-
14
- # Get valid operators.
15
- def valid_operators
16
- SIMPLE_VALID_OPERATORS
17
- end
18
-
19
- def to_s
20
- ":#{@value}"
21
- end
22
- end
23
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Synvert::Core::NodeQuery::Compiler
4
- autoload :InvalidOperatorError, 'synvert/core/node_query/compiler/invalid_operator_error'
5
- autoload :ParseError, 'synvert/core/node_query/compiler/parse_error'
6
-
7
- autoload :Comparable, 'synvert/core/node_query/compiler/comparable'
8
-
9
- autoload :Expression, 'synvert/core/node_query/compiler/expression'
10
- autoload :Selector, 'synvert/core/node_query/compiler/selector'
11
- autoload :SimpleSelector, 'synvert/core/node_query/compiler/simple_selector'
12
- autoload :AttributeList, 'synvert/core/node_query/compiler/attribute_list'
13
- autoload :Attribute, 'synvert/core/node_query/compiler/attribute'
14
-
15
- autoload :Array, 'synvert/core/node_query/compiler/array'
16
- autoload :Boolean, 'synvert/core/node_query/compiler/boolean'
17
- autoload :DynamicAttribute, 'synvert/core/node_query/compiler/dynamic_attribute'
18
- autoload :Float, 'synvert/core/node_query/compiler/float'
19
- autoload :Identifier, 'synvert/core/node_query/compiler/identifier'
20
- autoload :Integer, 'synvert/core/node_query/compiler/integer'
21
- autoload :Nil, 'synvert/core/node_query/compiler/nil'
22
- autoload :Regexp, 'synvert/core/node_query/compiler/regexp'
23
- autoload :String, 'synvert/core/node_query/compiler/string'
24
- autoload :Symbol, 'synvert/core/node_query/compiler/symbol'
25
- end