Class: CharDet::CodingStateMachine

Inherits:
Object
  • Object
show all
Defined in:
lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb

Instance Method Summary collapse

Constructor Details

#initialize(sm) ⇒ CodingStateMachine

Returns a new instance of CodingStateMachine.


31
32
33
34
35
36
# File 'lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb', line 31

def initialize(sm)
  @_mModel = sm
  @_mCurrentBytePos = 0
  @_mCurrentCharLen = 0
  reset()
end

Instance Method Details

#get_coding_state_machineObject


60
61
62
# File 'lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb', line 60

def get_coding_state_machine
  return @_mModel['name']
end

#get_current_charlenObject


56
57
58
# File 'lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb', line 56

def get_current_charlen
  return @_mCurrentCharLen
end

#next_state(c) ⇒ Object


42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb', line 42

def next_state(c)
  # for each byte we get its class
  # if it is first byte, we also get byte length
  byteCls = @_mModel['classTable'][c[0]]
  if @_mCurrentState == EStart
    @_mCurrentBytePos = 0
    @_mCurrentCharLen = @_mModel['charLenTable'][byteCls]
  end
  # from byte's class and stateTable, we get its next state
  @_mCurrentState = @_mModel['stateTable'][@_mCurrentState * @_mModel['classFactor'] + byteCls]
  @_mCurrentBytePos += 1
  return @_mCurrentState
end

#resetObject


38
39
40
# File 'lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb', line 38

def reset
  @_mCurrentState = EStart
end