Guest User

Untitled

a guest
Mar 2nd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 1.38 KB | None | 0 0
  1.     proc jsiJsonVar {data {opts ""}} {
  2.         set res ""
  3.        
  4.         set keysType    [_getArgValue "keys" $opts]
  5.         set valuesType  [_getArgValue "values" $opts]
  6.        
  7.         # by default, keys are strings
  8.         if {[string length $keysType] == 0} {
  9.             set keysType "string"
  10.         }
  11.         # by default, values are raw
  12.         if {[string length $valuesType] == 0} {
  13.             set valuesType "raw"
  14.         }
  15.        
  16.         if {[lsearch -exact $opts "-string"] >= 0} {
  17.             set res [ecJsEscapeQuoteDollar $data]
  18.         } elseif {[lsearch -exact $opts "-number"] >= 0} {
  19.             set res [ecJsEscapeDollar $data]
  20.         } elseif {[lsearch -exact $opts "-boolean"] >= 0} {
  21.             set res [expr {$data == 1 ? "true" : "false"}]
  22.         } elseif {[lsearch -exact $opts "-array"] >= 0} {
  23.             set res "\\[[join $data ,]\\]"
  24.         } elseif {[lsearch -exact $opts "-object"] >= 0} {
  25.             set obj [list]
  26.             foreach {key value} $data {
  27.                 set key     [jsiJsonVar $key -${keysType}]
  28.                 set value   [jsiJsonVar $value -${valuesType}]
  29.                
  30.                 lappend obj "${key}:${value}"
  31.             }
  32.            
  33.             set res "\\{[join $obj ,]\\}"
  34.         } elseif {[lsearch -exact $opts "-raw"] >= 0} {
  35.             set res $data
  36.         } else {
  37.             # default type is -string
  38.             set res [jsiJsonVar $data -string]
  39.         }
  40.        
  41.         return $res
  42.     }
  43.    
  44.     proc _getArgValue {name opts} {
  45.         set res ""
  46.        
  47.         if {[set index [lsearch -glob $opts "--${name}=*"]] >= 0} {
  48.             set res [lindex [split [lindex $opts $index] =] 1]
  49.         }
  50.        
  51.         return $res
  52.     }
Add Comment
Please, Sign In to add comment