2017-06-15 17 views
2

開始使用this夢幻般的Rx庫,用於根據模式驗證YAML文件。超越基本知識與rx在python

只是想知道,如果我可以用它爲更先進的東西,如:

  1. 如果給定的字符串值是在已知的範圍內。例如:值的顏色必須是紅色/藍色/綠色

  2. 我可以使用正則表達式嗎?例如:已知的文件格式是.txt或.log,所以我想驗證任何具有這些格式的文件 - * .txt/* .log

  3. 如何在YAML方案中表示2個整數的元組?

  4. 如何添加驗證地圖類型的鍵?例如鍵是字符串,並且鍵「must_be」必須在其中?

+0

你有沒有試着問郵件列表上? – Anthon

+0

不,您可以將其引薦給我 – NI6

+0

https://www.listbox.com/subscribe/?list_id=137345它在您提到的頁面底部提及。 – Anthon

回答

1

解決問題,1號和4:

問題1 - 讓我們假設顏色參數是下// REC類型的必要範圍:

color: {type: //any, of: [ 
          {type: //str, value: red}, 
          {type: //str, value: green}, 
          {type: //str, value: blue} 
     ]} 

問題4:

如果您的鑰匙是字符串,您可以使用// rec類型來指示必須和可選的鑰匙以及您正在支持的鑰匙名稱:

some_map: {type: //rec, 
required: 
must_have_key1: type: //str, 
must_have_key2: type: //str} 
2

你似乎已經自己解決了其中的兩個問題。在另外兩個:

我可以使用正則表達式嗎?例如:已知的文件格式或者是.txt或的.log,所以想要以驗證任何文件與這些格式 - * .TXT/*的.log

號正則表達式不足夠跨平臺。我爲PCRE寫了一個Perl專用插件,在這裏:https://metacpan.org/release/Data-Rx-Type-PCRE

使用PCRE編寫適用於任何語言的兼容PCRE插件應該很容易。另外,如果你只使用一種語言,你可以只寫在該語言的插件無論你需要像/我的/字符串結尾的,與{substr:".txt"}

我怎麼能代表的2元組整數在YAML計劃?

您有幾個選項。我會寫:

type: //seq contents: - type: //int - type: //int

另一種選擇:

type: //arr contents: //int length: min: 2 max: 2

+0

感謝您的評論 – NI6