Skip to content

Commit 9d0ff71

Browse files
committed
Document
1 parent a8890b6 commit 9d0ff71

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

docs/src/api.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ vsym
1414
@vsym
1515
```
1616

17+
## VarName prefixing and unprefixing
18+
19+
```@docs
20+
prefix
21+
unprefix
22+
```
23+
1724
## VarName serialisation
1825

1926
```@docs

src/varname.jl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,26 @@ function unprefix_optic(optic, optic_prefix)
10591059
return unprefix_optic(_outer(optic), _outer(optic_prefix))
10601060
end
10611061

1062+
"""
1063+
unprefix(vn::VarName, prefix::VarName)
1064+
1065+
Remove a prefix from a VarName.
1066+
1067+
```jldoctest
1068+
julia> AbstractPPL.unprefix(@varname(y.x), @varname(y))
1069+
x
1070+
1071+
julia> AbstractPPL.unprefix(@varname(y.x.a), @varname(y))
1072+
x.a
1073+
1074+
julia> AbstractPPL.unprefix(@varname(y[1].x), @varname(y[1]))
1075+
x
1076+
1077+
julia> AbstractPPL.unprefix(@varname(y), @varname(n))
1078+
ERROR: ArgumentError: could not remove prefix n from VarName y
1079+
[...]
1080+
```
1081+
"""
10621082
function unprefix(
10631083
vn::VarName{sym_vn}, prefix::VarName{sym_prefix}
10641084
) where {sym_vn,sym_prefix}
@@ -1071,6 +1091,22 @@ function unprefix(
10711091
return optic_to_vn(unprefix_optic(optic_vn, optic_prefix))
10721092
end
10731093

1094+
"""
1095+
prefix(vn::VarName, prefix::VarName)
1096+
1097+
Add a prefix to a VarName.
1098+
1099+
```jldoctest
1100+
julia> AbstractPPL.prefix(@varname(x), @varname(y))
1101+
y.x
1102+
1103+
julia> AbstractPPL.prefix(@varname(x.a), @varname(y))
1104+
y.x.a
1105+
1106+
julia> AbstractPPL.prefix(@varname(x.a), @varname(y[1]))
1107+
y[1].x.a
1108+
```
1109+
"""
10741110
function prefix(vn::VarName{sym_vn}, prefix::VarName{sym_prefix}) where {sym_vn,sym_prefix}
10751111
optic_vn = getoptic(vn)
10761112
optic_prefix = getoptic(prefix)

0 commit comments

Comments
 (0)