2009-06-30 9 views
5

私はYAMLをPythonプロジェクトの設定ファイル形式として使用しています。これはRxにとって有効なスキーマではないのはなぜですか?

最近、RxがPythonとYAMLで利用できる唯一のスキーマバリデーターであるとわかりました。 : -/KwalifyはYAMLで動作しますが、RubyとJavaのみです。 :(私は一日中自分の欠けているドキュメントを読んでいると、ちょうど私のファイル構造を表現するための有効なスキーマを書くように見えることはできませんヘルプ

私は、次のYAML設定ファイルがあります。?

cmd: 
    exec: mycmd 
    aliases: [my, cmd] 
    filter: 
    sms: 'regex .*' 

load: 
    exec: load 
    filter: 
    sms: 'load: .*$' 

echo: 
    exec: echo % 

私が望むのは、一番外側のアイテム(この場合はcmd、load、echo)が任意の文字列で、 'aliases'と 'filter'も固定されていますが、オプションである必要があります。また、フィルタには必須項目とオプション項目があります。これをRxで表しますか?私を信じて私をリード

/Rx.py in make_schema(self, schema) 
    68  raise Error('invalid schema argument to make_schema') 
    69 
---> 70  uri = self.expand_uri(schema["type"]) 
    71 
    72  if not self.type_registry.get(uri): raise "unknown type %s" % uri 

KeyError: 'type' 

:IPythonで、これは私にこれを与え

type: //rec 
required: 
    type: //rec 
    required: 
    exec: //str 
    optional: 
    aliases: 
     type: //arr 
     contents: //str 
     length: {min: 1, max: 10} 
    filter: 
     type: //rec 
     optional: 
     sms: //str 
     email: //str 
     all: //str 

テスト:

は、これまでのところ私は、Rxはコンパイルに失敗し、次のスキーマを(YAMLで)、持っています"タイプ"をどこかに指定していません。 :-S

アイデア?

私はこのことでかなり疲れています...スキーマを作成して設定ファイルの検証に使用できる他の方法はありますか? RECは唯一「必要」に指定されたキーを含めることができるのに対し、マップは、キーとして任意の文字列を含めることができます

type: //map 
values: 
    type: //rec 
    required: 
    exec: //str 
    optional: 
    aliases: 
     type: //arr 
     contents: //str 
     length: {min: 1, max: 10} 
    filter: 
     type: //rec 
     optional: 
     sms: //str 
     email: //str 
     all: //str 

:事前に

おかげで、

イワン

答えて

4

はこれを試してみてください「オプション」。

+1

うん、それはうまくいく!私はこの方法で//マップを使用することは考えていませんでした。 // rec型にあまりにも集中していました。 Rxの作者、Ricardo Signesは、私に親切にも、私が将来同じような問題を抱えているかもしれない人と一緒に仲間を共有すると思っていた役に立つ回答を送ってくれました:http://pastebin.com/ f13421133。私は彼が私にそう気にしないことを願っています。 あなたの答えをありがとう、Daniel!あなたは私の一日を救った! :D – imiric

+0

私は私のプロジェクトでこのモジュールを使用しようとしていますが、@imiricが言ったように、ドキュメンテーションは親切ではありません。あなたはこれを使用していくつかの例のPythonコードを共有できますか? – NI6

関連する問題