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

Inherits:
Object
  • Object
show all
Includes:
Comparable
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 collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name = :yaml) ⇒ Language

Create a new Psych language instance

Parameters:

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

    Language name (should be :yaml)



91
92
93
94
# File 'lib/tree_haver/backends/psych.rb', line 91

def initialize(name = :yaml)
  @name = name.to_sym
  @backend = :psych
end

Instance Attribute Details

#backendSymbol (readonly)

The backend this language is for

Returns:

  • (Symbol)


86
87
88
# File 'lib/tree_haver/backends/psych.rb', line 86

def backend
  @backend
end

#nameSymbol (readonly)

The language name (always :yaml for Psych)

Returns:

  • (Symbol)


82
83
84
# File 'lib/tree_haver/backends/psych.rb', line 82

def name
  @name
end

Class Method Details

.yamlLanguage

Create a YAML language instance

Returns:



100
101
102
# File 'lib/tree_haver/backends/psych.rb', line 100

def yaml
  new(:yaml)
end

Instance Method Details

#<=>(other) ⇒ Integer?

Comparison for sorting/equality

Parameters:

Returns:

  • (Integer, nil)

    comparison result



109
110
111
112
# File 'lib/tree_haver/backends/psych.rb', line 109

def <=>(other)
  return unless other.is_a?(Language)
  name <=> other.name
end

#inspectString

Returns human-readable representation.

Returns:

  • (String)

    human-readable representation



115
116
117
# File 'lib/tree_haver/backends/psych.rb', line 115

def inspect
  "#<TreeHaver::Backends::Psych::Language name=#{name}>"
end