2017-01-15 6 views
0

現在、私はJekyllとブログを作っています。 JekyllカスタムプラグインはRubyを使用し、JekyllはLiquidを使用しています。私は現在、カスタム液体タグを介して入力を取得し、そこで処理しています。文字列に整数が含まれているかどうかを確認したいと思います。だから私は次のコードを持っています。私は入力がString型ではなくJekyll :: Token型であることに気付きました。だから私は文字列に入力を変更しましたが、文字列に整数が含まれているかどうかを検出することはできません。私のコードは次のとおりです:RubyとLiquidでタイプチェックが機能しない

module Jekyll 
    class TypecheckTag < Liquid::Tag 

     def is_int(word) 
      return word.count("0-3000") > 0 
     end 

     def initialize(tag_name, word, tokens) 
      super 
      @word = word.to_s 

     end 

     def render(context) 
      if /\A\d+\z/.match(@word) 
       @result = 'int' 
      else 
       @result = 'string' 
      end 
     end 


    end 
end 

Liquid::Template.register_tag('typecheck', Jekyll::TypecheckTag) 

残念ながら、残念ながら、私たちが文字列 "16"を持っていても、残念ながら、常に "string"を返します。

答えて

0

次のコードの作業罰金

def render(input_str) if /\A[-+]?\d+\z/.match(input_str.strip) @result = 'int' else @result = 'string' end end

出力

p render('16') # "int" 
p render('16a') # "string" 
p render('16 ') # "int" 
p render('asd') #"string" 
p render('') #"string" 

とサンプル入力あなたはそれを無視したくない場合は、私は理由render('16 ') # "int"stripを使用していました。それがあなたを助けることを願っています。

+0

これは正確には私が望むものではありませんが、私はコンテキストを介して値を取得することで解決しました。 –

関連する問題