@@ -22,7 +22,7 @@ x[Colon(),1][2]
22
22
julia> vn.indexing
23
23
((Colon(), 1), (2,))
24
24
25
- julia> VarName(DynamicPPL .@vsym(x[:, 1][1+1]), DynamicPPL .@vinds(x[:, 1][1+1]))
25
+ julia> VarName(AbstractPPL .@vsym(x[:, 1][1+1]), AbstractPPL .@vinds(x[:, 1][1+1]))
26
26
x[Colon(),1][2]
27
27
```
28
28
"""
@@ -253,7 +253,7 @@ varname(expr::Symbol) = VarName(expr)
253
253
function varname (expr:: Expr )
254
254
if Meta. isexpr (expr, :ref )
255
255
sym, inds = vsym (expr), vinds (expr)
256
- return :($ (DynamicPPL . VarName)($ (QuoteNode (sym)), $ inds))
256
+ return :($ (AbstractPPL . VarName)($ (QuoteNode (sym)), $ inds))
257
257
else
258
258
throw (" Malformed variable name $(expr) !" )
259
259
end
@@ -266,15 +266,30 @@ end
266
266
A macro that returns the variable symbol given the input variable expression `expr`.
267
267
For example, `@vsym x[1]` returns `:x`.
268
268
269
+ ## Examples
270
+
269
271
```jldoctest
270
- julia> AbstractPPL.@vsym x[1]
272
+ julia> AbstractPPL.@vsym x
273
+ :x
274
+
275
+ julia> AbstractPPL.@vsym x[1,1][2,3]
276
+ :x
277
+
278
+ julia> AbstractPPL.@vsym x[end]
271
279
:x
272
280
```
273
281
"""
274
282
macro vsym (expr:: Union{Expr, Symbol} )
275
283
return QuoteNode (vsym (expr))
276
284
end
277
285
286
+ """
287
+ vsym(expr)
288
+
289
+ Return name part of the [`@varname`](@ref)-compatible expression `expr` as a symbol for input of the
290
+ [`VarName`](@ref) constructor."""
291
+ function vsym end
292
+
278
293
vsym (expr:: Symbol ) = expr
279
294
function vsym (expr:: Expr )
280
295
if Meta. isexpr (expr, :ref )
289
304
290
305
Returns a tuple of tuples of the indices in `expr`.
291
306
307
+ ## Examples
308
+
292
309
```jldoctest
293
- julia> AbstractPPL.@vinds x[1, :][2]
294
- ((1, Colon()), (2,))
310
+ julia> AbstractPPL.@vinds x
311
+ ()
312
+
313
+ julia> AbstractPPL.@vinds x[1,1][2,3]
314
+ ((1, 1), (2, 3))
315
+
316
+ julia> AbstractPPL.@vinds x[:,1][2,:]
317
+ ((Colon(), 1), (2, Colon()))
318
+
319
+ julia> AbstractPPL.@vinds x[2:3,1][2,1:2]
320
+ ((2:3, 1), (2, 1:2))
321
+
322
+ julia> AbstractPPL.@vinds x[2:3,2:3][[1,2],[1,2]]
323
+ ((2:3, 2:3), ([1, 2], [1, 2]))
295
324
```
296
325
297
326
!!! compat "Julia 1.5"
@@ -302,6 +331,25 @@ macro vinds(expr::Union{Expr, Symbol})
302
331
return esc (vinds (expr))
303
332
end
304
333
334
+
335
+ """
336
+ vinds(expr)
337
+
338
+ Return the indexing part of the [`@varname`](@ref)-compatible expression `expr` as an expression
339
+ suitable for input of the [`VarName`](@ref) constructor.
340
+
341
+ ## Examples
342
+
343
+ ```jldoctest
344
+ julia> AbstractPPL.vinds(:(x[end]))
345
+ :((((lastindex)(x),),))
346
+
347
+ julia> AbstractPPL.vinds(:(x[1, end]))
348
+ :(((1, (lastindex)(x, 2)),))
349
+ ```
350
+ """
351
+ function vinds end
352
+
305
353
vinds (expr:: Symbol ) = Expr (:tuple )
306
354
function vinds (expr:: Expr )
307
355
if Meta. isexpr (expr, :ref )
0 commit comments