Package: ruby-rchardet
Version: 1.3-1
Severity: important
Tags: patch

Hi there,

Trying to use ruby-rchardet using ruby1.9.1 gives syntax errors when
loading the module.  See the following output:

bram@debian:~$ irb1.9.1 -rrchardet
<internal:lib/rubygems/custom_require>:29:in `require':
/usr/lib/ruby/vendor_ruby/rchardet/chardistribution.rb:60: syntax error,
unexpected ':', expecting keyword_then or ';' or '\n' (SyntaxError)
/usr/lib/ruby/vendor_ruby/rchardet/chardistribution.rb:61: syntax error,
unexpected ':', expecting keyword_then or ';' or '\n'
/usr/lib/ruby/vendor_ruby/rchardet/chardistribution.rb:75: syntax error,
unexpected ':', expecting keyword_then or ';' or '\n'
/usr/lib/ruby/vendor_ruby/rchardet/chardistribution.rb:84: syntax error,
unexpected keyword_end, expecting $end
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /usr/lib/ruby/vendor_ruby/rchardet.rb:25:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /usr/lib/ruby/1.9.1/irb/init.rb:281:in `block in load_modules'
        from /usr/lib/ruby/1.9.1/irb/init.rb:279:in `each'
        from /usr/lib/ruby/1.9.1/irb/init.rb:279:in `load_modules'
        from /usr/lib/ruby/1.9.1/irb/init.rb:20:in `setup'
        from /usr/lib/ruby/1.9.1/irb.rb:53:in `start'
        from /usr/bin/irb1.9.1:12:in `<main>'

This is because a number of "if" and "for" statements end with a colon,
which was apparently valid in ruby1.8, but is not valid in ruby1.9.1.
Attached is a patch that removes these colons, so that ruby-rchardet
loads without syntax errors.

Cheers,

Bram Senders
b...@proggerij.nl

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 3.0.0-1-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages ruby-rchardet depends on:
ii  ruby                          4.8        ii  ruby1.8
[ruby-interpreter]    1.8.7.352-2
ii  ruby1.9.1 [ruby-interpreter]  1.9.2.290-2

ruby-rchardet recommends no packages.

ruby-rchardet suggests no packages.

-- no debconf information

--- rchardet/chardistribution.rb.orig	2011-09-29 14:49:18.504002350 +0200
+++ rchardet/chardistribution.rb	2011-09-29 14:49:40.715993001 +0200
@@ -57,8 +57,8 @@
       if order >= 0
 	@_mTotalChars += 1
 	# order is valid
-	if order < @_mTableSize:
-	  if 512 > @_mCharToFreqOrder[order]:
+	if order < @_mTableSize
+	  if 512 > @_mCharToFreqOrder[order]
 	    @_mFreqChars += 1
 	  end
 	end
@@ -72,7 +72,7 @@
 	return SURE_NO
       end
 
-      if @_mTotalChars != @_mFreqChars:
+      if @_mTotalChars != @_mFreqChars
 	r = @_mFreqChars / ((@_mTotalChars - @_mFreqChars) * @_mTypicalDistributionRatio)
 	if r < SURE_YES
 	  return r
@@ -227,7 +227,7 @@
       #   first  byte range: 0xa0 -- 0xfe
       #   second byte range: 0xa1 -- 0xfe
       # no validation needed here. State machine has done that
-      if aStr[0..0] >= "\xA0":
+      if aStr[0..0] >= "\xA0"
 	return 94 * (aStr[0] - 0xA1) + aStr[1] - 0xa1
       else
 	return -1
--- rchardet/charsetgroupprober.rb.orig	2011-09-29 14:50:19.704001646 +0200
+++ rchardet/charsetgroupprober.rb	2011-09-29 14:51:26.724007530 +0200
@@ -40,7 +40,7 @@
       super
       @_mActiveNum = 0
 
-      for prober in @_mProbers:
+      for prober in @_mProbers
 	if prober
 	  prober.reset()
 	  prober.active = true
--- rchardet/escprober.rb.orig	2011-09-29 14:51:47.431989041 +0200
+++ rchardet/escprober.rb	2011-09-29 14:52:01.616000777 +0200
@@ -41,7 +41,7 @@
 
     def reset
       super()
-      for codingSM in @_mCodingSM:
+      for codingSM in @_mCodingSM
 	next if not codingSM
 	codingSM.active = true
 	codingSM.reset()
--- rchardet/eucjpprober.rb.orig	2011-09-29 14:52:23.071997248 +0200
+++ rchardet/eucjpprober.rb	2011-09-29 14:52:35.936003051 +0200
@@ -56,7 +56,7 @@
 	elsif codingState == EItsMe
 	  @_mState = EFoundIt
 	  break
-	elsif codingState == EStart:
+	elsif codingState == EStart
 	  charLen = @_mCodingSM.get_current_charlen()
 	  if i == 0
 	    @_mLastChar[1] = aBuf[0..0]
--- rchardet/jpcntx.rb.orig	2011-09-29 14:53:02.935989236 +0200
+++ rchardet/jpcntx.rb	2011-09-29 14:53:26.824001825 +0200
@@ -150,9 +150,9 @@
 	  @_mNeedToSkipCharNum = i - aLen
 	  @_mLastCharOrder = -1
 	else
-	  if (order != -1) and (@_mLastCharOrder != -1):
+	  if (order != -1) and (@_mLastCharOrder != -1)
 	    @_mTotalRel += 1
-	    if @_mTotalRel > MAX_REL_THRESHOLD:
+	    if @_mTotalRel > MAX_REL_THRESHOLD
 	      @_mDone = true
 	      break
 	    end
@@ -169,7 +169,7 @@
 
     def get_confidence
       # This is just one way to calculate confidence. It works well for me.
-      if @_mTotalRel > MINIMUM_DATA_THRESHOLD:
+      if @_mTotalRel > MINIMUM_DATA_THRESHOLD
 	return (@_mTotalRel - @_mRelSample[0]) / @_mTotalRel
       else
 	return DONT_KNOW
@@ -208,7 +208,7 @@
       return -1, 1 unless aStr
       # find out current char's byte length
       aStr = aStr[0..1].join if aStr.class == Array
-      if (aStr[0..0] == "\x8E") or ((aStr[0..0] >= "\xA1") and (aStr[0..0] <= "\xFE")):
+      if (aStr[0..0] == "\x8E") or ((aStr[0..0] >= "\xA1") and (aStr[0..0] <= "\xFE"))
 	charLen = 2
       elsif aStr[0..0] == "\x8F"
 	charLen = 3
--- rchardet/sjisprober.rb.orig	2011-09-29 14:53:36.076010091 +0200
+++ rchardet/sjisprober.rb	2011-09-29 14:53:46.235996348 +0200
@@ -71,7 +71,7 @@
 
       @_mLastChar[0] = aBuf[aLen - 1.. aLen-1]
 
-      if get_state() == EDetecting:
+      if get_state() == EDetecting
 	if @_mContextAnalyzer.got_enough_data() and (get_confidence() > SHORTCUT_THRESHOLD)
 	  @_mState = EFoundIt
 	end
--- rchardet/universaldetector.rb.orig	2011-09-29 14:54:15.824011206 +0200
+++ rchardet/universaldetector.rb	2011-09-29 14:54:28.324002819 +0200
@@ -91,11 +91,11 @@
       end
 
       @_mGotData = true
-      if @result['encoding'] and (@result['confidence'] > 0.0):
+      if @result['encoding'] and (@result['confidence'] > 0.0)
 	@done = true
 	return
       end
-      if @_mInputState == EPureAscii:
+      if @_mInputState == EPureAscii
 	if @_highBitDetector =~ (aBuf)
 	  @_mInputState = EHighbyte
 	elsif (@_mInputState == EPureAscii) and @_escDetector =~ (@_mLastChar + aBuf)
@@ -138,12 +138,12 @@
       end
       @done = true
 
-      if @_mInputState == EPureAscii:
+      if @_mInputState == EPureAscii
 	@result = {'encoding' => 'ascii', 'confidence' => 1.0}
 	return @result
       end
 
-      if @_mInputState == EHighbyte:
+      if @_mInputState == EHighbyte
 	confidences = {}
         @_mCharSetProbers.each{ |prober| confidences[prober] = prober.get_confidence }
 	maxProber = @_mCharSetProbers.max{ |a,b| confidences[a] <=> confidences[b] }
--- rchardet/utf8prober.rb.orig	2011-09-29 14:54:50.203995741 +0200
+++ rchardet/utf8prober.rb	2011-09-29 14:54:58.976001367 +0200
@@ -63,7 +63,7 @@
 	end
       end
 
-      if get_state() == EDetecting:
+      if get_state() == EDetecting
 	if get_confidence() > SHORTCUT_THRESHOLD
 	  @_mState = EFoundIt
 	end

Reply via email to