问题标签 [plumatic-schema]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
690 浏览

clojure - 使用 Plumatic Sc​​hema 强制转换为 bigdec

我有类型的传入数据{:loan/amount 1200}

是否可以使用 plumatic Sc​​hema将其强制转换为,即将数字(甚至数字字符串)强制转换为 bigdecimals {:loan/amount 1200M}

我不知道如何定义新的数据类型(如s/Bigdec),然后确保它用于clojure.core/bigdec将某个值强制为java.math.BigDecimal.

0 投票
0 回答
57 浏览

clojure - 使用棱柱模式 =>

=>宏的预期用途是什么?

https://github.com/plumatic/schema/blob/master/src/cljx/schema/core.cljx#L1077-L1091

只要传递了一个函数,它似乎就通过了,例如:

0 投票
1 回答
221 浏览

clojure - 使用 Plumatic Sc​​hema 生成器从正则表达式生成

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

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

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

0 投票
2 回答
238 浏览

clojure - 可以从 Plumatic Sc​​hema 中创建一个谓词函数吗?

我想创建一个谓词函数,当某些东西与模式 X 匹配时返回 true,否则返回 false。

0 投票
1 回答
234 浏览

clojure - 使用 plumatic Sc​​hema 表达“集合中的成员”

我想编写一个模式,其中数据结构中的元素 e 可以是一组项目中的任何成员;e ∈ S。对于 Clojure Spec,这可以用如下集合表示:

对于一组关键字。

然而,在 Schema 中,集合用于表示一组事物,而不是集合的一个元素成员。那么我如何在 Schema 中表达我想要一个集合中的一个成员?

0 投票
2 回答
287 浏览

clojure - 关键字参数的 Plumatic Sc​​hema

假设我们有一个get-ints带有一个位置参数的函数,调用者想要的整数数量,以及两个命名参数:max:min

如何为 的参数列表编写 Plumatic Sc​​hema get-ints,一个、三个或五个项目的列表,其中第一个始终是数字,后面的项目始终是关键字和关联值的对。

使用 Clojure Spec 我将其表示为:

::min以及由和持有的有效值的单独定义::max

0 投票
0 回答
36 浏览

validation - 在 Clojure 中创建检查模式的记录构造函数

你好,克洛朱利亚人,

众所周知,Clojure 的defrecord不尊重类型提示,任何类型的数据都可以放在记录字段中。我正在寻找一种方法来限制 Clojure 中的记录字段。

我开始尝试defrecord调用Prismatic Sc​​hema

现在调用(->Item 1 2)只返回一个新Item实例,尽管第二个参数是数字而不是字符串。我希望构造函数调用抛出一些异常。

我尝试了以下方法来打开记录实例化的验证,但没有成功。

  • ^:always-validate元数据添加到 defrecord
  • 打电话(sc/set-fn-validation! true)
  • 打电话(sc/with-fn-validation (->Item 1 1))

是否可以在不编写自定义构造函数的情况下打开构造函数调用的模式验证?

谢谢您的帮助。

0 投票
1 回答
765 浏览

clojure - 如何使用 plumatic/schema 生成用户友好的验证消息?

我希望能够为这些模式中的验证错误生成用户友好或指定自定义错误消息:

有效架构:

无效的架构:

无效架构 - 错误:

我希望能够生成一些对非程序员来说更具可读性的东西,例如:

0 投票
1 回答
120 浏览

clojure - 具有最小和最大限制的架构?

是否可以为以下架构添加最小和最大限制?

我希望架构在Number< 0 和 > 100 时抛出异常。

0 投票
0 回答
86 浏览

validation - 如何将谓词分配给 extra-validator-fn?

我将如何为以下模式 defrecord 的 extra-validator-fn 中的每个检查分配一个谓词:

在此示例中,额外的验证会引发异常:

(s/validate Item (map->Item {:type :solid :unit :ml}))

这里写着:(not (passes-extra-validation? a-apriori.cli.core.Item))

但是,我希望它阅读:(not ('invalid-unit-for-type a-apriori.cli.core.Item))