Class: Ibex::Frontend::CST::Document

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ibex/frontend/source_document.rb

Overview

The immutable lexical root of a grammar source document.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(segments) ⇒ Document

Returns a new instance of Document.



60
61
62
63
64
# File 'lib/ibex/frontend/source_document.rb', line 60

def initialize(segments)
  validate_contiguous(segments)
  @segments = segments.dup.freeze
  freeze
end

Instance Attribute Details

#segmentsObject (readonly)

: Array



57
58
59
# File 'lib/ibex/frontend/source_document.rb', line 57

def segments
  @segments
end

Instance Method Details

#each(&block) ⇒ Object

@rbs! def each: () -> Enumerator[Segment, Document] | () { (Segment) -> void } -> Document



70
71
72
73
74
75
# File 'lib/ibex/frontend/source_document.rb', line 70

def each(&block)
  return enum_for(:each) unless block

  segments.each(&block)
  self
end

#renderObject



78
79
80
# File 'lib/ibex/frontend/source_document.rb', line 78

def render
  segments.map(&:render).join
end