Class: Ibex::Runtime::CST::SyntaxToken

Inherits:
Object
  • Object
show all
Defined in:
lib/json5/generated_parser.rb

Overview

Lightweight Red facade for one Green token occurrence.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(green:, parent:, index:, offset:) ⇒ SyntaxToken

Returns a new instance of SyntaxToken.

RBS:

  • (green: GreenToken, parent: SyntaxNode, index: Integer, offset: Integer) -> void



970
971
972
973
974
975
976
# File 'lib/json5/generated_parser.rb', line 970

def initialize(green:, parent:, index:, offset:)
  @green = green
  @parent = parent
  @index = index
  @offset = offset
  freeze
end

Instance Attribute Details

#greenObject (readonly)

Signature:

  • GreenToken



964
965
966
# File 'lib/json5/generated_parser.rb', line 964

def green
  @green
end

#indexObject (readonly)

Signature:

  • Integer



966
967
968
# File 'lib/json5/generated_parser.rb', line 966

def index
  @index
end

#offsetObject (readonly)

Signature:

  • Integer



967
968
969
# File 'lib/json5/generated_parser.rb', line 967

def offset
  @offset
end

#parentObject (readonly)

Signature:

  • SyntaxNode



965
966
967
# File 'lib/json5/generated_parser.rb', line 965

def parent
  @parent
end

Instance Method Details

#==(other) ⇒ Object

RBS:

  • (Object? other) -> bool



1081
1082
1083
# File 'lib/json5/generated_parser.rb', line 1081

def ==(other)
  other.is_a?(SyntaxToken) && @green == other.green
end

#childrenObject

RBS:

  • () -> Array[Object?]



999
# File 'lib/json5/generated_parser.rb', line 999

def children = []

#contains_error?Boolean

RBS:

  • () -> bool

Returns:

  • (Boolean)


1027
# File 'lib/json5/generated_parser.rb', line 1027

def contains_error? = @green.flags.anybits?(Flags::CONTAINS_ERROR)

#deconstructObject

RBS:

  • () -> Array[Object?]



1086
# File 'lib/json5/generated_parser.rb', line 1086

def deconstruct = []

#deconstruct_keys(_keys) ⇒ Object

RBS:

  • (Array[Symbol]?) -> Hash[Symbol, Object?]



1089
1090
1091
1092
1093
1094
# File 'lib/json5/generated_parser.rb', line 1089

def deconstruct_keys(_keys)
  {
    kind: :token, symbol: symbol, value: value, location: location,
    leading_trivia: leading_trivia
  }.freeze
end

#error?Boolean

RBS:

  • () -> bool

Returns:

  • (Boolean)


1021
# File 'lib/json5/generated_parser.rb', line 1021

def error? = @parent.kinds.error?(kind)

#full_spanObject

RBS:

  • () -> Range[Integer]



1006
1007
1008
1009
# File 'lib/json5/generated_parser.rb', line 1006

def full_span
  ensure_coordinates!
  @offset...(@offset + @green.full_width)
end

#full_textObject Also known as: to_source

RBS:

  • () -> String



1002
# File 'lib/json5/generated_parser.rb', line 1002

def full_text = @green.to_source

#kindObject

RBS:

  • () -> Integer



979
# File 'lib/json5/generated_parser.rb', line 979

def kind = @green.kind

#kind_nameObject

RBS:

  • () -> String



982
# File 'lib/json5/generated_parser.rb', line 982

def kind_name = @parent.kinds.name(kind)

#leading_triviaObject

RBS:

  • () -> Array[GreenTrivia]



996
# File 'lib/json5/generated_parser.rb', line 996

def leading_trivia = @green.leading

#locationObject

RBS:

  • () -> Ibex::Location



1018
# File 'lib/json5/generated_parser.rb', line 1018

def location = @parent.source_text.location(span)

#missing?Boolean

RBS:

  • () -> bool

Returns:

  • (Boolean)


1024
# File 'lib/json5/generated_parser.rb', line 1024

def missing? = @green.flags.anybits?(Flags::CONTAINS_MISSING)

#next_siblingObject

RBS:

  • () -> (SyntaxNode | SyntaxToken)?



1063
# File 'lib/json5/generated_parser.rb', line 1063

def next_sibling = @parent.children[@index + 1]

#prev_siblingObject

RBS:

  • () -> (SyntaxNode | SyntaxToken)?



1066
1067
1068
1069
1070
# File 'lib/json5/generated_parser.rb', line 1066

def prev_sibling
  return if @index.zero?

  @parent.children[@index - 1]
end

#replace_with(replacement) ⇒ Object

RBS:

  • (GreenNode | GreenToken | SyntaxNode | SyntaxToken replacement) -> SyntaxNode



1030
# File 'lib/json5/generated_parser.rb', line 1030

def replace_with(replacement) = Editing.replace(self, replacement)

#rootObject

RBS:

  • () -> SyntaxNode



1073
# File 'lib/json5/generated_parser.rb', line 1073

def root = @parent.root

#same_node?(other) ⇒ Boolean

RBS:

  • (SyntaxToken other) -> bool

Returns:

  • (Boolean)


1076
1077
1078
# File 'lib/json5/generated_parser.rb', line 1076

def same_node?(other)
  root.equal?(other.root) && @green.equal?(other.green) && @offset == other.offset
end

#spanObject

RBS:

  • () -> Range[Integer]



1012
1013
1014
1015
# File 'lib/json5/generated_parser.rb', line 1012

def span
  ensure_coordinates!
  (@offset + @green.leading_width)...(@offset + @green.full_width - @green.trailing_width)
end

#symbolObject

RBS:

  • () -> String



985
# File 'lib/json5/generated_parser.rb', line 985

def symbol = kind_name

#textObject

RBS:

  • () -> String



988
# File 'lib/json5/generated_parser.rb', line 988

def text = @green.text

#to_hObject

RBS:

  • () -> Hash[Symbol, Object?]



1097
# File 'lib/json5/generated_parser.rb', line 1097

def to_h = deconstruct_keys(nil)

#valueObject

Compatibility projection for the legacy token API. Semantic lexer values remain on the parser value path; syntax exposes source bytes.

RBS:

  • () -> String



993
# File 'lib/json5/generated_parser.rb', line 993

def value = text

#with_leading(trivia) ⇒ Object

RBS:

  • (Array[GreenTrivia] trivia) -> SyntaxNode



1043
1044
1045
1046
1047
1048
1049
1050
# File 'lib/json5/generated_parser.rb', line 1043

def with_leading(trivia)
  replace_with(
    GreenToken.new(
      kind: @green.kind, text: @green.text, leading: trivia, trailing: @green.trailing,
      flags: @green.flags, expected_kind: @green.expected_kind
    )
  )
end

#with_text(value) ⇒ Object

RBS:

  • (String value) -> SyntaxNode



1033
1034
1035
1036
1037
1038
1039
1040
# File 'lib/json5/generated_parser.rb', line 1033

def with_text(value)
  replace_with(
    GreenToken.new(
      kind: @green.kind, text: value, leading: @green.leading, trailing: @green.trailing,
      flags: @green.flags, expected_kind: @green.expected_kind
    )
  )
end

#with_trailing(trivia) ⇒ Object

RBS:

  • (Array[GreenTrivia] trivia) -> SyntaxNode



1053
1054
1055
1056
1057
1058
1059
1060
# File 'lib/json5/generated_parser.rb', line 1053

def with_trailing(trivia)
  replace_with(
    GreenToken.new(
      kind: @green.kind, text: @green.text, leading: @green.leading, trailing: trivia,
      flags: @green.flags, expected_kind: @green.expected_kind
    )
  )
end