2013-07-18 46 views
-1

我遇到了特殊字符(或西班牙语中的重音)正常化问题。我创建了一个GEM作为学习练习(关于如何创建,安装和使用个人创业板),但不幸的是,当我在另一个ruby文件中加载gem时,我遇到了标题错误。下面的代码显示了我的创业板是由什么构成的(我知道代码非常糟糕,但这又是一次学习练习)。个人创建的GEM的语法错误(意外' n',期待tCOLON2或'['或'。'(SyntaxError))

#!/bin/env ruby 
# encoding: utf-8 

module SpanishStringNormalizer 

    class Normalizer 

     def self.spanishNormalize (aString) 

       while (aString.include? "á") ==true || 
         (aString.include? "é") ==true || 
         (aString.include? "í") ==true || 
         (aString.include? "ó") ==true || 
         (aString.include? "ú") ==true   do 

         aString ["á"]= "a" if aString.include? "á" 
         aString ["é"]= "e" if aString.include? "é" 
         aString ["í"]= "i" if aString.include? "í" 
         aString ["ó"]= "o" if aString.include? "ó" 
         aString ["ú"]= "u" if aString.include? "ú" 

       end #end of while 

       return aString 

     end #end of spanishNormalize 

    end #end of class 

end #end of module 

然而,当我打开另一ruby文件我得到以下错误

/Users/Andre/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/这种宝石site_ruby/1.9.1/ruby​​gems/custom_require.rb:60: `require':/Users/Andre/.rvm/gems/ruby-1.9.3-p429/gems/Spanish String Normalizer-0.0.0/lib /spanish_str_normalizer.rb:25:语法错误, 意外的'\ n',期待tCOLON2或'['或'。' (SyntaxError)

我一直尝试不同的东西,但我一直无法解决它。有人能帮助我确定我在做什么错误吗?

我的创业项目都可以在这里找到:https://github.com/betogess506/Spanish-String-Normalizer

+0

在我的环境中,它不返回错误。 – sawa

+4

看起来错误是由配置引起的,在测试之前缺少'gem build'或'gem install'步骤,或者某些代码在此处未显示? @sawa:虽然我确信你试图表现出一些“强硬的爱”,但我认为这个评论对OP来说过于消极。国际海事组织需要一段时间才能进行专业编码,然后才能获得有用的评论 –

+0

@NeilSlater好吧,我会重新说明它:除了错误(我无法复制),问题中的代码有很多问题。 – sawa

回答

4

我试过你的代码,但我无法重现我的系统(无论使用Ruby 2.0.0或1.9.3)上的错误。但是我认为这是不值得困扰自己troublshooting的问题,因为你的代码可以仅使用String#tr方法写成:

module SpanishStringNormalizer  
    def self.normalize(string) 
    string.tr('áéíóú', 'aeiou') 
    end 
end 

SpanishStringNormalizer.normalize('fóó') 
# => "foo" 
+0

你的解决方案更清洁:) +1 –

+1

这是更简洁的代码,与宝石一样,但不能解决OP问题。问题中可能没有显示代码是问题。 –

+1

@ toro2k我只是运行在终端检查你的方法,并得到如下输出。红宝石版本1.8.7 SpanishStringNormalizer.normalize('fóó') =>“fuuuu” – Inaccessible

0

由于@sawa建议,你的代码味道。闻到臭味。你可以这样写:

#!/bin/env ruby 
# encoding: utf-8 

module SpanishStringNormalizer 
    REPLACEMENTS = { 
    "á" => "a", 
    "é" => "e", 
    "í" => "i", 
    "ó" => "o", 
    "ú" => "u" 
    } 

    class Normalizer 
    def self.spanishNormalize (aString) 
     regex = Regexp.union(REPLACEMENTS.keys) 
     aString.gsub(regex, REPLACEMENTS) 
    end 
    end 
end 

至于你的原始问题,错误不在你的宝石。我下载并要求它,并要求工程就好了。

+2

另外,你的方法'spanishNomalize'实际上应该叫做'normalize',因为'SpanishStringNormalizer'已经暗示这是用于西班牙语的。另一件事是用这种简单程度,你实际上不需要嵌套的'Normalizer'类。 –

相关问题