mirror of
https://github.com/NixOS/nix.git
synced 2025-11-20 01:09:37 +01:00
Systematize builtins.fetchTree docs
And also render the docs nicely. I would like to use a markdown AST for this, but to avoid new deps (lowdown's AST doesn't suffice) I am just doing crude string manipulations for now.
This commit is contained in:
parent
2cc0b1b404
commit
bae1ca257a
12 changed files with 583 additions and 291 deletions
|
|
@ -517,15 +517,16 @@ Value * EvalState::addPrimOp(PrimOp && primOp)
|
|||
if (primOp.arity == 0) {
|
||||
primOp.arity = 1;
|
||||
auto vPrimOp = allocValue();
|
||||
vPrimOp->mkPrimOp(new PrimOp(primOp));
|
||||
vPrimOp->mkPrimOp(new PrimOp(std::move(primOp)));
|
||||
Value v;
|
||||
v.mkApp(vPrimOp, vPrimOp);
|
||||
auto & primOp1 = *vPrimOp->primOp();
|
||||
return addConstant(
|
||||
primOp.name,
|
||||
primOp1.name,
|
||||
v,
|
||||
{
|
||||
.type = nThunk, // FIXME
|
||||
.doc = primOp.doc,
|
||||
.doc = primOp1.doc ? primOp1.doc->c_str() : nullptr,
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -565,13 +566,14 @@ std::optional<EvalState::Doc> EvalState::getDoc(Value & v)
|
|||
{
|
||||
if (v.isPrimOp()) {
|
||||
auto v2 = &v;
|
||||
if (auto * doc = v2->primOp()->doc)
|
||||
auto & primOp = *v2->primOp();
|
||||
if (primOp.doc)
|
||||
return Doc{
|
||||
.pos = {},
|
||||
.name = v2->primOp()->name,
|
||||
.arity = v2->primOp()->arity,
|
||||
.args = v2->primOp()->args,
|
||||
.doc = doc,
|
||||
.name = primOp.name,
|
||||
.arity = primOp.arity,
|
||||
.args = primOp.args,
|
||||
.doc = primOp.doc->c_str(),
|
||||
};
|
||||
}
|
||||
if (v.isLambda()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue