aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/arrays.md52
-rw-r--r--docs/booleans.md2
-rw-r--r--docs/integers.md28
-rw-r--r--docs/moments.md46
-rw-r--r--docs/nums.md98
-rw-r--r--docs/paths.md52
-rw-r--r--docs/rng.md16
-rw-r--r--docs/sets.md22
-rw-r--r--docs/shell.md8
-rw-r--r--docs/tables.md12
-rw-r--r--docs/text.md70
-rw-r--r--docs/threads.md8
12 files changed, 207 insertions, 207 deletions
diff --git a/docs/arrays.md b/docs/arrays.md
index 4d9c1175..fc0e8fb8 100644
--- a/docs/arrays.md
+++ b/docs/arrays.md
@@ -232,32 +232,32 @@ variable or dereference a heap pointer, it may trigger copy-on-write behavior.
## Array Methods
-- [`func binary_search(arr: [T], by: func(x,y:&T->Int32) = T.compare -> Int)`](#`binary_search)
-- [`func by(arr: [T], step: Int -> [T])`](#`by)
-- [`func clear(arr: @[T] -> Void)`](#`clear)
-- [`func counts(arr: [T] -> {T,Int})`](#`counts)
-- [`func find(arr: [T], target: T -> Int?)`](#`find)
-- [`func first(arr: [T], predicate: func(item:&T -> Bool) -> Int)`](#`first)
-- [`func from(arr: [T], first: Int -> [T])`](#`from)
-- [`func has(arr: [T] -> Bool)`](#`has)
-- [`func heap_pop(arr: @[T], by: func(x,y:&T->Int32) = T.compare -> T?)`](#`heap_pop)
-- [`func heap_push(arr: @[T], item: T, by=T.compare -> Void)`](#`heap_push)
-- [`func heapify(arr: @[T], by: func(x,y:&T->Int32) = T.compare -> Void)`](#`heapify)
-- [`func insert(arr: @[T], item: T, at: Int = 0 -> Void)`](#`insert)
-- [`func insert_all(arr: @[T], items: [T], at: Int = 0 -> Void)`](#`insert_all)
-- [`func pop(arr: &[T], index: Int = -1 -> T?)`](#`pop)
-- [`func random(arr: [T], rng: RNG = random -> T)`](#`random)
-- [`func remove_at(arr: @[T], at: Int = -1, count: Int = 1 -> Void)`](#`remove_at)
-- [`func remove_item(arr: @[T], item: T, max_count: Int = -1 -> Void)`](#`remove_item)
-- [`func reversed(arr: [T] -> [T])`](#`reversed)
-- [`func sample(arr: [T], count: Int, weights: [Num]? = ![Num], rng: RNG = random -> [T])`](#`sample)
-- [`func shuffle(arr: @[T], rng: RNG = random -> Void)`](#`shuffle)
-- [`func shuffled(arr: [T], rng: RNG = random -> [T])`](#`shuffled)
-- [`func slice(arr: [T], from: Int, to: Int -> [T])`](#`slice)
-- [`func sort(arr: @[T], by=T.compare -> Void)`](#`sort)
-- [`sorted(arr: [T], by=T.compare -> [T])`](#`sorted)
-- [`to(arr: [T], last: Int -> [T])`](#`to)
-- [`unique(arr: [T] -> {T})`](#`unique)
+- [`func binary_search(arr: [T], by: func(x,y:&T->Int32) = T.compare -> Int)`](#binary_search)
+- [`func by(arr: [T], step: Int -> [T])`](#by)
+- [`func clear(arr: @[T] -> Void)`](#clear)
+- [`func counts(arr: [T] -> {T,Int})`](#counts)
+- [`func find(arr: [T], target: T -> Int?)`](#find)
+- [`func first(arr: [T], predicate: func(item:&T -> Bool) -> Int)`](#first)
+- [`func from(arr: [T], first: Int -> [T])`](#from)
+- [`func has(arr: [T] -> Bool)`](#has)
+- [`func heap_pop(arr: @[T], by: func(x,y:&T->Int32) = T.compare -> T?)`](#heap_pop)
+- [`func heap_push(arr: @[T], item: T, by=T.compare -> Void)`](#heap_push)
+- [`func heapify(arr: @[T], by: func(x,y:&T->Int32) = T.compare -> Void)`](#heapify)
+- [`func insert(arr: @[T], item: T, at: Int = 0 -> Void)`](#insert)
+- [`func insert_all(arr: @[T], items: [T], at: Int = 0 -> Void)`](#insert_all)
+- [`func pop(arr: &[T], index: Int = -1 -> T?)`](#pop)
+- [`func random(arr: [T], rng: RNG = random -> T)`](#random)
+- [`func remove_at(arr: @[T], at: Int = -1, count: Int = 1 -> Void)`](#remove_at)
+- [`func remove_item(arr: @[T], item: T, max_count: Int = -1 -> Void)`](#remove_item)
+- [`func reversed(arr: [T] -> [T])`](#reversed)
+- [`func sample(arr: [T], count: Int, weights: [Num]? = ![Num], rng: RNG = random -> [T])`](#sample)
+- [`func shuffle(arr: @[T], rng: RNG = random -> Void)`](#shuffle)
+- [`func shuffled(arr: [T], rng: RNG = random -> [T])`](#shuffled)
+- [`func slice(arr: [T], from: Int, to: Int -> [T])`](#slice)
+- [`func sort(arr: @[T], by=T.compare -> Void)`](#sort)
+- [`sorted(arr: [T], by=T.compare -> [T])`](#sorted)
+- [`to(arr: [T], last: Int -> [T])`](#to)
+- [`unique(arr: [T] -> {T})`](#unique)
### `binary_search`
diff --git a/docs/booleans.md b/docs/booleans.md
index 300a3a64..a0e3f038 100644
--- a/docs/booleans.md
+++ b/docs/booleans.md
@@ -7,7 +7,7 @@ Boolean values have the type `Bool` and can be either `yes` ("true") or `no`
This documentation provides details on boolean functions available in the API.
-- [`func parse(text: Text -> Bool?)`](#`parse)
+- [`func parse(text: Text -> Bool?)`](#parse)
### `parse`
diff --git a/docs/integers.md b/docs/integers.md
index e1c3a1ec..f9a76b19 100644
--- a/docs/integers.md
+++ b/docs/integers.md
@@ -122,20 +122,20 @@ Each integer type has its own version of the following functions. Functions
can be called either on the type itself: `Int.sqrt(x)` or as a method call:
`x:sqrt()`. Method call syntax is preferred.
-- [`func abs(x: Int -> Int)`](#`abs)
-- [`func choose(n: Int, k: Int -> Int)`](#`choose)
-- [`func clamped(x, low, high: Int -> Int)`](#`clamped)
-- [`func factorial(n: Int -> Text)`](#`factorial)
-- [`func format(i: Int, digits: Int = 0 -> Text)`](#`format)
-- [`func hex(i: Int, digits: Int = 0, uppercase: Bool = yes, prefix: Bool = yes -> Text)`](#`hex)
-- [`func is_prime(x: Int, reps: Int = 50 -> Bool)`](#`is_prime)
-- [`func next_prime(x: Int -> Int)`](#`next_prime)
-- [`func octal(i: Int, digits: Int = 0, prefix: Bool = yes -> Text)`](#`octal)
-- [`func onward(first: Int, step: Int = 1 -> Text)`](#`onward)
-- [`func parse(text: Text -> Int?)`](#`parse)
-- [`func prev_prime(x: Int -> Int)`](#`prev_prime)
-- [`func sqrt(x: Int -> Int)`](#`sqrt)
-- [`func to(first: Int, last: Int, step : Int? = none:Int -> func(->Int?))`](#`to)
+- [`func abs(x: Int -> Int)`](#abs)
+- [`func choose(n: Int, k: Int -> Int)`](#choose)
+- [`func clamped(x, low, high: Int -> Int)`](#clamped)
+- [`func factorial(n: Int -> Text)`](#factorial)
+- [`func format(i: Int, digits: Int = 0 -> Text)`](#format)
+- [`func hex(i: Int, digits: Int = 0, uppercase: Bool = yes, prefix: Bool = yes -> Text)`](#hex)
+- [`func is_prime(x: Int, reps: Int = 50 -> Bool)`](#is_prime)
+- [`func next_prime(x: Int -> Int)`](#next_prime)
+- [`func octal(i: Int, digits: Int = 0, prefix: Bool = yes -> Text)`](#octal)
+- [`func onward(first: Int, step: Int = 1 -> Text)`](#onward)
+- [`func parse(text: Text -> Int?)`](#parse)
+- [`func prev_prime(x: Int -> Int)`](#prev_prime)
+- [`func sqrt(x: Int -> Int)`](#sqrt)
+- [`func to(first: Int, last: Int, step : Int? = none:Int -> func(->Int?))`](#to)
### `abs`
diff --git a/docs/moments.md b/docs/moments.md
index cee53bde..98ebf99d 100644
--- a/docs/moments.md
+++ b/docs/moments.md
@@ -63,29 +63,29 @@ Time zones are specified by name, such as `America/New_York` or `UTC`.
## Moment Methods
-- [`func after(moment: Moment, seconds : Num = 0.0, minutes : Num = 0.0, hours : Num = 0.0, days : Int = 0, weeks : Int = 0, months : Int = 0, years : Int = 0, timezone : Text? = !Text -> Moment)`](#`after)
-- [`func date(moment: Moment, timezone : Text? = !Text -> Text)`](#`date)
-- [`func day_of_month(moment: Moment, timezone : Text? = !Text -> Int)`](#`day_of_month)
-- [`func day_of_week(moment: Moment, timezone : Text? = !Text -> Int)`](#`day_of_week)
-- [`func day_of_year(moment: Moment, timezone : Text? = !Text -> Int)`](#`day_of_year)
-- [`func format(moment: Moment, format: Text = "%Y-%m-%dT%H:%M:%S%z", timezone : Text? = !Text -> Text)`](#`format)
-- [`func from_unix_timestamp(timestamp: Int64 -> Moment)`](#`from_unix_timestamp)
-- [`func get_local_timezone(->Text)`](#`get_local_timezone)
-- [`func hour(moment: Moment, timezone : Text? = !Text -> Int)`](#`hour)
-- [`func hours_till(moment: Moment, then:Moment -> Num)`](#`hours_till)
-- [`func minute(moment: Moment, timezone : Text? = !Text -> Int)`](#`minute)
-- [`func minutes_till(moment: Moment, then:Moment -> Num)`](#`minutes_till)
-- [`func month(moment: Moment, timezone : Text? = !Text -> Int)`](#`month)
-- [`func nanosecond(moment: Moment, timezone : Text? = !Text -> Int)`](#`nanosecond)
-- [`func new(year : Int, month : Int, day : Int, hour : Int = 0, minute : Int = 0, second : Num = 0.0 -> Moment)`](#`new)
-- [`func now(->Moment)`](#`now)
-- [`func parse(text: Text, format: Text = "%Y-%m-%dT%H:%M:%S%z" -> Moment?)`](#`parse)
-- [`func relative(moment: Moment, relative_to : Moment = Moment.now(), timezone : Text? = !Text -> Text)`](#`relative)
-- [`func second(moment: Moment, timezone : Text? = !Text -> Int)`](#`second)
-- [`func seconds_till(moment: Moment, then:Moment -> Num)`](#`seconds_till)
-- [`func set_local_timezone(timezone : Text? = !Text -> Void)`](#`set_local_timezone)
-- [`func time(moment: Moment, seconds : Bool = no, am_pm : Bool = yes, timezone : Text? = !Text -> Text)`](#`time)
-- [`func unix_timestamp(moment:Moment->Int64)`](#`unix_timestamp)
+- [`func after(moment: Moment, seconds : Num = 0.0, minutes : Num = 0.0, hours : Num = 0.0, days : Int = 0, weeks : Int = 0, months : Int = 0, years : Int = 0, timezone : Text? = !Text -> Moment)`](#after)
+- [`func date(moment: Moment, timezone : Text? = !Text -> Text)`](#date)
+- [`func day_of_month(moment: Moment, timezone : Text? = !Text -> Int)`](#day_of_month)
+- [`func day_of_week(moment: Moment, timezone : Text? = !Text -> Int)`](#day_of_week)
+- [`func day_of_year(moment: Moment, timezone : Text? = !Text -> Int)`](#day_of_year)
+- [`func format(moment: Moment, format: Text = "%Y-%m-%dT%H:%M:%S%z", timezone : Text? = !Text -> Text)`](#format)
+- [`func from_unix_timestamp(timestamp: Int64 -> Moment)`](#from_unix_timestamp)
+- [`func get_local_timezone(->Text)`](#get_local_timezone)
+- [`func hour(moment: Moment, timezone : Text? = !Text -> Int)`](#hour)
+- [`func hours_till(moment: Moment, then:Moment -> Num)`](#hours_till)
+- [`func minute(moment: Moment, timezone : Text? = !Text -> Int)`](#minute)
+- [`func minutes_till(moment: Moment, then:Moment -> Num)`](#minutes_till)
+- [`func month(moment: Moment, timezone : Text? = !Text -> Int)`](#month)
+- [`func nanosecond(moment: Moment, timezone : Text? = !Text -> Int)`](#nanosecond)
+- [`func new(year : Int, month : Int, day : Int, hour : Int = 0, minute : Int = 0, second : Num = 0.0 -> Moment)`](#new)
+- [`func now(->Moment)`](#now)
+- [`func parse(text: Text, format: Text = "%Y-%m-%dT%H:%M:%S%z" -> Moment?)`](#parse)
+- [`func relative(moment: Moment, relative_to : Moment = Moment.now(), timezone : Text? = !Text -> Text)`](#relative)
+- [`func second(moment: Moment, timezone : Text? = !Text -> Int)`](#second)
+- [`func seconds_till(moment: Moment, then:Moment -> Num)`](#seconds_till)
+- [`func set_local_timezone(timezone : Text? = !Text -> Void)`](#set_local_timezone)
+- [`func time(moment: Moment, seconds : Bool = no, am_pm : Bool = yes, timezone : Text? = !Text -> Text)`](#time)
+- [`func unix_timestamp(moment:Moment->Int64)`](#unix_timestamp)
### `after`
diff --git a/docs/nums.md b/docs/nums.md
index 5589de57..f66314d3 100644
--- a/docs/nums.md
+++ b/docs/nums.md
@@ -119,55 +119,55 @@ called either on the type itself: `Num.sqrt(x)` or as a method call:
---
-- [`func abs(n: Num -> Num)`](#`abs)
-- [`func acos(x: Num -> Num)`](#`acos)
-- [`func acosh(x: Num -> Num)`](#`acosh)
-- [`func asin(x: Num -> Num)`](#`asin)
-- [`func asinh(x: Num -> Num)`](#`asinh)
-- [`func atan(x: Num -> Num)`](#`atan)
-- [`func atan2(x: Num, y: Num -> Num)`](#`atan2)
-- [`func atanh(x: Num -> Num)`](#`atanh)
-- [`func cbrt(x: Num -> Num)`](#`cbrt)
-- [`func ceil(x: Num -> Num)`](#`ceil)
-- [`clamped(x, low, high: Num -> Num)`](#`clamped)
-- [`func copysign(x: Num, y: Num -> Num)`](#`copysign)
-- [`func cos(x: Num -> Num)`](#`cos)
-- [`func cosh(x: Num -> Num)`](#`cosh)
-- [`func erf(x: Num -> Num)`](#`erf)
-- [`func erfc(x: Num -> Num)`](#`erfc)
-- [`func exp(x: Num -> Num)`](#`exp)
-- [`func exp2(x: Num -> Num)`](#`exp2)
-- [`func expm1(x: Num -> Num)`](#`expm1)
-- [`func fdim(x: Num, y: Num -> Num)`](#`fdim)
-- [`func floor(x: Num -> Num)`](#`floor)
-- [`func format(n: Num, precision: Int = 0 -> Text)`](#`format)
-- [`func hypot(x: Num, y: Num -> Num)`](#`hypot)
-- [`func isfinite(n: Num -> Bool)`](#`isfinite)
-- [`func isinf(n: Num -> Bool)`](#`isinf)
-- [`func j0(x: Num -> Num)`](#`j0)
-- [`func j1(x: Num -> Num)`](#`j1)
-- [`func log(x: Num -> Num)`](#`log)
-- [`func log10(x: Num -> Num)`](#`log10)
-- [`func log1p(x: Num -> Num)`](#`log1p)
-- [`func log2(x: Num -> Num)`](#`log2)
-- [`func logb(x: Num -> Num)`](#`logb)
-- [`func mix(amount: Num, x: Num, y: Num -> Num)`](#`mix)
-- [`func near(x: Num, y: Num, ratio: Num = 1e-9, min_epsilon: Num = 1e-9 -> Bool)`](#`near)
-- [`func nextafter(x: Num, y: Num -> Num)`](#`nextafter)
-- [`func parse(text: Text -> Num?)`](#`parse)
-- [`func rint(x: Num -> Num)`](#`rint)
-- [`func round(x: Num -> Num)`](#`round)
-- [`func scientific(n: Num, precision: Int = 0 -> Text)`](#`scientific)
-- [`func significand(x: Num -> Num)`](#`significand)
-- [`func sin(x: Num -> Num)`](#`sin)
-- [`func sinh(x: Num -> Num)`](#`sinh)
-- [`func sqrt(x: Num -> Num)`](#`sqrt)
-- [`func tan(x: Num -> Num)`](#`tan)
-- [`func tanh(x: Num -> Num)`](#`tanh)
-- [`func tgamma(x: Num -> Num)`](#`tgamma)
-- [`func trunc(x: Num -> Num)`](#`trunc)
-- [`func y0(x: Num -> Num)`](#`y0)
-- [`func y1(x: Num -> Num)`](#`y1)
+- [`func abs(n: Num -> Num)`](#abs)
+- [`func acos(x: Num -> Num)`](#acos)
+- [`func acosh(x: Num -> Num)`](#acosh)
+- [`func asin(x: Num -> Num)`](#asin)
+- [`func asinh(x: Num -> Num)`](#asinh)
+- [`func atan(x: Num -> Num)`](#atan)
+- [`func atan2(x: Num, y: Num -> Num)`](#atan2)
+- [`func atanh(x: Num -> Num)`](#atanh)
+- [`func cbrt(x: Num -> Num)`](#cbrt)
+- [`func ceil(x: Num -> Num)`](#ceil)
+- [`clamped(x, low, high: Num -> Num)`](#clamped)
+- [`func copysign(x: Num, y: Num -> Num)`](#copysign)
+- [`func cos(x: Num -> Num)`](#cos)
+- [`func cosh(x: Num -> Num)`](#cosh)
+- [`func erf(x: Num -> Num)`](#erf)
+- [`func erfc(x: Num -> Num)`](#erfc)
+- [`func exp(x: Num -> Num)`](#exp)
+- [`func exp2(x: Num -> Num)`](#exp2)
+- [`func expm1(x: Num -> Num)`](#expm1)
+- [`func fdim(x: Num, y: Num -> Num)`](#fdim)
+- [`func floor(x: Num -> Num)`](#floor)
+- [`func format(n: Num, precision: Int = 0 -> Text)`](#format)
+- [`func hypot(x: Num, y: Num -> Num)`](#hypot)
+- [`func isfinite(n: Num -> Bool)`](#isfinite)
+- [`func isinf(n: Num -> Bool)`](#isinf)
+- [`func j0(x: Num -> Num)`](#j0)
+- [`func j1(x: Num -> Num)`](#j1)
+- [`func log(x: Num -> Num)`](#log)
+- [`func log10(x: Num -> Num)`](#log10)
+- [`func log1p(x: Num -> Num)`](#log1p)
+- [`func log2(x: Num -> Num)`](#log2)
+- [`func logb(x: Num -> Num)`](#logb)
+- [`func mix(amount: Num, x: Num, y: Num -> Num)`](#mix)
+- [`func near(x: Num, y: Num, ratio: Num = 1e-9, min_epsilon: Num = 1e-9 -> Bool)`](#near)
+- [`func nextafter(x: Num, y: Num -> Num)`](#nextafter)
+- [`func parse(text: Text -> Num?)`](#parse)
+- [`func rint(x: Num -> Num)`](#rint)
+- [`func round(x: Num -> Num)`](#round)
+- [`func scientific(n: Num, precision: Int = 0 -> Text)`](#scientific)
+- [`func significand(x: Num -> Num)`](#significand)
+- [`func sin(x: Num -> Num)`](#sin)
+- [`func sinh(x: Num -> Num)`](#sinh)
+- [`func sqrt(x: Num -> Num)`](#sqrt)
+- [`func tan(x: Num -> Num)`](#tan)
+- [`func tanh(x: Num -> Num)`](#tanh)
+- [`func tgamma(x: Num -> Num)`](#tgamma)
+- [`func trunc(x: Num -> Num)`](#trunc)
+- [`func y0(x: Num -> Num)`](#y0)
+- [`func y1(x: Num -> Num)`](#y1)
### `abs`
diff --git a/docs/paths.md b/docs/paths.md
index d361b832..730eb496 100644
--- a/docs/paths.md
+++ b/docs/paths.md
@@ -37,32 +37,32 @@ intended. Paths can be created from text with slashes using
## Path Methods
-- [`func append(path: Path, text: Text, permissions: Int32 = 0o644[32] -> Void)`](#`append)
-- [`func append_bytes(path: Path, bytes: [Byte], permissions: Int32 = 0o644[32] -> Void)`](#`append_bytes)
-- [`func base_name(path: Path -> Text)`](#`base_name)
-- [`func by_line(path: Path -> func(->Text?)?)`](#`by_line)
-- [`func children(path: Path, include_hidden=no -> [Path])`](#`children)
-- [`func create_directory(path: Path, permissions=0o755[32] -> Void)`](#`create_directory)
-- [`func exists(path: Path -> Bool)`](#`exists)
-- [`func extension(path: Path, full=yes -> Text)`](#`extension)
-- [`func files(path: Path, include_hidden=no -> [Path])`](#`files)
-- [`func glob(path: Path -> [Path])`](#`glob)
-- [`func is_directory(path: Path, follow_symlinks=yes -> Bool)`](#`is_directory)
-- [`func is_file(path: Path, follow_symlinks=yes -> Bool)`](#`is_file)
-- [`func is_socket(path: Path, follow_symlinks=yes -> Bool)`](#`is_socket)
-- [`func is_symlink(path: Path -> Bool)`](#`is_symlink)
-- [`func parent(path: Path -> Path)`](#`parent)
-- [`func read(path: Path -> Text?)`](#`read)
-- [`func read_bytes(path: Path -> [Byte]?)`](#`read_bytes)
-- [`func relative(path: Path, relative_to=(./) -> Path)`](#`relative)
-- [`func remove(path: Path, ignore_missing=no -> Void)`](#`remove)
-- [`func resolved(path: Path, relative_to=(./) -> Path)`](#`resolved)
-- [`func subdirectories(path: Path, include_hidden=no -> [Path])`](#`subdirectories)
-- [`func unique_directory(path: Path -> Path)`](#`unique_directory)
-- [`func write(path: Path, text: Text, permissions=0o644[32] -> Void)`](#`write)
-- [`func write(path: Path, bytes: [Byte], permissions=0o644[32] -> Void)`](#`write_bytes)
-- [`func write_unique(path: Path, text: Text -> Path)`](#`write_unique)
-- [`func write_unique_bytes(path: Path, bytes: [Byte] -> Path)`](#`write_unique_bytes)
+- [`func append(path: Path, text: Text, permissions: Int32 = 0o644[32] -> Void)`](#append)
+- [`func append_bytes(path: Path, bytes: [Byte], permissions: Int32 = 0o644[32] -> Void)`](#append_bytes)
+- [`func base_name(path: Path -> Text)`](#base_name)
+- [`func by_line(path: Path -> func(->Text?)?)`](#by_line)
+- [`func children(path: Path, include_hidden=no -> [Path])`](#children)
+- [`func create_directory(path: Path, permissions=0o755[32] -> Void)`](#create_directory)
+- [`func exists(path: Path -> Bool)`](#exists)
+- [`func extension(path: Path, full=yes -> Text)`](#extension)
+- [`func files(path: Path, include_hidden=no -> [Path])`](#files)
+- [`func glob(path: Path -> [Path])`](#glob)
+- [`func is_directory(path: Path, follow_symlinks=yes -> Bool)`](#is_directory)
+- [`func is_file(path: Path, follow_symlinks=yes -> Bool)`](#is_file)
+- [`func is_socket(path: Path, follow_symlinks=yes -> Bool)`](#is_socket)
+- [`func is_symlink(path: Path -> Bool)`](#is_symlink)
+- [`func parent(path: Path -> Path)`](#parent)
+- [`func read(path: Path -> Text?)`](#read)
+- [`func read_bytes(path: Path -> [Byte]?)`](#read_bytes)
+- [`func relative(path: Path, relative_to=(./) -> Path)`](#relative)
+- [`func remove(path: Path, ignore_missing=no -> Void)`](#remove)
+- [`func resolved(path: Path, relative_to=(./) -> Path)`](#resolved)
+- [`func subdirectories(path: Path, include_hidden=no -> [Path])`](#subdirectories)
+- [`func unique_directory(path: Path -> Path)`](#unique_directory)
+- [`func write(path: Path, text: Text, permissions=0o644[32] -> Void)`](#write)
+- [`func write(path: Path, bytes: [Byte], permissions=0o644[32] -> Void)`](#write_bytes)
+- [`func write_unique(path: Path, text: Text -> Path)`](#write_unique)
+- [`func write_unique_bytes(path: Path, bytes: [Byte] -> Path)`](#write_unique_bytes)
### `append`
diff --git a/docs/rng.md b/docs/rng.md
index 306f2015..58807ae9 100644
--- a/docs/rng.md
+++ b/docs/rng.md
@@ -19,14 +19,14 @@ This documentation provides details on RNG functions available in the API.
[Arrays](arrays.md) also have some methods which use RNG values:
`array:shuffle()`, `array:shuffled()`, `array:random()`, and `array:sample()`.
-- [`func bool(rng: RNG, p: Num = 0.5 -> Bool)`](#`bool)
-- [`func byte(rng: RNG -> Byte)`](#`byte)
-- [`func bytes(rng: RNG, count: Int -> [Byte])`](#`bytes)
-- [`func copy(rng: RNG -> RNG)`](#`copy)
-- [`func int(rng: RNG, min: Int, max: Int -> Int)`](#`int`, `int64`, `int32`, `int16`, `int8)
-- [`func new(seed: [Byte] = (/dev/urandom):read_bytes(40)! -> RNG)`](#`new)
-- [`func num(rng: RNG, min: Num = 0.0, max: Num = 1.0 -> Int)`](#`num`, `num32)
-- [`func set_seed(rng: RNG, seed: [Byte])`](#`set_seed)
+- [`func bool(rng: RNG, p: Num = 0.5 -> Bool)`](#bool)
+- [`func byte(rng: RNG -> Byte)`](#byte)
+- [`func bytes(rng: RNG, count: Int -> [Byte])`](#bytes)
+- [`func copy(rng: RNG -> RNG)`](#copy)
+- [`func int(rng: RNG, min: Int, max: Int -> Int)`](#int`, `int64`, `int32`, `int16`, `int8)
+- [`func new(seed: [Byte] = (/dev/urandom):read_bytes(40)! -> RNG)`](#new)
+- [`func num(rng: RNG, min: Num = 0.0, max: Num = 1.0 -> Int)`](#num`, `num32)
+- [`func set_seed(rng: RNG, seed: [Byte])`](#set_seed)
### `bool`
diff --git a/docs/sets.md b/docs/sets.md
index 83e5cd92..494029d9 100644
--- a/docs/sets.md
+++ b/docs/sets.md
@@ -75,17 +75,17 @@ iterating over any of the new values.
## Set Methods
-- [`func add(set:{T}, item: T -> Void)`](#`add)
-- [`func add_all(set:@{T}, items: [T] -> Void)`](#`add_all)
-- [`func clear(set:@{T} -> Void)`](#`clear)
-- [`func has(set:{T}, item:T -> Bool)`](#`has)
-- [`func (set: {T}, other: {T}, strict: Bool = no -> Bool)`](#`is_subset_of)
-- [`func is_superset_of(set:{T}, other: {T}, strict: Bool = no -> Bool)`](#`is_superset_of)
-- [`func overlap(set:{T}, other: {T} -> {T})`](#`overlap)
-- [`func remove(set:@{T}, item: T -> Void)`](#`remove)
-- [`func remove_all(set:@{T}, items: [T] -> Void)`](#`remove_all)
-- [`func with(set:{T}, other: {T} -> {T})`](#`with)
-- [`func without(set:{T}, other: {T} -> {T})`](#`without)
+- [`func add(set:{T}, item: T -> Void)`](#add)
+- [`func add_all(set:@{T}, items: [T] -> Void)`](#add_all)
+- [`func clear(set:@{T} -> Void)`](#clear)
+- [`func has(set:{T}, item:T -> Bool)`](#has)
+- [`func (set: {T}, other: {T}, strict: Bool = no -> Bool)`](#is_subset_of)
+- [`func is_superset_of(set:{T}, other: {T}, strict: Bool = no -> Bool)`](#is_superset_of)
+- [`func overlap(set:{T}, other: {T} -> {T})`](#overlap)
+- [`func remove(set:@{T}, item: T -> Void)`](#remove)
+- [`func remove_all(set:@{T}, items: [T] -> Void)`](#remove_all)
+- [`func with(set:{T}, other: {T} -> {T})`](#with)
+- [`func without(set:{T}, other: {T} -> {T})`](#without)
### `add`
diff --git a/docs/shell.md b/docs/shell.md
index 8ca8fa2d..5f65c9e1 100644
--- a/docs/shell.md
+++ b/docs/shell.md
@@ -13,10 +13,10 @@ user-controlled string is automatically escaped when performing interpolation.
## Shell Methods
-- [`func by_line(command: Shell -> Void)`](#`by_line)
-- [`func execute(command: Shell -> Int32?)`](#`execute)
-- [`func run(command: Shell -> Text?)`](#`run)
-- [`func run(command: Shell -> [Byte]?)`](#`run_bytes)
+- [`func by_line(command: Shell -> Void)`](#by_line)
+- [`func execute(command: Shell -> Int32?)`](#execute)
+- [`func run(command: Shell -> Text?)`](#run)
+- [`func run(command: Shell -> [Byte]?)`](#run_bytes)
### `by_line`
diff --git a/docs/tables.md b/docs/tables.md
index bb57a972..d24c719d 100644
--- a/docs/tables.md
+++ b/docs/tables.md
@@ -133,12 +133,12 @@ iterating over any of the new values.
## Table Methods
-- [`func bump(t:@{K,V}, key: K, amount: Int = 1 -> Void)`](#`bump)
-- [`func clear(t:@{K,V})`](#`clear)
-- [`func get(t:{K,V}, key: K -> V?)`](#`get)
-- [`func has(t:{K,V}, key: K -> Bool)`](#`has)
-- [`func remove(t:{K,V}, key: K -> Void)`](#`remove)
-- [`func set(t:{K,V}, key: K, value: V -> Void)`](#`set)
+- [`func bump(t:@{K,V}, key: K, amount: Int = 1 -> Void)`](#bump)
+- [`func clear(t:@{K,V})`](#clear)
+- [`func get(t:{K,V}, key: K -> V?)`](#get)
+- [`func has(t:{K,V}, key: K -> Bool)`](#has)
+- [`func remove(t:{K,V}, key: K -> Void)`](#remove)
+- [`func set(t:{K,V}, key: K, value: V -> Void)`](#set)
### `bump`
diff --git a/docs/text.md b/docs/text.md
index 67f65f91..f06c303b 100644
--- a/docs/text.md
+++ b/docs/text.md
@@ -270,41 +270,41 @@ pattern documentation](patterns.md) for more details.
## Text Functions
-- [`func as_c_string(text: Text -> CString)`](#`as_c_string)
-- [`func at(text: Text, index: Int -> Text)`](#`at)
-- [`func by_line(text: Text -> func(->Text?))`](#`by_line)
-- [`func by_match(text: Text, pattern: Pattern -> func(->Match?))`](#`by_match)
-- [`func by_split(text: Text, pattern: Pattern = $// -> func(->Text?))`](#`by_split)
-- [`func bytes(text: Text -> [Byte])`](#`bytes)
-- [`func codepoint_names(text: Text -> [Text])`](#`codepoint_names)
-- [`func each(text: Text, pattern: Pattern, fn: func(m: Match), recursive: Bool = yes -> Int?)`](#`each)
-- [`func ends_with(text: Text, suffix: Text -> Bool)`](#`ends_with)
-- [`func find(text: Text, pattern: Pattern, start: Int = 1 -> Int?)`](#`find)
-- [`func find_all(text: Text, pattern: Pattern -> [Match])`](#`find_all)
-- [`func from(text: Text, first: Int -> Text)`](#`from)
-- [`func from_codepoint_names(codepoints: [Int32] -> [Text])`](#`from_bytes)
-- [`func from_c_string(str: CString -> Text)`](#`from_c_string)
-- [`func from_codepoint_names(codepoint_names: [Text] -> [Text])`](#`from_codepoint_names)
-- [`func from_codepoint_names(codepoints: [Int32] -> [Text])`](#`from_codepoints)
-- [`func has(text: Text, pattern: Pattern -> Bool)`](#`has)
-- [`func join(glue: Text, pieces: [Text] -> Text)`](#`join)
-- [`func split(text: Text -> [Text])`](#`lines)
-- [`func lower(text: Text -> Text)`](#`lower)
-- [`func map(text: Text, pattern: Pattern, fn: func(text:Match)->Text -> Text, recursive: Bool = yes)`](#`map)
-- [`func matches(text: Text, pattern: Pattern -> [Text])`](#`matches)
-- [`func quoted(text: Text, color: Bool = no -> Text)`](#`quoted)
-- [`func repeat(text: Text, count:Int -> Text)`](#`repeat)
-- [`func replace(text: Text, pattern: Pattern, replacement: Text, backref: Pattern = $/\/, recursive: Bool = yes -> Text)`](#`replace)
-- [`func replace_all(replacements:{Pattern,Text}, backref: Pattern = $/\/, recursive: Bool = yes -> Text)`](#`replace_all)
-- [`func reversed(text: Text -> Text)`](#`reversed)
-- [`func slice(text: Text, from: Int = 1, to: Int = -1 -> Text)`](#`slice)
-- [`func split(text: Text, pattern: Pattern = "" -> [Text])`](#`split)
-- [`func starts_with(text: Text, prefix: Text -> Bool)`](#`starts_with)
-- [`func title(text: Text -> Text)`](#`title)
-- [`func to(text: Text, last: Int -> Text)`](#`to)
-- [`func trim(text: Text, pattern: Pattern = $/{whitespace/, trim_left: Bool = yes, trim_right: Bool = yes -> Text)`](#`trim)
-- [`func upper(text: Text -> Text)`](#`upper)
-- [`func utf32_codepoints(text: Text -> [Int32])`](#`utf32_codepoints)
+- [`func as_c_string(text: Text -> CString)`](#as_c_string)
+- [`func at(text: Text, index: Int -> Text)`](#at)
+- [`func by_line(text: Text -> func(->Text?))`](#by_line)
+- [`func by_match(text: Text, pattern: Pattern -> func(->Match?))`](#by_match)
+- [`func by_split(text: Text, pattern: Pattern = $// -> func(->Text?))`](#by_split)
+- [`func bytes(text: Text -> [Byte])`](#bytes)
+- [`func codepoint_names(text: Text -> [Text])`](#codepoint_names)
+- [`func each(text: Text, pattern: Pattern, fn: func(m: Match), recursive: Bool = yes -> Int?)`](#each)
+- [`func ends_with(text: Text, suffix: Text -> Bool)`](#ends_with)
+- [`func find(text: Text, pattern: Pattern, start: Int = 1 -> Int?)`](#find)
+- [`func find_all(text: Text, pattern: Pattern -> [Match])`](#find_all)
+- [`func from(text: Text, first: Int -> Text)`](#from)
+- [`func from_codepoint_names(codepoints: [Int32] -> [Text])`](#from_bytes)
+- [`func from_c_string(str: CString -> Text)`](#from_c_string)
+- [`func from_codepoint_names(codepoint_names: [Text] -> [Text])`](#from_codepoint_names)
+- [`func from_codepoint_names(codepoints: [Int32] -> [Text])`](#from_codepoints)
+- [`func has(text: Text, pattern: Pattern -> Bool)`](#has)
+- [`func join(glue: Text, pieces: [Text] -> Text)`](#join)
+- [`func split(text: Text -> [Text])`](#lines)
+- [`func lower(text: Text -> Text)`](#lower)
+- [`func map(text: Text, pattern: Pattern, fn: func(text:Match)->Text -> Text, recursive: Bool = yes)`](#map)
+- [`func matches(text: Text, pattern: Pattern -> [Text])`](#matches)
+- [`func quoted(text: Text, color: Bool = no -> Text)`](#quoted)
+- [`func repeat(text: Text, count:Int -> Text)`](#repeat)
+- [`func replace(text: Text, pattern: Pattern, replacement: Text, backref: Pattern = $/\/, recursive: Bool = yes -> Text)`](#replace)
+- [`func replace_all(replacements:{Pattern,Text}, backref: Pattern = $/\/, recursive: Bool = yes -> Text)`](#replace_all)
+- [`func reversed(text: Text -> Text)`](#reversed)
+- [`func slice(text: Text, from: Int = 1, to: Int = -1 -> Text)`](#slice)
+- [`func split(text: Text, pattern: Pattern = "" -> [Text])`](#split)
+- [`func starts_with(text: Text, prefix: Text -> Bool)`](#starts_with)
+- [`func title(text: Text -> Text)`](#title)
+- [`func to(text: Text, last: Int -> Text)`](#to)
+- [`func trim(text: Text, pattern: Pattern = $/{whitespace/, trim_left: Bool = yes, trim_right: Bool = yes -> Text)`](#trim)
+- [`func upper(text: Text -> Text)`](#upper)
+- [`func utf32_codepoints(text: Text -> [Int32])`](#utf32_codepoints)
### `as_c_string`
diff --git a/docs/threads.md b/docs/threads.md
index 1ccacc38..67402ecc 100644
--- a/docs/threads.md
+++ b/docs/threads.md
@@ -6,10 +6,10 @@ through [mutex-guarded datastructures](mutexed.md).
## Thread Methods
-- [`func cancel(thread: Thread)`](#`cancel)
-- [`func detach(thread: Thread)`](#`detach)
-- [`func join(thread: Thread)`](#`join)
-- [`func new(fn: func(->Void) -> Thread)`](#`new)
+- [`func cancel(thread: Thread)`](#cancel)
+- [`func detach(thread: Thread)`](#detach)
+- [`func join(thread: Thread)`](#join)
+- [`func new(fn: func(->Void) -> Thread)`](#new)
### `cancel`