Guest User

Untitled

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