DataModule

A portable tree for structured data.

Contents

Summary

NameSignatureSynopsis
Union cases
IsTextthis.IsTextNo description available.
IsNullthis.IsNullNo description available.
IsListthis.IsListNo description available.
IsBoolthis.IsBoolNo description available.
IsObjectthis.IsObjectNo description available.
IsNumberthis.IsNumberNo description available.
FromData.From(values)Recursively converts a supported list, or converts a null list to Null.
FromData.From(value)Converts a timestamp to round-trip ISO text.
FromData.From(value)Converts a GUID to canonical text.
FromData.From(value)Converts a double using invariant round-trip formatting.
FromData.From(value)Converts a decimal using invariant formatting.
FromData.From(value)Converts a 64-bit integer using invariant formatting.
FromData.From(value)Converts a 32-bit integer using invariant formatting.
FromData.From(value)Converts a Boolean value.
FromData.From(value)Converts text, or converts a null string to Null.
FromData.From(value)Returns an existing structured value unchanged.
NullNullA null value.
TextText valueA text value.
NumberNumber tokenA number whose portable lexical token avoids narrowing it to one runtime numeric type.
BoolBool valueA Boolean value.
ListList itemsAn ordered collection of structured values.
ObjectObject fieldsAn ordered collection of named structured values.
Operations
assocData.assoc name valueAssociates an object field name with one exact value.
optionalAssocData.optionalAssoc name valueAssociates an object field name with Some value, or omits None.
dataData.data fieldsBuilds an object from ordered field instructions.
fieldsData.fields valueReturns exact field instructions from an existing object.
numberData.number tokenConstructs a number from one JSON number token, validated identically on .NET and Fable.
objectOfMapData.objectOfMap Builds an object from an F# map, ordered by key.
objectOfListData.objectOfList Builds an object from ordered name and value pairs.
ofMapData.ofMap Builds object-shaped data from a map of scalar values.
ofDictionaryData.ofDictionary Builds object-shaped data from a .NET dictionary of scalar values.
ofNameValuesData.ofNameValues Builds object-shaped data from name and value pairs.
ofNameValueCollectionData.ofNameValueCollection Builds object-shaped data from a .NET name-value collection.
ofCliArgsData.ofCliArgs Builds structured data from command-line arguments.
ofConfigurationData.ofConfiguration Builds structured data from flattened configuration keys.
ofConfigurationPairsData.ofConfigurationPairs Builds structured data from .NET configuration key and value pairs.
tryFindData.tryFind Attempts to find a value at a parsed path.
lookupData.lookup Finds a value at a parsed path or returns Null.
tryFindPathData.tryFindPath Attempts to parse a path and find its value.
lookupPathData.lookupPath Parses a path and finds its value or returns Null.
tryRedisplayData.tryRedisplay Attempts to render one scalar value for redisplay.
redisplayData.redisplay Renders one scalar value for redisplay.
tryRedisplayAtData.tryRedisplayAt Attempts to redisplay a scalar at a parsed path.
redisplayAtData.redisplayAt Redisplays a scalar at a parsed path.
tryRedisplayPathData.tryRedisplayPath Attempts to parse a path and redisplay its scalar.
redisplayPathData.redisplayPath Parses a path and redisplays its scalar.
tryPatchData.tryPatch edits inputApplies immutable edits atomically in declaration order.
patchData.patch edits inputApplies edits atomically or raises DataPatchException.
applyEditData.applyEdit edit inputApplies one prepared edit or raises DataPatchException.
setData.set path value inputReplaces one value, or adds a missing final object field, and returns the changed tree.
replaceData.replace path value inputReplaces one existing value and returns the changed tree.
removeData.remove path inputRemoves one existing field or list item and returns the changed tree.
appendData.append path value inputAppends one item to an existing list and returns the changed tree.
prependData.prepend path value inputPrepends one item to an existing list and returns the changed tree.
insertData.insert path index value inputInserts one item at a valid list index and returns the changed tree.
renameData.rename path name inputRenames one existing object field without moving it and returns the changed tree.
updateData.update path change inputApplies one function to an existing value and returns the changed tree.
diffData.diff expected actualReturns all exact structural differences between two values.
compareData.compare expected actualCompares complete values and returns every structural difference.
tryMatchData.tryMatch expectations actualChecks path-based expectations and accumulates structured mismatches.
renderData.render inputRenders structured data in a compact, human-readable form.
renderIndentedData.renderIndented inputRenders structured data in an indented, human-readable form.
tryTextData.tryText _arg1Attempts to extract text from one structured value.
tryBoolData.tryBool _arg1Attempts to extract a Boolean from one structured value.
tryNumberTokenData.tryNumberToken _arg1Attempts to extract the preserved token from one number value.
tryListData.tryList _arg1Attempts to extract items from one list value.
tryObjectData.tryObject _arg1Attempts to extract ordered fields from one object value.

Union cases

kind:member

IsText

this.IsText
Member

Returns

bool
kind:member

IsNull

this.IsNull
Member

Returns

bool
kind:member

IsList

this.IsList
Member

Returns

bool
kind:member

IsBool

this.IsBool
Member

Returns

bool
kind:member

IsObject

this.IsObject
Member

Returns

bool
kind:member

IsNumber

this.IsNumber
Member

Returns

bool
kind:member

From

Data.From(values)
Member
Recursively converts a supported list, or converts a null list to Null.

Parameters

NameTypeDescription
values^value list

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a timestamp to round-trip ISO text.

Parameters

NameTypeDescription
valueDateTimeOffset

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a GUID to canonical text.

Parameters

NameTypeDescription
valueGuid

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a double using invariant round-trip formatting.

Parameters

NameTypeDescription
valuefloat

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a decimal using invariant formatting.

Parameters

NameTypeDescription
valuedecimal

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a 64-bit integer using invariant formatting.

Parameters

NameTypeDescription
valueint64

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a 32-bit integer using invariant formatting.

Parameters

NameTypeDescription
valueint

Returns

Data
kind:member

From

Data.From(value)
Member
Converts a Boolean value.

Parameters

NameTypeDescription
valuebool

Returns

Data
kind:member

From

Data.From(value)
Member
Converts text, or converts a null string to Null.

Parameters

NameTypeDescription
valuestring

Returns

Data
kind:member

From

Data.From(value)
Member
Returns an existing structured value unchanged.

Parameters

NameTypeDescription
valueData

Returns

Data
kind:member

Null

Null
Member
A null value.

Returns

unit
kind:member

Text

Text value
Member
A text value.

Parameters

NameTypeDescription
valuestring

Returns

unit
kind:member

Number

Number token
Member
A number whose portable lexical token avoids narrowing it to one runtime numeric type.

Parameters

NameTypeDescription
tokenstring

Returns

unit
kind:member

Bool

Bool value
Member
A Boolean value.

Parameters

NameTypeDescription
valuebool

Returns

unit
kind:member

List

List items
Member
An ordered collection of structured values.

Parameters

NameTypeDescription
itemsData list

Returns

unit
kind:member

Object

Object fields
Member
An ordered collection of named structured values.

Parameters

NameTypeDescription
fields(string * Data) list

Returns

unit

Operations

kind:member

assoc

Data.assoc name value
Member
Associates an object field name with one exact value.

Parameters

NameTypeDescription
namestring
value^a

Returns

DataField

Verification Examples

Data.assoc "name" "Ada" // one DataField
kind:member

optionalAssoc

Data.optionalAssoc name value
Member
Associates an object field name with Some value, or omits None.

Parameters

NameTypeDescription
namestring
value^value option

Returns

DataField

Verification Examples

Data.optionalAssoc "nickname" (None: string option) // an omitted DataField
kind:member

data

Data.data fields
Member
Builds an object from ordered field instructions.

Parameters

NameTypeDescription
fieldsDataField list

Returns

Data

Verification Examples

Data.data [ Data.assoc "name" "Ada" ]
 // Data.Object [ "name", Data.Text "Ada" ]
kind:member

fields

Data.fields value
Member
Returns exact field instructions from an existing object.

Parameters

NameTypeDescription
valueData

Returns

DataField list

Verification Examples

Data.fields (Data.data [ Data.assoc "name" "Ada" ])
 // one field instruction for name
kind:member

number

Data.number token
Member
Constructs a number from one JSON number token, validated identically on .NET and Fable.

Parameters

NameTypeDescription
tokenstring

Returns

Data

Verification Examples

Data.number "1.2300e+4" // Data.Number "1.2300e+4"
kind:member

objectOfMap

Data.objectOfMap
Member
Builds an object from an F# map, ordered by key.

Returns

Map<string, Data> -> Data
kind:member

objectOfList

Data.objectOfList
Member
Builds an object from ordered name and value pairs.

Returns

(string * Data) list -> Data
kind:member

ofMap

Data.ofMap
Member
Builds object-shaped data from a map of scalar values.

Returns

Map<string, string> -> Data
kind:member

ofDictionary

Data.ofDictionary
Member
Builds object-shaped data from a .NET dictionary of scalar values.

