Class: Dimensions::Scanner
- Inherits:
-
Object
- Object
- Dimensions::Scanner
show all
- Defined in:
- lib/dimensions/scanner.rb
Defined Under Namespace
Classes: ScanError
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(data) ⇒ Scanner
Returns a new instance of Scanner.
7
8
9
10
11
12
13
|
# File 'lib/dimensions/scanner.rb', line 7
def initialize(data)
@data = data.dup
@data.force_encoding("BINARY") if @data.respond_to?(:force_encoding)
@size = @data.length
@pos = 0
big! end
|
Instance Attribute Details
#pos ⇒ Object
Returns the value of attribute pos.
5
6
7
|
# File 'lib/dimensions/scanner.rb', line 5
def pos
@pos
end
|
Instance Method Details
#advance(length) ⇒ Object
38
39
40
41
|
# File 'lib/dimensions/scanner.rb', line 38
def advance(length)
@pos += length
raise_scan_error if @pos > @size
end
|
#big! ⇒ Object
48
49
50
|
# File 'lib/dimensions/scanner.rb', line 48
def big!
@big = true
end
|
#little! ⇒ Object
52
53
54
|
# File 'lib/dimensions/scanner.rb', line 52
def little!
@big = false
end
|
#raise_scan_error ⇒ Object
56
57
58
|
# File 'lib/dimensions/scanner.rb', line 56
def raise_scan_error
raise ScanError
end
|
#read(size, format) ⇒ Object
27
28
29
30
|
# File 'lib/dimensions/scanner.rb', line 27
def read(size, format)
data = read_data(size)
data.unpack(format)[0]
end
|
#read_char ⇒ Object
15
16
17
|
# File 'lib/dimensions/scanner.rb', line 15
def read_char
read(1, "C")
end
|
#read_data(size) ⇒ Object
32
33
34
35
36
|
# File 'lib/dimensions/scanner.rb', line 32
def read_data(size)
data = @data[@pos, size]
advance(size)
data
end
|
#read_long ⇒ Object
23
24
25
|
# File 'lib/dimensions/scanner.rb', line 23
def read_long
read(4, @big ? "N" : "V")
end
|
#read_short ⇒ Object
19
20
21
|
# File 'lib/dimensions/scanner.rb', line 19
def read_short
read(2, @big ? "n" : "v")
end
|
#skip_to(pos) ⇒ Object
43
44
45
46
|
# File 'lib/dimensions/scanner.rb', line 43
def skip_to(pos)
@pos = pos
raise_scan_error if @pos > @size
end
|