类型检查不适用于Ruby和Liquid

时间:2017-01-15 02:21:52

标签: ruby jekyll liquid

我目前正在与Jekyll一起制作我的博客。 Jekyll自定义插件使用Ruby和Jekyll使用Liquid。我目前正在通过自定义液体标签获取输入并在那里进行处理。我想检查字符串是否包含整数。所以我有以下代码。我意识到输入不是String类型,而是Jekyll :: Token类型。所以我将输入更改为字符串,但我无法检测字符串是否包含整数。这是我的代码:

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)

不幸的是,它总是返回&#39; string&#39;说即使我们有一个字符串&#34; 16&#34;例如。

1 个答案:

答案 0 :(得分: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"

我使用strip因为render('16 ') # "int"如果您不想忽略它。希望它会对你有所帮助。