Author: mosu
Date: 2004-09-08 22:03:42 +0400 (Wed, 08 Sep 2004)
New Revision: 764
Modified:
trunk/RbMatroska/ebml.rb
Log:
Renamed all occurences of "position" to "pos" to match Ruby's usual style. Added some more convenience functions.
Modified: trunk/RbMatroska/ebml.rb
===================================================================
--- trunk/RbMatroska/ebml.rb 2004-09-08 17:08:03 UTC (rev 763)
+++ trunk/RbMatroska/ebml.rb 2004-09-08 18:03:42 UTC (rev 764)
@@ -54,7 +54,7 @@
end
def ==(id)
- return false if (id == nil)
+ return false if ((id == nil) or (id.class != Id))
return ((value == id.value) and (size == id.size))
end
@@ -71,14 +71,14 @@
class Element
attr_reader :id
- attr_reader :position
+ attr_reader :pos
attr_reader :data_size
attr_reader :element_size
attr_reader :size_length
- def initialize(id, position, data_size, size_length)
+ def initialize(id, pos, data_size, size_length)
@id = id
- @position = position
+ @pos = pos
@data_size = data_size
@size_length = size_length
@element_size = @id.size + @size_length + @data_size
@@ -88,16 +88,22 @@
return Id.none
end
+ def head_size
+ return @id.size + @size_length
+ end
+
def skip(ef)
- ef.io.seek(@position + @element_size, IO::SEEK_SET)
+ ef.io.seek(@pos + @element_size, IO::SEEK_SET)
end
def read(ef)
skip(ef)
+
+ return self
end
def to_s
- return sprintf("[%s @ 0x%08x size 0x%08x]", id.to_s, @position,
+ return sprintf("[%s @ 0x%08x size 0x%08x]", id.to_s, @pos,
@element_size)
end
end
@@ -115,6 +121,8 @@
byte = ef.io.readchar
@value = (@value << 8) | byte
end
+
+ return self
end
def to_i
@@ -134,6 +142,8 @@
byte = ef.io.readchar
@value = (@value << 8) | byte
end
+
+ return self
end
def to_i
@@ -150,6 +160,8 @@
def read(ef)
@value = ef.io.read(@data_size)
raise DataError if (@value.size < @data_size)
+
+ return self
end
def to_s
@@ -162,6 +174,8 @@
def read(ef)
@value = ef.io.read(@data_size)
raise DataError if (@value.size < @data_size)
+
+ return self
end
def to_s
@@ -174,6 +188,8 @@
def read(ef)
@value = ef.io.read(@data_size)
raise EOFError if (@value.size < @data_size)
+
+ return self
end
def to_s
@@ -187,6 +203,8 @@
ins = ef.io.read(@data_size)
raise EOFError if (ins.size < @data_size)
@value = ins.unpack(@data_size == 4 ? "g" : "G")[0]
+
+ return self
end
def to_f
@@ -209,8 +227,8 @@
class Master < Element
attr_reader :children
- def initialize(id, position, data_size, size_length)
- super(id, position, data_size, size_length)
+ def initialize(id, pos, data_size, size_length)
+ super(id, pos, data_size, size_length)
@children = Array.new
end
@@ -229,8 +247,27 @@
break
end
end
+
+ return self
end
+ def each(filter = Id.none)
+ @children.each do |c|
+ yield(c) if ((filter == Id.none) or (filter == c.id))
+ end
+ end
+
+ def find(filter)
+ id = nil
+ if (filter.class == Class)
+ id = filter.global_id
+ else
+ id = filter
+ end
+ @children.each { |c| return c if (c.id == id) }
+ return nil
+ end
+
def to_s
s = "{" + self.class.name + " " + super + " "
@children.each { |c| s += c.to_s + " " }
@@ -311,12 +348,12 @@
end
def read_element_head
- position = @io.pos
+ pos = @io.pos
id = read_id
return nil if (id.class == NilClass)
size = read_size
return nil if (size.class == NilClass)
- return find_class_for_id(id).new(id, position, size[0], size[1])
+ return find_class_for_id(id).new(id, pos, size[0], size[1])
end
def map_ids(namespace = nil)
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.