Returns

IDictionary<string, string> -> Data
kind:member

ofNameValues

Data.ofNameValues
Member
Builds object-shaped data from name and value pairs.

Returns

(string * string) seq -> Data
kind:member

ofNameValueCollection

Data.ofNameValueCollection
Member
Builds object-shaped data from a .NET name-value collection.

Returns

NameValueCollection -> Data
kind:member

ofCliArgs

Data.ofCliArgs
Member
Builds structured data from command-line arguments.

Returns

string seq -> Data
kind:member

ofConfiguration

Data.ofConfiguration
Member
Builds structured data from flattened configuration keys.

Returns

(string * string) seq -> Data
kind:member

ofConfigurationPairs

Data.ofConfigurationPairs
Member
Builds structured data from .NET configuration key and value pairs.

Returns

IEnumerable<KeyValuePair<string, string>> -> Data
kind:member

tryFind

Data.tryFind
Member
Attempts to find a value at a parsed path.

Returns

DataPath -> Data -> Data option
kind:member

lookup

Data.lookup
Member
Finds a value at a parsed path or returns Null.

Returns

DataPath -> Data -> Data
kind:member

tryFindPath

Data.tryFindPath
Member
Attempts to parse a path and find its value.

Returns

string -> Data -> Data option
kind:member

lookupPath

Data.lookupPath
Member
Parses a path and finds its value or returns Null.

Returns

string -> Data -> Data
kind:member

tryRedisplay

Data.tryRedisplay
Member
Attempts to render one scalar value for redisplay.

Returns

Data -> string option
kind:member

redisplay

Data.redisplay
Member
Renders one scalar value for redisplay.

Returns

Data -> string
kind:member

tryRedisplayAt

Data.tryRedisplayAt
Member
Attempts to redisplay a scalar at a parsed path.

Returns

DataPath -> Data -> string option
kind:member

redisplayAt

Data.redisplayAt
Member
Redisplays a scalar at a parsed path.

Returns

DataPath -> Data -> string
kind:member

tryRedisplayPath

Data.tryRedisplayPath
Member
Attempts to parse a path and redisplay its scalar.

Returns

string -> Data -> string option
kind:member

redisplayPath

Data.redisplayPath
Member
Parses a path and redisplays its scalar.

Returns

string -> Data -> string
kind:member

tryPatch

Data.tryPatch edits input
Member
Applies immutable edits atomically in declaration order.

Parameters

NameTypeDescription
editsDataEdit list
inputData

Returns

Result<Data, DataPatchFailure list>

Verification Examples

Data.tryPatch [ replace "name" "Grace" ] (data [ "name" => "Ada" ])
 // Ok (data [ "name" => "Grace" ])
kind:member

patch

Data.patch edits input
Member
Applies edits atomically or raises DataPatchException.

Parameters

NameTypeDescription
editsDataEdit list
inputData

Returns

Data

Verification Examples

Data.data [ Data.assoc "name" "Ada" ]
 |> Data.patch [ DataEdit.replace "name" "Grace" ]
 // Data.data [ Data.assoc "name" "Grace" ]
kind:member

applyEdit

Data.applyEdit edit input
Member
Applies one prepared edit or raises DataPatchException.

Parameters

NameTypeDescription
editDataEdit
inputData

Returns

Data

Verification Examples

data [ "name" => "Ada" ] |> Data.applyEdit (replace "name" "Grace")
 // data [ "name" => "Grace" ]
kind:member

set

Data.set path value input
Member
Replaces one value, or adds a missing final object field, and returns the changed tree.

Parameters

NameTypeDescription
pathstring
value^a
inputData

Returns

Data

Verification Examples

data [ "name" => "Ada" ] |> Data.set "active" true
 // data [ "name" => "Ada"; "active" => true ]
kind:member

replace

Data.replace path value input
Member
Replaces one existing value and returns the changed tree.

Parameters

NameTypeDescription
pathstring
value^a
inputData

Returns

Data

Verification Examples

data [ "name" => "Ada" ] |> Data.replace "name" "Grace"
 // data [ "name" => "Grace" ]
kind:member

remove

Data.remove path input
Member
Removes one existing field or list item and returns the changed tree.

Parameters

NameTypeDescription
pathstring
inputData

Returns

Data

Verification Examples

data [ "name" => "Ada"; "active" => true ] |> Data.remove "active"
 // data [ "name" => "Ada" ]
kind:member

append

Data.append path value input
Member
Appends one item to an existing list and returns the changed tree.

Parameters

