scripted dict

Difference between version 0 and 1 - Previous - Next
A '''scripted [dict]''' is a [deep dict]  that is scripted in a manner similar to a [scripted list].


** See Also **
   `[ycl%|%ycl list deep dict]`:   Provides `scripted` for the purpose of scripting a deep dict.



** Description **

Because the structure of [deep dict] is well-defined, it can be scripted.  That
is, each value can be transformed in the same way that a [word] in a [command]
is transformed.


** Example **
Because a deep dict is also a deep list, the scripting routine comes from `ycl
list deep`.  Then the result is displayed as a deep dict using `ycl dict deep
pretty`

======#! /usr/bin/env tclsh

package require {ycl dict deep}
namespace import [yclprefix]::dict::deeprename deep ddeep
package require {ycl list deep}
namespace import [yclprefix]::list::deep
rename deep ldeep

set root /path/to/root
set servers {one two three}

set template {
    locations {
        tmp {{$root/var/tmp/$server}}
        pub {{$root/pub}}
        scripts {{$root/scripts}}
    }
}

foreach server $servers {
    set config $template    ldeep scripted config
    lappend configuration $server $config
}
ddeep pretty configuration indent {    }
pu
retsurn $configuration
======

'''output:'''

======none
one {
    locations {
        tmp /path/to/root/var/tmp/one
        pub /path/to/root/pub
        scripts /path/to/root/scripts
    }
}
two {
    locations {
        tmp /path/to/root/var/tmp/two
        pub /path/to/root/pub
        scripts /path/to/root/scripts
    }
}
three {
    locations {
        tmp /path/to/root/var/tmp/three
        pub /path/to/root/pub
        scripts /path/to/root/scripts
    }
}

======


<<categories>> deep dict | scripted list