Skip to content

Commit 553ec66

Browse files
committed
stdlib: better docs generation
1 parent 282caeb commit 553ec66

12 files changed

+96
-11
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- lsp: fix logging too many errors
88
- fix: extern docs generation
99
- stdlib: new markup and markdown library
10+
- stdlib: better docs generation
1011

1112
## v0.0.13
1213

stdlib/optionals.md

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ _module_
1212
## Optional
1313

1414
_enum_
15+
An optional value. Either some value or none.
1516

1617
### Cases
1718

stdlib/prelude.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ _data_
121121
## Optional
122122

123123
_enum_
124+
An optional value. Either some value or none.
124125

125126
### Cases
126127

@@ -150,7 +151,7 @@ _data_ A constant to represent valid conditions.
150151

151152
## Void
152153

153-
_data_ Representing a single value.
154+
_data_ Represents a single value.
154155

155156
## compose
156157

stdlib/prelude/optional.lithia

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module prelude
22

3+
/// An optional value. Either some value or none.
34
enum Optional {
45
data Some { value }
56
data None

stdlib/prelude/void.lithia

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
module prelude
22

3-
/// Representing a single value.
3+
/// Represents a single value.
44
data Void

stdlib/results.md

+16-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ _module_
1616

1717
## Failure
1818

19-
_data_
19+
_data_ Represents a failed result due to an error.
2020

2121
### Properties
2222

@@ -25,6 +25,20 @@ _data_
2525
## Result
2626

2727
_enum_
28+
A result of a failable operation.
29+
30+
```lithia
31+
func positive { n =>
32+
if n < 0,
33+
Failure "negative values not supported!",
34+
Success n
35+
}
36+
37+
with positive, type Result {
38+
Success: { success => print success.value },
39+
Failure: { failure => print strings.concat ["failed: ", failure.error] },
40+
}
41+
```
2842

2943
### Cases
3044

@@ -33,7 +47,7 @@ _enum_
3347

3448
## Success
3549

36-
_data_
50+
_data_ Represents a successful result with a value.
3751

3852
### Properties
3953

stdlib/results/functors.lithia

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module results
22

33
import controls
44

5+
/// A witness for controls.Functor for results.Result.
6+
/// In contrast to failureFunctor, implemented to map Success values.
57
let successFunctor = controls.Functor mapSuccess
68

79
func mapSuccess { transform, result =>
@@ -11,6 +13,8 @@ func mapSuccess { transform, result =>
1113
}
1214
}
1315

16+
/// A witness for controls.Functor for results.Result.
17+
/// In contrast to successFunctor, implemented to map Failure errors.
1418
let failureFunctor = controls.Functor mapFailure
1519

1620
func mapFailure { transform, result =>
@@ -20,5 +24,7 @@ func mapFailure { transform, result =>
2024
}
2125
}
2226

27+
/// The default witness for controls.Functor for results.Result.
28+
/// Is equal to successFunctor.
2329
let functor = successFunctor
2430
let map = mapSuccess

stdlib/results/monads.lithia

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module results
22

33
import controls
44

5+
/// A witness for controls.Monad for results.Result.
6+
/// In contrast to failureMonad, implemented to map Success values.
57
let successMonad = controls.Monad pureSuccess, flatMapSuccess
68

79
func pureSuccess { value =>
@@ -15,6 +17,9 @@ func flatMapSuccess { transform, result =>
1517
}
1618
}
1719

20+
21+
/// A witness for controls.Monad for results.Result.
22+
/// In contrast to successMonad, implemented to map Failure errors.
1823
let failureMonad = controls.Monad pureFailure, flatMapFailure
1924

2025
func pureFailure { error =>

stdlib/results/result.lithia

+16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
11
module results
22

3+
/// A result of a failable operation.
4+
///
5+
/// ```lithia
6+
/// func positive { n =>
7+
/// if n < 0,
8+
/// Failure "negative values not supported!",
9+
/// Success n
10+
/// }
11+
///
12+
/// with positive, type Result {
13+
/// Success: { success => print success.value },
14+
/// Failure: { failure => print strings.concat ["failed: ", failure.error] },
15+
/// }
16+
/// ```
317
enum Result {
18+
/// Represents a successful result with a value.
419
data Success { value }
20+
/// Represents a failed result due to an error.
521
data Failure { error }
622
}

stdlib/rx.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ _module_
77
## Variable
88

99
_extern_
10+
Holds a value and enables replacing it.
11+
Planned to propagate value changes to observers, but not implemented, yet.
1012

1113
### Properties
1214

13-
- `accept value`
14-
- `current`
15+
- `accept value` - Changes the currently hold value of the variable.
16+
- `current` - Returns the currently hold value.
1517

stdlib/rx/variable.lithia

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
module rx
22

3+
/// Holds a value and enables replacing it.
4+
/// Planned to propagate value changes to observers, but not implemented, yet.
35
extern Variable {
4-
// Changes the currently hold value of the variable.
6+
/// Changes the currently hold value of the variable.
57
accept value
6-
// Returns the currently hold value.
8+
/// Returns the currently hold value.
79
current
810
}

stdlib/stdlib-write-docs.lithia

+39-3
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,51 @@ data GroupedModuleDocs {
5151
func main { grouped =>
5252
let modules = grouped.modules
5353
let docsFolder = optionals.orDefault "./stdlib", os.env "LITHIA_EXPORT_DOCS"
54+
let successes = rx.Variable 0
55+
let failures = rx.Variable 0
56+
5457
lists.forEach modules, pipe [
5558
docs.inspect,
5659
writeModuleMarkdownDocs docsFolder,
57-
print
60+
type results.Result {
61+
Success: { success =>
62+
successes.accept successes.current+1
63+
},
64+
Failure: { failure =>
65+
failures.accept failures.current+1
66+
print strings.concat [
67+
"failed: ",
68+
failure.error,
69+
]
70+
}
71+
}
5872
]
59-
print (writeOverview docsFolder, grouped, (pipe [
73+
74+
let overviewResult = writeOverview docsFolder, grouped, (pipe [
6075
lists.map docs.inspect,
6176
lists.map { mod => mod.name }
62-
], grouped.modules))
77+
], grouped.modules)
78+
with overviewResult, type results.Result {
79+
Success: { success =>
80+
successes.accept successes.current+1
81+
},
82+
Failure: { failure =>
83+
failures.accept failures.current+1
84+
print strings.concat [
85+
"failed: ",
86+
failure.error,
87+
]
88+
},
89+
}
90+
91+
print strings.concat [
92+
"Finished: ",
93+
successes.current,
94+
" successful / ",
95+
failures.current,
96+
" failed"
97+
]
98+
when failures.current > 0, os.exit 1,
6399
}
64100

65101
main (GroupedModuleDocs "Lithia Standard Library",

0 commit comments

Comments
 (0)