NameTypeDescription
pathstring
value^a
inputData

Returns

Data

Verification Examples

data [ "roles" => [ "author" ] ] |> Data.append "roles" "admin"
 // data [ "roles" => [ "author"; "admin" ] ]
kind:member

prepend

Data.prepend path value input
Member
Prepends one item to an existing list and returns the changed tree.

Parameters

NameTypeDescription
pathstring
value^a
inputData

Returns

Data

Verification Examples

data [ "roles" => [ "admin" ] ] |> Data.prepend "roles" "author"
 // data [ "roles" => [ "author"; "admin" ] ]
kind:member

insert

Data.insert path index value input
Member
Inserts one item at a valid list index and returns the changed tree.

Parameters

NameTypeDescription
pathstring
indexint
value^a
inputData

Returns

Data

Verification Examples

data [ "roles" => [ "author" ] ] |> Data.insert "roles" 1 "admin"
 // data [ "roles" => [ "author"; "admin" ] ]
kind:member

rename

Data.rename path name input
Member
Renames one existing object field without moving it and returns the changed tree.

Parameters

NameTypeDescription
pathstring
namestring
inputData

Returns

Data

Verification Examples

data [ "name" => "Ada" ] |> Data.rename "name" "displayName"
 // data [ "displayName" => "Ada" ]
kind:member

update

Data.update path change input
Member
Applies one function to an existing value and returns the changed tree.

Parameters

NameTypeDescription
pathstring
changeData -> Data
inputData

Returns

Data

Verification Examples

data [ "active" => true ] |> Data.update "active" (fun _ -> Data.Bool false)
 // data [ "active" => false ]
kind:member

diff

Data.diff expected actual
Member
Returns all exact structural differences between two values.

Parameters

NameTypeDescription
expectedData
actualData

Returns

DataDifference list

Verification Examples

Data.diff (data [ "name" => "Ada" ]) (data [ "name" => "Grace" ])
 // one DifferentValue difference at path "name"
kind:member

compare

Data.compare expected actual
Member
Compares complete values and returns every structural difference.

Parameters

NameTypeDescription
expectedData
actualData

Returns

Result<unit, DataDifference list>

Verification Examples

Data.compare (data [ "name" => "Ada" ]) (data [ "name" => "Ada" ])
 // Ok ()
kind:member

tryMatch

Data.tryMatch expectations actual
Member
Checks path-based expectations and accumulates structured mismatches.

Parameters

NameTypeDescription
expectationsDataExpectation list
actualData

Returns

Result<unit, DataMismatch list>

Verification Examples

Data.tryMatch [ at "name" "Ada" ] (data [ "name" => "Grace" ])
 // Error [ mismatch at path "name": expected "Ada", found "Grace" ]
kind:member

render

Data.render input
Member
Renders structured data in a compact, human-readable form.

Parameters

NameTypeDescription
inputData

Returns

string

Verification Examples

Data.render (data [ "name" => "Ada"; "active" => true ])
 // { name: "Ada", active: true }
kind:member

renderIndented

Data.renderIndented input
Member
Renders structured data in an indented, human-readable form.

Parameters

NameTypeDescription
inputData

Returns

string

Verification Examples

Data.renderIndented (data [ "name" => "Ada" ])
 // {
 //   name: "Ada"
 // }
kind:member

tryText

Data.tryText _arg1
Member
Attempts to extract text from one structured value.

Parameters

NameTypeDescription
_arg1Data

Returns

string option

Verification Examples

Data.tryText (Data.Text "Ada") // Some "Ada"
kind:member

tryBool

Data.tryBool _arg1
Member
Attempts to extract a Boolean from one structured value.

Parameters

NameTypeDescription
_arg1Data

Returns

bool option

Verification Examples

Data.tryBool (Data.Bool true) // Some true
kind:member

tryNumberToken

Data.tryNumberToken _arg1
Member
Attempts to extract the preserved token from one number value.

Parameters

NameTypeDescription
_arg1Data

Returns

string option

Verification Examples

Data.tryNumberToken (Data.Number "1e3") // Some "1e3"
kind:member

tryList

Data.tryList _arg1
Member
Attempts to extract items from one list value.

Parameters

NameTypeDescription
_arg1Data

Returns

Data list option

Verification Examples

Data.tryList (Data.List []) // Some []
kind:member

tryObject

Data.tryObject _arg1
Member
Attempts to extract ordered fields from one object value.

Parameters

NameTypeDescription
_arg1Data

Returns

(string * Data) list option

Verification Examples

Data.tryObject (Data.Object []) // Some []