Class: GraphQL::Upgrader::Member::FieldFinder
- Inherits:
-
Parser::AST::Processor
- Object
- Parser::AST::Processor
- GraphQL::Upgrader::Member::FieldFinder
- Defined in:
- lib/graphql/upgrader/member.rb
Constant Summary collapse
- DEFINITION_METHODS =
These methods are definition DSLs which may accept a block, each of these definitions is passed for transformation in its own right.
field
andconnection
take priority. In fact, they upgrade their own arguments, so those upgrades turn out to be no-ops. [:field, :connection, :input_field, :return_field, :argument]
Instance Attribute Summary collapse
-
#locations ⇒ Object
readonly
Returns the value of attribute locations.
Instance Method Summary collapse
-
#add_location(send_node:, source_node:) ⇒ Object
-
#initialize ⇒ FieldFinder
constructor
A new instance of FieldFinder.
-
#on_block(node) ⇒ Object
-
#on_send(node) ⇒ Object
Constructor Details
#initialize ⇒ FieldFinder
Returns a new instance of FieldFinder
900 901 902 903 904 |
# File 'lib/graphql/upgrader/member.rb', line 900 def initialize # Pairs of `{ { method_name => { name => [start, end] } }`, # since fields/arguments are unique by name, within their category @locations = Hash.new { |h,k| h[k] = {} } end |
Instance Attribute Details
#locations ⇒ Object (readonly)
Returns the value of attribute locations
898 899 900 |
# File 'lib/graphql/upgrader/member.rb', line 898 def locations @locations end |
Instance Method Details
#add_location(send_node:, source_node:) ⇒ Object
908 909 910 911 912 913 914 915 916 917 918 919 920 921 |
# File 'lib/graphql/upgrader/member.rb', line 908 def add_location(send_node:,source_node:) receiver_node, method_name, *arg_nodes = *send_node # Implicit self and one of the recognized methods if receiver_node.nil? && DEFINITION_METHODS.include?(method_name) name = arg_nodes[0] # This field may have already been added because # we find `(block ...)` nodes _before_ we find `(send ...)` nodes. if @locations[method_name][name].nil? starting_idx = source_node.loc.expression.begin.begin_pos ending_idx = source_node.loc.expression.end.end_pos @locations[method_name][name] = [starting_idx, ending_idx] end end end |
#on_block(node) ⇒ Object
923 924 925 926 927 |
# File 'lib/graphql/upgrader/member.rb', line 923 def on_block(node) send_node, _args_node, _body_node = *node add_location(send_node: send_node, source_node: node) super(node) end |
#on_send(node) ⇒ Object
929 930 931 932 |
# File 'lib/graphql/upgrader/member.rb', line 929 def on_send(node) add_location(send_node: node, source_node: node) super(node) end |