3

正規表現、スクリプト、アトムの組み合わせを含むトリプルに文字列をマップする Ruby スクリプトにデータ構造をロードしたいと考えています。ロード元のファイルは、人間が書き込み可能である必要があります。

現在、Ruby ハッシュを含むファイルを作成し、それを文字列として読み込み、eval を呼び出しています。すなわち。

データファイル

{ "key1" => [ /pattern/, "text", "text" ],
  "key2" => [ "text2", :nil, "text3" ],
  "key3" => [ "text4", /pattern2/, /pattern3/ ] }

脚本

def get_mapping
  f = File.new path
  return eval(f.read())
end

これは問題なく動作しますが、(i) ちょっとしたハックのように感じます (ii) 安全ではありません。だから私は知りたいです:これを行うより良い方法はありますか?

ほぼJSONですが、アトムや正規表現を簡単に扱えるとは思えません。ファイル形式は、人間による読み取り/書き込みが可能な状態のままである限り、変更することができます。

4

2 に答える 2

6

この種のものには本当に YAML を使用する必要があります。コードは非常に危険です。

YAMLは正規表現をサポートし、かなり拡張可能です。

于 2009-09-18T08:35:23.730 に答える
1

Hashes とArrays はマーシャリングできます。これは、プログラムからのデータをファイルに保存する場合に役立ちます。ユーザーに外部ファイルでデータを提供する機会を与えることに興味がある場合は、YAMLをご覧ください。

于 2009-09-18T09:01:56.870 に答える