Class: Origami::XRef::Subsection
- Inherits:
-
Object
- Object
- Origami::XRef::Subsection
- Includes:
- Enumerable
- Defined in:
- lib/origami/xreftable.rb
Overview
Class representing a cross-reference subsection. A subsection contains a continute set of XRef.
Constant Summary collapse
- @@regexp =
Regexp.new("(?<start>\\d+) (?<size>\\d+)" + WHITESPACES + "(\\r?\\n|\\r\\n?)")
Instance Attribute Summary collapse
-
#range ⇒ Object
readonly
Returns the value of attribute range.
Class Method Summary collapse
-
.parse(stream) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#[](no) ⇒ Object
Returns XRef associated with a given object.
-
#each(&b) ⇒ Object
Processes each XRef in the subsection.
-
#each_with_number ⇒ Object
Processes each XRef in the subsection, passing the XRef and the object number to the block.
-
#has_object?(no) ⇒ Boolean
Returns whether this subsection contains information about a particular object.
-
#initialize(start, entries = []) ⇒ Subsection
constructor
Creates a new XRef subsection.
-
#size ⇒ Object
The number of entries in the subsection.
-
#to_s ⇒ Object
Outputs self into PDF code.
Constructor Details
#initialize(start, entries = []) ⇒ Subsection
Creates a new XRef subsection.
- start
-
The number of the first object referenced in the subsection.
- entries
-
An array of XRef.
138 139 140 141 |
# File 'lib/origami/xreftable.rb', line 138 def initialize(start, entries = []) @entries = entries.dup @range = Range.new(start, start + entries.size - 1) end |
Instance Attribute Details
#range ⇒ Object (readonly)
Returns the value of attribute range.
131 132 133 |
# File 'lib/origami/xreftable.rb', line 131 def range @range end |
Class Method Details
.parse(stream) ⇒ Object
:nodoc:
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/origami/xreftable.rb', line 143 def self.parse(stream) #:nodoc: if stream.scan(@@regexp).nil? raise InvalidXRefSubsectionError, "Bad subsection format" end start = stream['start'].to_i size = stream['size'].to_i xrefs = [] size.times do xrefs << XRef.parse(stream) end XRef::Subsection.new(start, xrefs) end |
Instance Method Details
#[](no) ⇒ Object
Returns XRef associated with a given object.
- no
-
The Object number.
171 172 173 |
# File 'lib/origami/xreftable.rb', line 171 def [](no) @entries[no - @range.begin] end |
#each(&b) ⇒ Object
Processes each XRef in the subsection.
178 179 180 |
# File 'lib/origami/xreftable.rb', line 178 def each(&b) @entries.each(&b) end |
#each_with_number ⇒ Object
Processes each XRef in the subsection, passing the XRef and the object number to the block.
185 186 187 188 189 190 191 192 |
# File 'lib/origami/xreftable.rb', line 185 def each_with_number return enum_for(__method__) { self.size } unless block_given? counter = @range.to_enum @entries.each do |entry| yield(entry, counter.next) end end |
#has_object?(no) ⇒ Boolean
Returns whether this subsection contains information about a particular object.
- no
-
The Object number.
163 164 165 |
# File 'lib/origami/xreftable.rb', line 163 def has_object?(no) @range.include?(no) end |
#size ⇒ Object
The number of entries in the subsection.
197 198 199 |
# File 'lib/origami/xreftable.rb', line 197 def size @entries.size end |