我正在尝试为一个 erlang 应用程序 (rabbitmq) 编写一个配置文件,其 conf si 写为一个 erlang term 1。
我的属性是一个 ruby 哈希,你知道我如何将这个哈希转换为一个漂亮的印刷 erlang 术语吗?
我正在尝试为一个 erlang 应用程序 (rabbitmq) 编写一个配置文件,其 conf si 写为一个 erlang term 1。
我的属性是一个 ruby 哈希,你知道我如何将这个哈希转换为一个漂亮的印刷 erlang 术语吗?
如果我必须自己做这件事,也许是这样的:
def to_erl(o)
case o
when Hash
'[' +
o.map {|(k,v)|
"{#{k}, #{to_erl v}}"
}.join(",\n") +
']'
when Array
'[' + o.map{|v| to_erl(v)}.join(",") +']'
when TrueClass then "true"
when FalseClass then "false"
when Integer then o.to_s
when String then o
when Symbol then o.to_s
# ... and whatever else you can think of
else
raise "Don't know how to erlify #{o}"
end
end
...但是我敢打赌,您可以从一些必须在 ruby 和 erlang 之间序列化的开源项目中窃取一些不错的代码。
对于序列化erlang
,BERT 是事实上的(二进制 Erlang 术语)。似乎有很多从 Ruby 哈希到 BERT 的库。还没有看到一个给你简单的文本 erlang 术语的。
因为这是一个厨师食谱,所以在收敛时不要弄乱太多的 ruby 依赖项是个好主意。您将调用#to_hash
您的厨师属性,并且您将得到的内容将非常简单(没有对象,我猜只有数字/布尔值/字符串/数组和哈希)来管理一些自制代码。