【问题标题】:Generate from regular expression with Plumatic Schema generators使用 Plumatic Sc​​hema 生成器从正则表达式生成
【发布时间】:2017-09-23 21:43:40
【问题描述】:

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

(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

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

【问题讨论】:

    标签: clojure plumatic-schema


    【解决方案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-09-26
      • 2016-07-16
      • 2016-09-28
      • 2017-09-29
      • 2011-08-17
      • 2019-07-15
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多