module TSparser::Parsing
Public Class Methods
included(klass)
click to toggle source
# File lib/parsing.rb, line 46 def self.included(klass) klass.extend ClassExtension end
new(binary, parsing_proc=nil, delay=true)
click to toggle source
# File lib/parsing.rb, line 4 def initialize(binary, parsing_proc=nil, delay=true) @binary = binary @parsed_variable = Hash.new if delay @parsing_proc = parsing_proc else self.instance_eval(&parsing_proc) if parsing_proc end end
Public Instance Methods
method_missing(name, *args)
click to toggle source
Calls superclass method
# File lib/parsing.rb, line 31 def method_missing(name, *args) if @parsing_proc parsing_proc = @parsing_proc @parsing_proc = nil self.instance_eval(&parsing_proc) end if @parsed_variable[name] if @parsed_variable[name].instance_of?(Proc) @parsed_variable[name] = @parsed_variable[name].call end return @parsed_variable[name] end super end
read(name, type, bit)
click to toggle source
# File lib/parsing.rb, line 14 def read(name, type, bit) if type == Integer val = @binary.read_bit_as_integer(bit) @parsed_variable[name] = val else val = @binary.read_bit_as_binary(bit) @parsed_variable[name] = Proc.new{ type.new(val) } end rescue => error STDERR.puts "Parsing error occurred at class: #{self.class}, attr: #{name}(type:#{type}, bitlen:#{bit})" raise error end
rest_all()
click to toggle source
# File lib/parsing.rb, line 27 def rest_all return @binary.rest_readable_bit_length end