class GraphQL::Upgrader::NameTransform

Or, if it is not redundant, move it to ‘graphql_name “Something”`.
Remove `name “Something”` if it is redundant with the class name.

def apply(transformable)

def apply(transformable)
  last_type_defn = transformable
    .split("\n")
    .select { |line| line.include?("class ") || line.include?("module ")}
    .last
  if last_type_defn && (matches = last_type_defn.match(/(class|module) (?<type_name>[a-zA-Z_0-9:]*)( <|$)/))
    type_name = matches[:type_name]
    # Get the name without any prefixes or suffixes
    type_name_without_the_type_part = type_name.split('::').last.gsub(/Type$/, '')
    # Find an overridden name value
    if matches = transformable.match(/ name ('|")(?<overridden_name>.*)('|")/)
      name = matches[:overridden_name]
      if type_name_without_the_type_part != name
        # If the overridden name is still required, use `graphql_name` for it
        transformable = transformable.gsub(/ name (.*)/, ' graphql_name \1')
      else
        # Otherwise, remove it altogether
        transformable = transformable.gsub(/\s+name ('|").*('|")/, '')
      end
    end
  end
  transformable
end