Class: TreeHaver::Backends::Psych::Language

Inherits:
TreeHaver::Base::Language show all
Defined in:
lib/tree_haver/backends/psych.rb

Overview

Psych language wrapper

Unlike tree-sitter which supports many languages via grammar files, Psych only parses YAML. This class exists for API compatibility with other tree_haver backends.

Examples:

language = TreeHaver::Backends::Psych::Language.yaml
parser.language = language

Instance Attribute Summary

Attributes inherited from TreeHaver::Base::Language

#backend, #name, #options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from TreeHaver::Base::Language

#<=>, #eql?, #hash, #inspect

Constructor Details

#initialize(name = :yaml) ⇒ Language

Create a new Psych language instance

Parameters:

  • name (Symbol) (defaults to: :yaml)

    Language name (should be :yaml)



88
89
90
# File 'lib/tree_haver/backends/psych.rb', line 88

def initialize(name = :yaml)
  super(name, backend: :psych, options: {})
end

Class Method Details

.from_library(_path = nil, symbol: nil, name: nil) ⇒ Language

Load language from library path (API compatibility)

Psych only supports YAML, so path and symbol parameters are ignored.

Parameters:

  • _path (String) (defaults to: nil)

    Ignored - Psych doesn't load external grammars

  • symbol (String, nil) (defaults to: nil)

    Ignored - Psych only supports YAML

  • name (String, nil) (defaults to: nil)

    Language name hint (defaults to :yaml)

Returns:

Raises:



109
110
111
112
113
114
115
116
117
118
119
# File 'lib/tree_haver/backends/psych.rb', line 109

def from_library(_path = nil, symbol: nil, name: nil) # rubocop:disable Lint/UnusedMethodArgument
  lang_name = name || :yaml

  unless lang_name == :yaml
    raise TreeHaver::NotAvailable,
          "Psych backend only supports YAML, not #{lang_name}. " \
            "Use a tree-sitter backend for #{lang_name} support."
  end

  yaml
end

.yamlLanguage

Create a YAML language instance

Returns:



96
97
98
# File 'lib/tree_haver/backends/psych.rb', line 96

def yaml
  new(:yaml)
end