Class: EPUB::CFI::Path
- Inherits:
-
Object
- Object
- EPUB::CFI::Path
- Defined in:
- lib/epub/cfi.rb
Instance Attribute Summary collapse
-
#offset ⇒ Object
readonly
Returns the value of attribute offset.
-
#steps ⇒ Object
readonly
Returns the value of attribute steps.
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #each_step_with_instruction {|[step, nil]| ... } ⇒ Object
-
#initialize(steps = [], offset = nil) ⇒ Path
constructor
A new instance of Path.
- #initialize_copy(original) ⇒ Object
- #to_fragment ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(steps = [], offset = nil) ⇒ Path
Returns a new instance of Path.
78 79 80 |
# File 'lib/epub/cfi.rb', line 78 def initialize(steps=[], offset=nil) @steps, @offset = steps, offset end |
Instance Attribute Details
#offset ⇒ Object (readonly)
Returns the value of attribute offset.
76 77 78 |
# File 'lib/epub/cfi.rb', line 76 def offset @offset end |
#steps ⇒ Object (readonly)
Returns the value of attribute steps.
76 77 78 |
# File 'lib/epub/cfi.rb', line 76 def steps @steps end |
Instance Method Details
#<=>(other) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/epub/cfi.rb', line 95 def <=>(other) other_steps = other.steps index = 0 steps.each do |step| other_step = other_steps[index] return 1 unless other_step cmp = step <=> other_step return cmp unless cmp == 0 index += 1 end return -1 if other_steps[index] other_offset = other.offset if offset if other_offset offset <=> other_offset else 1 end else if other_offset -1 else 0 end end end |
#each_step_with_instruction {|[step, nil]| ... } ⇒ Object
124 125 126 127 128 129 130 |
# File 'lib/epub/cfi.rb', line 124 def each_step_with_instruction yield [step, nil] local_path.each_step_with_instruction do |s, instruction| yield [s, instruction] end self end |
#initialize_copy(original) ⇒ Object
82 83 84 85 |
# File 'lib/epub/cfi.rb', line 82 def initialize_copy(original) @steps = original.steps.collect(&:dup) @offset = original.offset.dup if original.offset end |
#to_fragment ⇒ Object
91 92 93 |
# File 'lib/epub/cfi.rb', line 91 def to_fragment @fragment_cache ||= "epubcfi(#{self})".freeze end |
#to_s ⇒ Object
87 88 89 |
# File 'lib/epub/cfi.rb', line 87 def to_s @string_cache ||= (steps.join + offset.to_s).freeze end |