class

Detector::Specification::GraphqlSdl

Inherits Detector < Reference < Object

Constants

SDL_DECLARATION = /^(?:(?:extend\s+)?(?:type|input|interface|enum|scalar)\s+[A-Za-z_][A-Za-z0-9_]*\b|(?:extend\s+)?union\s+[A-Za-z_][A-Za-z0-9_]*\s*=|directive\s+@[A-Za-z_][A-Za-z0-9_]*\b|(?:extend\s+)?schema\b)/

SDL declaration signals — distinguished at top-level only by sdl_document?. A broad keyword-only check is too loose: generated operation documents often select fields named type, schema, or enum, and those field names can appear at the start of an indented line.

sdl_document? walks the document with a small state machine:

  • tracks brace depth (only outside strings) so keywords inside selections, fragments, or default values are ignored
  • skips block strings (""") and regular strings ("...") so that string literals containing SDL-like keywords, #, or {}/ do not affect detection or depth (e.g. default values or descriptions with example SDL)
  • strips # comments only when not inside a string

Instance methods

applicable?(filename : String) : Bool

Registers every SDL path in CodeLocator for the analyzer pass. Must keep running after the first match so all schema files get picked up.

Source
detect(filename : String, file_contents : String) : Bool
Source
idempotent?

Registers every SDL path in CodeLocator for the analyzer pass. Must keep running after the first match so all schema files get picked up.

Source
name

Registers every SDL path in CodeLocator for the analyzer pass. Must keep running after the first match so all schema files get picked up.

Source