class GraphQL::InterfacesToImplementsTransform

Transform `interfaces [A, B, C]` to `implements Animplements Bnimplements Cn`

Constants

PATTERN

Public Instance Methods

apply(input_text) click to toggle source
# File lib/graphql/upgrader/member.rb, line 600
def apply(input_text)
  input_text.gsub(PATTERN) do
    indent = $~[:indent]
    interfaces = $~[:interfaces].split(',').map(&:strip).reject(&:empty?)
    # Preserve leading newlines before the `interfaces ...`
    # call, but don't re-insert them between `implements` calls.
    extra_leading_newlines = "\n" * (indent[/^\n*/].length - 1)
    indent = indent.sub(/^\n*/m, "")
    interfaces_calls = interfaces
      .map { |interface| "\n#{indent}implements #{interface}" }
      .join
    extra_leading_newlines + interfaces_calls
  end
end