我有一個紅寶石項目,其中部分操作是選擇給定用戶指定約束條件的實體。到目前爲止,我一直在使用我自己的過濾器語言,使用正則表達式並根據實體中的字段指定包含/排除。一個簡單的過濾語言,可以嵌入到紅寶石?
如果你有興趣在我目前的做法,這裏有一個例子:例如,給定的實體名單:
[{"type":"dog", "name":"joe"}, {"type":"dog", "name":"fuzz"}, {"type":"cat", "name":"meow"}]
用戶可以指定像這樣的過濾器:
{"filter":{ "type":{"included":["dog"] }, "name":{"excluded":["^f.*"] } }}
會匹配所有的狗,但不包括絨毛。
這是現在的工作。但是,我開始需要更復雜的選擇參數。我在想,不是繼續破解我自己的過濾語言,可能會有更通用的過濾語言,我可以將其嵌入到我的應用程序中?例如,是否有解析器可以使用SQL where
子句進行應用程序內過濾?或者還有其他一些我不知道的通用簡單過濾語言?我特別想從正則表達式中移除,因爲我想對數字進行範圍查詢(如實體[「size」] < 50?)
一些谷歌搜索後,我發現了C#中的LINQ,它可能具有ruby等價物:http://msdn.microsoft.com/en-us/library/bb308959.aspx –