Class: GraphQL::Modernize::Rules::Base
- Inherits:
-
Object
- Object
- GraphQL::Modernize::Rules::Base
- Defined in:
- lib/graphql/modernize/rules/base.rb
Direct Known Subclasses
AnalysisAstPlugin, BidirectionalPagination, ComplexityCostMode, ConnectionsPlugin, DefaultMaxPageSize, DefaultNodesField, DefineDsl, DeprecatedDefinitionCall, DirectBaseConnection, EmptyUnionSelections, ErrorBubbling, FunctionSuperclass, InterpreterPlugin, LoadApplicationObjectFailedError, PropertyOption, QueryArgumentsConstant, RedundantNullTrue, RedundantRequiredTrue, RelayConnectionType, RelayMutationSuperclass, RelayNodeField, RemovedFieldOptions, RescueFrom, ResolveFieldOption, TypeIndexKeys, TypesShortcut, VisibilityPlugin
Class Attribute Summary collapse
-
.metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
.patterns ⇒ Object
readonly
Returns the value of attribute patterns.
Instance Attribute Summary collapse
-
#offenses ⇒ Object
readonly
Returns the value of attribute offenses.
Class Method Summary collapse
- .node_pattern(node_type, pattern_source, handler: :on_match) ⇒ Object
- .node_types ⇒ Object
- .rule(id:, safety:, summary:, since: nil, removed_in: nil, docs: nil, default_enabled: true) ⇒ Object
Instance Method Summary collapse
-
#initialize(context:, rewriter:, config:, suppression: nil, hierarchy: nil, edit_rules: {}) ⇒ Base
constructor
A new instance of Base.
- #visit(node) ⇒ Object
Constructor Details
#initialize(context:, rewriter:, config:, suppression: nil, hierarchy: nil, edit_rules: {}) ⇒ Base
Returns a new instance of Base.
35 36 37 38 39 40 41 42 43 |
# File 'lib/graphql/modernize/rules/base.rb', line 35 def initialize(context:, rewriter:, config:, suppression: nil, hierarchy: nil, edit_rules: {}) @context = context @rewriter = rewriter @config = config @suppression = suppression @hierarchy = hierarchy @edit_rules = edit_rules @offenses = [] end |
Class Attribute Details
.metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
11 12 13 |
# File 'lib/graphql/modernize/rules/base.rb', line 11 def @metadata end |
.patterns ⇒ Object (readonly)
Returns the value of attribute patterns.
11 12 13 |
# File 'lib/graphql/modernize/rules/base.rb', line 11 def patterns @patterns end |
Instance Attribute Details
#offenses ⇒ Object (readonly)
Returns the value of attribute offenses.
33 34 35 |
# File 'lib/graphql/modernize/rules/base.rb', line 33 def offenses @offenses end |
Class Method Details
.node_pattern(node_type, pattern_source, handler: :on_match) ⇒ Object
22 23 24 25 26 |
# File 'lib/graphql/modernize/rules/base.rb', line 22 def node_pattern(node_type, pattern_source, handler: :on_match) @patterns ||= [] @patterns << Pattern.new(node_type: node_type.to_sym, compiled: Astel::NodePattern.compile(pattern_source), handler: handler) end |
.node_types ⇒ Object
28 29 30 |
# File 'lib/graphql/modernize/rules/base.rb', line 28 def node_types (@patterns || []).map(&:node_type).uniq end |
.rule(id:, safety:, summary:, since: nil, removed_in: nil, docs: nil, default_enabled: true) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/graphql/modernize/rules/base.rb', line 13 def rule(id:, safety:, summary:, since: nil, removed_in: nil, docs: nil, default_enabled: true) raise ArgumentError, "invalid rule id: #{id}" unless id.match?(/\AGQLM\d{3}\z/) raise ArgumentError, "invalid safety: #{safety}" unless %i[safe unsafe manual].include?(safety) @metadata = Metadata.new(id: id, safety: safety, summary: summary, since: since, removed_in: removed_in, docs: docs, default_enabled: default_enabled) RuleRegistry.register(self) end |
Instance Method Details
#visit(node) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/graphql/modernize/rules/base.rb', line 45 def visit(node) self.class.patterns.each do |pattern| next unless pattern.node_type == Astel::NodeType.from_class_name(node.class.name.split("::").last) captures = pattern.compiled.match(node) send(pattern.handler, node, captures) if captures end end |