Генерация из регулярного выражения с генераторами Plumatic Schema

Регулярные выражения кажутся принятыми схемами:

(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

Можно ли как-то обойти это?

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["

Хотя следует отметить, что это только обеспечивает генератор для регулярных выражений #"^..$" в перкулярных, а не регулярных выражениях вообще. Нам нужно лучшее решение, возможно, где-нибудь расширить протокол.

Другие вопросы по тегам