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.sub(/ name (.*)/, ' graphql_name \1') else # Otherwise, remove it altogether transformable = transformable.sub(/\s+name ('|").*('|")/, '') end end end transformable end