diff --git a/pages/api-reference/_meta.json b/pages/api-reference/_meta.json index 299d937..3282e95 100644 --- a/pages/api-reference/_meta.json +++ b/pages/api-reference/_meta.json @@ -4,6 +4,7 @@ "luau": "Luau", "net": "Net", "process": "Process", + "regex": "Regex", "roblox": "Roblox", "serde": "Serde", "stdio": "Stdio", diff --git a/pages/api-reference/regex.md b/pages/api-reference/regex.md new file mode 100644 index 0000000..c84361b --- /dev/null +++ b/pages/api-reference/regex.md @@ -0,0 +1,230 @@ +# Regex + +Built-in library for regular expressions + +#### Example usage + +```lua +local Regex = require("@lune/regex") + +local re = Regex.new("hello") + +if re:isMatch("hello, world!") then + print("Matched!") +end + +local caps = re:captures("hello, world! hello, again!") + +print(#caps) -- 2 +print(caps:get(1)) -- "hello" +print(caps:get(2)) -- "hello" +print(caps:get(3)) -- nil +``` + +## Constructors + +### new + +Creates a new `Regex` from a given string pattern. + +#### Errors + +This constructor throws an error if the given pattern is invalid. + +#### Parameters + +- `pattern` `string` The string pattern to use + +#### Returns + +- `Regex` The new Regex object + +--- + +## Methods + +### isMatch + +Check if the given text matches the regular expression. + +This method may be slightly more efficient than calling `find` if you only need to know if the text +matches the pattern. + +#### Parameters + +- `self` Regex + +- `text` `string` The text to search + +#### Returns + +- `boolean` Whether the text matches the pattern + +--- + +### find + +Finds the first match in the given text. + +Returns `nil` if no match was found. + +#### Parameters + +- `self` Regex + +- `text` `string` The text to search + +#### Returns + +- `RegexMatch?` The match object + +--- + +### captures + +Finds all matches in the given text as a `RegexCaptures` object. + +Returns `nil` if no matches are found. + +#### Parameters + +- `self` Regex + +- `text` `string` The text to search + +#### Returns + +- `RegexCaptures?` The captures object + +--- + +### split + +Splits the given text using the regular expression. + +#### Parameters + +- `self` Regex + +- `text` `string` The text to split + +#### Returns + +- `{ string }` The split text + +--- + +### replace + +Replaces the first match in the given text with the given replacer string. + +#### Parameters + +- `self` Regex + +- `haystack` `string` The text to search + +- `replacer` `string` The string to replace matches with + +#### Returns + +- `string` The text with the first match replaced + +--- + +### replaceAll + +Replaces all matches in the given text with the given replacer string. + +#### Parameters + +- `self` Regex + +- `haystack` `string` The text to search + +- `replacer` `string` The string to replace matches with + +#### Returns + +- `string` The text with all matches replaced + +--- + +# RegexCaptures + +Captures from a regular expression. + +## Methods + +### get + +Returns the match at the given index, if one exists. + +#### Parameters + +- `self` RegexCaptures + +- `index` `number` The index of the match to get + +#### Returns + +- `RegexMatch` The match, if one exists + +--- + +### group + +Returns the match for the given named match group, if one exists. + +#### Parameters + +- `self` RegexCaptures + +- `group` `string` The name of the group to get + +#### Returns + +- `RegexMatch` The match, if one exists + +--- + +### format + +Formats the captures using the given format string. + +#### Example usage + +```lua +local regex = require("@lune/regex") + +local re = regex.new("(?[0-9]{2})-(?[0-9]{2})-(?[0-9]{4})") + +local caps = re:captures("On 14-03-2010, I became a Tenneessee lamb."); +assert(caps ~= nil, "Example pattern should match example text") + +local formatted = caps:format("year=$year, month=$month, day=$day") +print(formatted) -- "year=2010, month=03, day=14" +``` + +#### Parameters + +- `self` RegexCaptures + +- `format` `string` The format string to use + +#### Returns + +- `string` The formatted string + +--- + +# RegexMatch + +A match from a regular expression. + +Contains the following values: + +- `start` -- The start index of the match in the original string. +- `finish` -- The end index of the match in the original string. +- `text` -- The text that was matched. +- `len` -- The length of the text that was matched. diff --git a/pages/api-reference/stdio.md b/pages/api-reference/stdio.md index ba83df6..f221307 100644 --- a/pages/api-reference/stdio.md +++ b/pages/api-reference/stdio.md @@ -16,6 +16,9 @@ stdio.write("Hello, ") stdio.write("World! ") stdio.write("All on the same line") stdio.ewrite("\nAnd some error text, too") + +-- Reading the entire input from stdin +local input = stdio.readToEnd() ``` ## Functions @@ -124,3 +127,13 @@ Writes a string directly to stderr, without any newline. - `s` The string to write to stderr --- + +### readToEnd + +Reads the entire input from stdin. + +#### Returns + +- The input from stdin + +---