Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- proc jsiJsonVar {str args} {
- return [::CmmJavascriptIncludeApi::jsiJsonVar $str $args]
- }
- namespace eval ::CmmJavascriptIncludeApi {
- proc jsiJsonVar {data {opts ""}} {
- set res ""
- set keysType [_getArgValue "keys" $opts]
- set valuesType [_getArgValue "values" $opts]
- # by default, keys are strings
- if {[string length $keysType] == 0} {
- set keysType "string"
- }
- # by default, values are raw
- if {[string length $valuesType] == 0} {
- set valuesType "raw"
- }
- if {[lsearch -exact $opts "-string"] >= 0} {
- set res [ecJsEscapeQuoteDollar $data]
- } elseif {[lsearch -exact $opts "-number"] >= 0} {
- set res [ecJsEscapeDollar $data]
- } elseif {[lsearch -exact $opts "-boolean"] >= 0} {
- set res [expr {$data == 1 ? "true" : "false"}]
- } elseif {[lsearch -exact $opts "-array"] >= 0} {
- set res "\\[[join $data ,]\\]"
- } elseif {[lsearch -exact $opts "-object"] >= 0} {
- set obj [list]
- foreach {key value} $data {
- set key [jsiJsonVar $key -${keysType}]
- set value [jsiJsonVar $value -${valuesType}]
- lappend obj "${key}:${value}"
- }
- set res "\\{[join $obj ,]\\}"
- } elseif {[lsearch -exact $opts "-raw"] >= 0} {
- set res $data
- } else {
- # default type is -string
- set res [jsiJsonVar $data -string]
- }
- return $res
- }
- proc _getArgValue {name opts} {
- set res ""
- if {[set index [lsearch -glob $opts "--${name}=*"]] >= 0} {
- set res [lindex [split [lindex $opts $index] =] 1]
- }
- return $res
- }
- }
Add Comment
Please, Sign In to add comment