0

正则表达式似乎被接受的模式:

(require '[schema.core :as schema])

(schema/validate #"^..$" "hi") ; => "hi"

但是模式生成器似乎无法从它们生成:

(require '[schema-generators.generators :as gen])

(gen/generate #"^..$")
; 1. Unhandled java.lang.RuntimeException
;    You must provide a leaf generator for
;    schema.spec.leaf.LeafSpec@3d398cfd

是否有可能以某种方式解决这个问题?

4

1 回答 1

1

如果我们使用这个miner/strgen库,我们确实可以找到一个解决方案:

(require '[schema.core  :as schema]
         '[miner.strgen :as strgen]
         '[schema-generators.generators :as gen])

(def two-char #"^..$")
(schema/validate two-char "hi") ; => "hi"

(gen/generate two-char {two-char (strgen/string-generator #"^..$")})
; => "x["

尽管应该注意的是,这仅提供了特定的正则表达式的生成器,#"^..$"而不是一般的正则表达式。我们需要一个更好的解决方案,也许在某处扩展一些协议。

于 2017-04-26T13:02:10.377 回答