Regexp
Go like Regular expressions
regexp
Creates a compiled regular expression object from a pattern string.
pattern String containing a regular expression pattern
returns native regexp object or error if pattern is invalid
regexp "[0-9]" |type?
; returns native
regexp "[0-9]" |kind?
; returns regexp
regexp//Is-match
Tests if a string matches the regular expression pattern.
regexp Native regexp object
input String to test against the pattern
returns boolean true if the string matches the pattern, false otherwise
regexp "[0-9]" |Is-match "5"
; returns true
regexp "[0-9]" |Is-match "a"
; returns false
regexp//Submatch?
Extracts the first captured group from a string using the regular expression.
regexp Regular expression with capturing groups
input String to search in
returns string containing the first captured group or error if no submatch found
regexp "x([0-9]+)y" |Submatch? "x123y"
; returns "123"
regexp//Submatches?
Extracts all captured groups from the first match as a block of strings.
regexp Regular expression with capturing groups
input String to search in
returns block containing all captured groups from the first match or error if no match found
regexp "x([0-9]+)y" |Submatches? "x123y x234y"
; returns { "123" }
regexp//Submatches\all?
Extracts all captured groups from all matches as a nested block structure.
regexp Regular expression with capturing groups
input String to search in
returns block of blocks, each inner block containing the captured groups from one match
regexp "x([0-9]+)(y+)?" |Submatches\all? "x11yy x22"
; returns { { "11" "yy" } { "22" "" } }
regexp//Find-all
Finds all substrings matching the regular expression and returns them as a block.
regexp Regular expression pattern
input String to search in
returns block containing all matching substrings or error if no matches found
regexp "[0-9]+" |Find-all "x123y x234y"
; returns { "123" "234" }
regexp//Match?
Finds the first substring matching the regular expression.
regexp Regular expression pattern
input String to search in
returns string containing the first match or empty string if no match found
regexp "[0-9]+c+" |Match? "aa33bb55cc"
; returns "55cc"
regexp//Replace-all
Replaces all occurrences of the regular expression pattern with the specified replacement string.
regexp Regular expression pattern
input String to modify
replacement String to replace matches with
returns string with all matches replaced by the replacement string
regexp "[0-9]+" |Replace-all "x123y x234y" "XXX"
; returns "xXXXy xXXXy"
JSON
Parsing and generating JSON
parse-json
Parses JSON string into Rye values.
json string containing JSON data
returns parsed Rye value (list, dict, string, integer, etc.)
"[ 1, 2, 3 ]" |parse-json |length?
; returns 3
"[ 1, 2, 3 ]" |parse-json |type?
; returns list
"{"name": "John", "age": 30}" |parse-json -> "name"
; returns "John"
parse-json\lines
Parses JSON string into Rye values.
json string containing consecutive JSON values
returns list of parsed Rye values
"{"a": 2, "b": "x"}
{"a": 3, "b": "y"}
" |parse-json\lines |to-table
; returns table { "b" "a" } [ "x" 2 "y" 3 ]
to-json
Converts a Rye value to a JSON string. Supports block (like list) and context (like dict).
value any Rye value to encode (block, list, dict, context, string, integer, etc.)
returns string containing the JSON representation
list { 1 2 3 } |to-json
; returns "[1, 2, 3] "
dict { a: 1 b: 2 c: 3 } |to-json |parse-json |-> "b"
; returns 2
{ 1 2 3 } |to-json
; returns "[1, 2, 3] "
context { a: 1 b: 2 } |to-json |parse-json |-> "a"
; returns 1
true |to-json
; returns "true"
false |to-json
; returns "false"
"[true, false]" |parse-json |to-json
; returns "[true, false] "
to-json\lines
Converts a table to JSON with each row on a separate line.
table table value to encode
returns string containing the JSON representation with each row on a new line
table { "a" "b" } { 2 "x" 3 "y" } |to-json\lines
; returns "{"a": 2, "b": "x"}
; {"a": 3, "b": "y"}
; "
BSON
BSON encoding and decoding
from-bson
Decodes BSON data into Rye values.
bytes native bytes object containing BSON data
returns decoded Rye value (string, integer, decimal, block, etc.)
"abc" |to-bson |from-bson
; returns "abc"
123 |to-bson |from-bson
; returns 123
{ 123 "asd" } |to-bson |from-bson
; returns { 123 "asd" }
to-bson
Encodes a Rye value into BSON format.
value any Rye value to encode (string, integer, decimal, block, etc.)
returns native bytes object containing the BSON-encoded data
SXML
Streaming, SAX-like XML processing
reader//Do-sxml
Processes XML using a streaming SAX-like approach with tag handlers.
reader XML reader object
block SXML processing block with tag handlers
returns result of processing the XML
"<scene><bot>C3PO</bot><bot>R2D2</bot><jedi>Luke</jedi></scene>" |reader |Do-sxml { bot { _ [ .prns ] } }
; prints "C3PO R2D2 "
"<scene><ship>XWing</ship><bot>R2D2</bot><jedi>Luke</jedi></scene>" |reader |Do-sxml { bot jedi { _ [ .prns ] } }
; prints "R2D2 Luke "
"<scene><xwing><bot>R2D2</bot><person>Luke</person></xwing><destroyer><person>Vader</person></destroyer></scene>" |reader |Do-sxml { xwing { person { _ [ .prns ] } } }
; prints "Luke "
rye-sxml-start//Attr?
Retrieves an attribute by index or name from an XML start element.
element XML start element
index Integer index of the Attribute to retrieve
returns list [ namespace tag value ] of the attribute or void if not found
rye-sxml-start//Attrs?
Returns a dict of all attributes from an XML start element.
element XML start element
returns dict with all attributes where keys are "attrname" or "namespace:attrname"
rye-sxml-start//Name?
Returns the name of an XML start element.
element XML start element
returns string name of the XML element
HTML
HTML processing functions
unescape\html
Converts HTML entities to their character equivalents.
text HTML-escaped string
returns string with HTML entities converted to their character equivalents
unescape\html ">hello<"
; returns ">hello<"
escape\html
Converts special characters to HTML entities.
text String containing HTML special characters
returns string with special characters converted to HTML entities
escape\html "<hello>"
; returns "<hello>"
html->markdown
Converts HTML text to markdown format.
html HTML string to convert
returns string containing markdown equivalent of the HTML
html->markdown "<h1>title</h1><p>para</p>"
; returns "# title
;
; para"
reader//Parse-html
Parses HTML using a streaming approach with tag handlers.
reader HTML reader object
block HTML processing block with tag handlers
returns result of processing the HTML
rye-html-start//Attr?
Retrieves an attribute value by name or index from an HTML element.
element HTML token element
name-or-index Attribute name (as word or string) or index (as integer)
returns string value of the attribute or void if not found
rye-html-start//Attrs?
Returns a dict of all attributes from an HTML element.
element HTML token element
returns dict with all attributes where keys are attribute names
rye-html-start//Name?
Returns the name of an HTML element.
element HTML token element
returns string name of the HTML element
Markdown
Functions for processing and converting Markdown documents
reader//do-markdown
Processes Markdown using a streaming approach with section handlers.
reader File reader or similar object to read markdown from
handlers Block containing section handlers (h1, h2, paragraph, code, etc.)
returns the result of processing the markdown document
Conversion
Functions for converting between different types and kinds
convert
Converts value from one kind to another based on a conversion specification block.
value Dict or RyeCtx to convert
spec Block specifying the conversion rules
returns converted value based on the specification
converter
Registers a converter between two kinds of objects.
source-kind Kind to convert from
target-kind Kind to convert to
spec Block specifying conversion rules
returns the target kind with the converter registered
Default
decode\hex-string
Decodes a hexadecimal string to a UTF-8 string.
purehex-string hexadecimal string to decode
returns string containing the decoded bytes as a UTF-8 string
"48656c6c6f20576f726c64" |decode\hex-string
; returns "Hello World"
"48656c6c6f20576f726c64" |decode\hex-string |type?
; returns string
"invalid" |decode\hex-string |disarm |type?
; returns error
encode\hex-string
Encodes a string to its hexadecimal representation.
purestring string to encode
returns hexadecimal string representation
"Hello World" |encode\hex-string
; returns "48656c6c6f20576f726c64"
"Hello World" |encode\hex-string |type?
; returns string
"" |encode\hex-string
; returns ""
clean\hex-string
Removes all whitespace from a hex string and ensures even length.
purehex-string raw hex string with possible whitespace
returns cleaned hex string with whitespace removed and even length
" 70 44 01 4b
55 50 4e 51 " |clean\hex-string
; returns "7044014b55504e51"
"70 44 01 4b 55 50 4e 51
52 0a" |clean\hex-string
; returns "7044014b55504e51520a"
"7044014b55504e51520a" |clean\hex-string
; returns "7044014b55504e51520a"
charmap\windows-1250
Returns the Windows-1250 (CP1250) character encoding for Central European languages.
purenone
returns Windows-1250 encoding as a native value
charmap\windows-1250 |type?
; returns native
charmap\windows-1250 |kind?
; returns charmap-encoding
charmap\iso-8859-1
Returns the ISO-8859-1 (Latin-1) character encoding.
purenone
returns ISO-8859-1 encoding as a native value
charmap\iso-8859-1 |type?
; returns native
charmap\iso-8859-1 |kind?
; returns charmap-encoding
charmap\iso-8859-2
Returns the ISO-8859-2 (Latin-2) character encoding for Central European languages.
purenone
returns ISO-8859-2 encoding as a native value
charmap\iso-8859-2 |type?
; returns native
charmap\iso-8859-2 |kind?
; returns charmap-encoding
charmap\windows-1252
Returns the Windows-1252 character encoding for Western European languages.
purenone
returns Windows-1252 encoding as a native value
charmap\windows-1252 |type?
; returns native
charmap\windows-1252 |kind?
; returns charmap-encoding
charmap\code-page-437
Returns the Code Page 437 (DOS/IBM PC) character encoding.
purenone
returns Code Page 437 encoding as a native value
charmap\code-page-437 |type?
; returns native
charmap\code-page-437 |kind?
; returns charmap-encoding
charmap\code-page-850
Returns the Code Page 850 (DOS Latin-1) character encoding.
purenone
returns Code Page 850 encoding as a native value
charmap\code-page-850 |type?
; returns native
charmap\code-page-850 |kind?
; returns charmap-encoding
charmap\koi8r
Returns the KOI8-R character encoding for Russian.
purenone
returns KOI8-R encoding as a native value
charmap\koi8r |type?
; returns native
charmap\koi8r |kind?
; returns charmap-encoding
charmap-encoding//Decoder
Creates a new text decoder for the given character encoding.
pureencoding charmap encoding as a native value
returns text decoder as a native value
charmap\windows-1250 |Decoder |type?
; returns native
charmap\windows-1250 |Decoder |kind?
; returns text-decoder
charmap-encoding//Encoder
Creates a new text encoder for the given character encoding.
pureencoding charmap encoding as a native value
returns text encoder as a native value
charmap\windows-1250 |Encoder |type?
; returns native
charmap\windows-1250 |Encoder |kind?
; returns text-encoder
text-decoder//Decode
Decodes a string using the given text decoder.
puredecoder text decoder as a native value
input string to decode
returns decoded string
charmap\windows-1250 |Decoder |Decode "Hello"
; returns "Hello"
charmap\windows-1250 |Decoder |Decode ""
; returns ""
text-encoder//Encode
Encodes a string using the given text encoder.
pureencoder text encoder as a native value
input string to encode
returns encoded string
charmap\windows-1250 |Encoder |Encode "Hello"
; returns "Hello"
charmap\windows-1250 |Encoder |Encode "Plačilo" |encode\hex-string
; returns "506c61e8696c6f"
is-space
Checks if a single character string is a whitespace character.
pureinput string to check (should be single character)
returns boolean true if character is whitespace, false otherwise
" " |is-space
; returns true
" " |is-space
; returns true
"
" |is-space
; returns true
"
" |is-space
; returns true
"a" |is-space
; returns false
"A" |is-space
; returns false
"1" |is-space
; returns false
remove-all-space
Removes all whitespace characters from a string.
pureinput string to process
returns string with all whitespace characters removed
"Hello World" |remove-all-space
; returns "HelloWorld"
" Hello World " |remove-all-space
; returns "HelloWorld"
"
Hello
World " |remove-all-space
; returns "HelloWorld"
"" |remove-all-space
; returns ""
Structures
Functions for converting between Rye and Go data structures
dict->struct
Converts a Rye Dict to a Go struct using reflection. Takes a Dict and a Native containing a pointer to a struct.
dict Rye Dict containing field names and values
struct-ptr Native containing a pointer to a Go struct
returns native containing the populated struct
dict->new-struct
Creates a new Go struct type at runtime based on a Rye Dict and populates it with values. Takes a Dict and a string for the struct name.
dict Rye Dict containing field names and values
name String name for the new struct type
returns native containing the dynamically created struct
struct->dict
Converts a Go struct to a Rye Dict using reflection. Takes a Native containing a struct or pointer to a struct.
struct Native containing a Go struct or pointer to struct
returns dict with struct field names as keys and field values as values