ViolationModule

PackageReified.Constraint
Inspects, traverses, and renders violations.

Summary

NameSignatureSynopsis
conjoinViolation.conjoin violationsGroups failures as a conjunction, returning None for no failures and the single failure unchanged for one.
alternativesViolation.alternatives violationsGroups failures as rejected alternatives, returning None for no failures and the single failure unchanged for one.
childrenViolation.children violationThe immediate children of a group, or an empty list for an atomic violation.
flattenViolation.flatten violationEvery leaf of a violation tree, in report order.
tryExpectationViolation.tryExpectation violationThe failing constraint's identity, when the violation is a single interpreted leaf.
tryActualViolation.tryActual violationThe value that failed, when the violation is a single leaf carrying a portable one.
tryDescriptionViolation.tryDescription violationThe author-supplied prose, when the violation is a single opaque leaf.
tryDescriptionKeyViolation.tryDescriptionKey violationThe author-supplied catalogue key, when the violation is a single opaque leaf carrying one.
renderViolation.render violationRenders a violation as an English sentence fragment with no trailing punctuation, keeping conjunction and alternative groups distinct.
toMessageTreeViolation.toMessageTree violationProjects a violation for an external localization system, preserving its grouping so a translator renders conjunctions and alternatives in their own word order.
renderWithViolation.renderWith lookup violationRenders a violation through a caller-supplied lookup, keeping the same grouping and separators render uses.
messageViolation.message renderer violationRenders a violation as a localized predicate, with no attribute noun.
fullMessageViolation.fullMessage renderer violationRenders a violation as a complete sentence fragment, with the attribute noun composed once.

conjoin

Violation.conjoin violations
Member
Groups failures as a conjunction, returning None for no failures and the single failure unchanged for one.

Parameters

NameTypeDescription
violationsViolation list

Returns

Violation option

Verification Examples

[ first; second ] |> Violation.conjoin // Some (All (first, [ second ]))

alternatives

Violation.alternatives violations
Member
Groups failures as rejected alternatives, returning None for no failures and the single failure unchanged for one.

Parameters

NameTypeDescription
violationsViolation list

Returns

Violation option

Verification Examples

[ first; second ] |> Violation.alternatives // Some (Any (first, [ second ]))

children

Violation.children violation
Member
The immediate children of a group, or an empty list for an atomic violation.

Parameters

NameTypeDescription
violationViolation

Returns

Violation list

flatten

Violation.flatten violation
Member
Every leaf of a violation tree, in report order.

Parameters

NameTypeDescription
violationViolation

Returns

AtomicViolation list

Verification Examples

violation |> Violation.flatten |> List.length

tryExpectation

Violation.tryExpectation violation
Member
The failing constraint's identity, when the violation is a single interpreted leaf.

Parameters

NameTypeDescription
violationViolation

Returns

ConstraintAtom option

tryActual

Violation.tryActual violation
Member
The value that failed, when the violation is a single leaf carrying a portable one.

Parameters

NameTypeDescription
violationViolation

Returns

ConstraintValue option

tryDescription

Violation.tryDescription violation
Member
The author-supplied prose, when the violation is a single opaque leaf.

Parameters

NameTypeDescription
violationViolation

Returns

string option

tryDescriptionKey

Violation.tryDescriptionKey violation
Member
The author-supplied catalogue key, when the violation is a single opaque leaf carrying one.

Parameters

NameTypeDescription
violationViolation

Returns

MessageDescriptor option

render

Violation.render violation
Member
Renders a violation as an English sentence fragment with no trailing punctuation, keeping conjunction and alternative groups distinct.

Parameters

NameTypeDescription
violationViolation

Returns

string

Verification Examples

Violation.render (Atomic (Expected (PresenceAtom Present, None)))
 // "value must be present"

toMessageTree

Violation.toMessageTree violation
Member
Projects a violation for an external localization system, preserving its grouping so a translator renders conjunctions and alternatives in their own word order.

Parameters

NameTypeDescription
violationViolation

Returns

MessageTree

Verification Examples

match Violation.toMessageTree violation with
 | MessageTree.Leaf (MessageLeaf.Localized descriptor) -> MessageDescriptor.key descriptor
 | _ -> "constraint.group"

renderWith

Violation.renderWith lookup violation
Member
Renders a violation through a caller-supplied lookup, keeping the same grouping and separators render uses.

Parameters

NameTypeDescription
lookupMessageDescriptor -> string
violationViolation

Returns

string

Verification Examples

violation |> Violation.renderWith (fun descriptor -> resources.Format(descriptor.Key, descriptor.Arguments))

message

Violation.message renderer violation
Member
Renders a violation as a localized predicate, with no attribute noun.

Parameters

NameTypeDescription
rendererRenderer
violationViolation

Returns

string

Verification Examples

violation |> Violation.message (renderer |> Renderer.context "signup" |> Renderer.attribute "name")
 // "must be at least 13, but was 11"

fullMessage

Violation.fullMessage renderer violation
Member
Renders a violation as a complete sentence fragment, with the attribute noun composed once.

Parameters

NameTypeDescription
rendererRenderer
violationViolation

Returns

string

Verification Examples

violation |> Violation.fullMessage (signup |> Renderer.attribute "name")
 // "Name must be present"