Class: C0::Document

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/c0.rb

Overview

A full document: navigate its top-level groups.

Instance Method Summary collapse

Constructor Details

#initialize(buf) ⇒ Document

Returns a new instance of Document.



186
187
188
189
190
# File 'lib/c0.rb', line 186

def initialize(buf)
  @buf = C0.to_bin(buf)
  ns, ne, @groups = Ext.document(@buf)
  @name = [ns, ne]
end

Instance Method Details

#each ⇒ Object



209
210
211
212
213
# File 'lib/c0.rb', line 209

def each
  return enum_for(:each) unless block_given?

  @groups.each { |s, e| yield Group.new(@buf, s, e) }
end

#group(index) ⇒ Object



196
197
198
199
# File 'lib/c0.rb', line 196

def group(index)
  s, e = @groups[index]
  Group.new(@buf, s, e)
end

#group_by_name(name) ⇒ Object



201
202
203
204
205
# File 'lib/c0.rb', line 201

def group_by_name(name)
  needle = C0.to_bin(name)
  each { |g| return g if g.name == needle }
  nil
end

#group_count ⇒ Object



194
# File 'lib/c0.rb', line 194

def group_count = @groups.size

#name ⇒ Object



192
# File 'lib/c0.rb', line 192

def name = @buf.byteslice(@name[0], @name[1] - @name[0])

#size ⇒ Object



207
# File 'lib/c0.rb', line 207

def size = @groups.size