Class: CharDet::SJISDistributionAnalysis

Inherits:
CharDistributionAnalysis show all
Defined in:
lib/rchardet/chardistribution.rb

Instance Method Summary collapse

Methods inherited from CharDistributionAnalysis

#feed, #get_confidence, #got_enough_data, #reset

Constructor Details

#initializeSJISDistributionAnalysis

Returns a new instance of SJISDistributionAnalysis.



201
202
203
204
205
206
# File 'lib/rchardet/chardistribution.rb', line 201

def initialize
  super()
  @charToFreqOrder = JISCharToFreqOrder
  @tableSize = JIS_TABLE_SIZE
  @typicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
end

Instance Method Details

#get_order(aStr) ⇒ Object



208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/rchardet/chardistribution.rb', line 208

def get_order(aStr)
  # for sjis encoding, we are interested 
  #   first  byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
  #   second byte range: 0x40 -- 0x7e,  0x81 -- oxfe
  # no validation needed here. State machine has done that
  bytes = aStr.bytes.to_a
  if (aStr[0, 1] >= "\x81") and (aStr[0, 1] <= "\x9F")
    order = 188 * (bytes[0] - 0x81)
  elsif (aStr[0, 1] >= "\xE0") and (aStr[0, 1] <= "\xEF")
    order = 188 * (bytes[0] - 0xE0 + 31)
  else
    return -1
  end
  order = order + bytes[1] - 0x40
  if aStr[1, 1] > "\x7F"
    order =- 1
  end
  return order
end