String替换正则表达式,如Ruby的胡子js

时间:2014-09-04 10:57:06

标签: html ruby regex webrick

我是ruby的新手,并且正在尝试创建一个简单的函数来获取文件并用数组替换所有的胡子。例如:

simple.tpl

<p>Hello {{person_name}}</p>
<p>{{welcome_msg}}</p>

我想用一组键和值来改变它。

class Template

    attr_accessor :file_name

    def parse_template (array_to_replace)
        str = File.read(file_name)

        array_to_replace.each do |item|
        # required code here ...
        end

        return str
    end

end

任何人都可以输入所需的代码???

预期产出

我不知道多维数组如何在ruby中工作,但我想要的是:

the_arr = Array(
   :person_name => "John Doe",
   :welcome_msg => "Hello friend"
)
object = Template.new
object.file_name = "simple.tpl"
output = object.parse_template(the_arr);

puts output

我应该

<p>Hello John Doe</p>
<p>Hello friend</p>

2 个答案:

答案 0 :(得分:2)

您可以使用the mustache gem

require 'mustache'

attributes = {
  :person_name => "John Doe",
  :welcome_msg => "Hello friend"
}

template = File.read('simple.tpl')

output = Mustache.render(template, attributes)

puts output
# <p>Hello John Doe</p>
# <p>Hello friend</p>

答案 1 :(得分:2)

您可能对Ruby内置的内容感兴趣。

string = '<p>Hello %{person_name}</p>
          <p>%{welcome_msg}</p>'

attributes = {
  :person_name => "John Doe",
  :welcome_msg => "Hello friend"
}

puts string % attributes

输出:

<p>Hello John Doe</p>
<p>Hello friend</p>

说明:

String class定义了一个名为%的方法(是的,在Ruby中,您可以在方法名称中包含非字母数字字符)。这样可以使用散列值来模板样式替换%{key}。它也可以格式化数字和字符串;有关详细信息,请参阅documentation of the % method