add attrset parsing example
This commit is contained in:
parent
0a589f38fe
commit
7027a29692
1 changed files with 48 additions and 2 deletions
50
README.md
50
README.md
|
|
@ -1,9 +1,9 @@
|
||||||
# ❄ NixTypes (nt) ❄
|
# ❄ NixTypes (nt) ❄
|
||||||
<p align="center">Because Nix doesn't hold your hand here, it shoots your fingers off and spits out the world's longest stack trace...</p>
|
<p align="center">Because Nix never held your hand. It shot off your fingers off and spat out God's longest stack trace</p>
|
||||||
|
|
||||||
>[!WARNING]
|
>[!WARNING]
|
||||||
> ✨ **Under Construction** ✨
|
> ✨ **Under Construction** ✨
|
||||||
> NixTypes is quite a large project to do alone, but it's been staring at me for the last 12 months.
|
> NixTypes is **quite** a large project to do alone, but it's been staring at me for the last 12 months.
|
||||||
> If you're interested feel free to contact me and/or submit pull requests :yellow_heart::yellow_heart:
|
> If you're interested feel free to contact me and/or submit pull requests :yellow_heart::yellow_heart:
|
||||||
> **Be not afraid!** It's only a matter of time until NixTypes is ready for use!
|
> **Be not afraid!** It's only a matter of time until NixTypes is ready for use!
|
||||||
|
|
||||||
|
|
@ -23,3 +23,49 @@ Some of the sweet sweet batteries included:
|
||||||
3. **Pretty Printing** (no more `builtins.toString` errors)
|
3. **Pretty Printing** (no more `builtins.toString` errors)
|
||||||
4. **A Module System** (say goodbye to managing all your `imports`)
|
4. **A Module System** (say goodbye to managing all your `imports`)
|
||||||
5. **Types, Types, & More Types** (Maybe/Some/None, Monads, Tree, Rose, etc)
|
5. **Types, Types, & More Types** (Maybe/Some/None, Monads, Tree, Rose, etc)
|
||||||
|
|
||||||
|
|
||||||
|
### ❄🎁 Parse the Parcel
|
||||||
|
*Close your eyes with me ok? MMmmmmmmmmm yes just like that...* **NOW** imagine
|
||||||
|
you're a moderately depressed and very sleepy programmer. You're reading a README.md
|
||||||
|
for a type system in Nix, I doubt it's that hard. Then **whoooshhh boooom**, Zeus
|
||||||
|
himself hath commended thee to fulfill his greatest ambition **OR DIE!!** You must
|
||||||
|
write a function taking an attribute set of the structure
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
a = { # optional
|
||||||
|
b = { # optional
|
||||||
|
c = ...; # optional (any type, default: null)
|
||||||
|
d = ...; # optional (string, default: "hola")
|
||||||
|
};
|
||||||
|
};
|
||||||
|
e = { # required
|
||||||
|
f = ...; # required (path)
|
||||||
|
g = ...; # optional (function, default: (x: x))
|
||||||
|
h = ...; # optional (string, default: "null")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Not having a great day now are you? It's doable and not overtly difficult,
|
||||||
|
but coming back in a couple months you'd have to decipher your solution.
|
||||||
|
**NOW BEHOLD:**
|
||||||
|
```nix
|
||||||
|
# nix made simple <3
|
||||||
|
f = attrs:
|
||||||
|
attrs
|
||||||
|
|> nt.projectOnto
|
||||||
|
{
|
||||||
|
a = {
|
||||||
|
b = {
|
||||||
|
c = null;
|
||||||
|
d = "hola";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
e = {
|
||||||
|
f = nt.missing "error message...";
|
||||||
|
g = x: x;
|
||||||
|
h = nt.verify null isString;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|> ...; # your logic here...
|
||||||
|
```
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue