@USE JSHttpRequest.p ########################################################################### # I put methods from Sergey M. in class JSHttpRequest.p and make this file # for compare results (for prevent my stupid mistakes while modifications) @main[] $s[] $t[^table::create{a b}] $h[^hash::create[]] $b(^math:random(100) > 50) $i(5) $d(1.5) $s[^math:md5[^math:random(100)]] $dt[^date::now[]] $t[^table::create{a b^#0Aa1 b1^#0Aa2 b2}] $h[ $.1(1==1) $.2(1==1) ] $h[ $.1(1==1) $.2(1==0) ] $h[ $.1[a] $.2[b] $.3[] $.4[$dt] ] $h[ $.1[a] $.2[ $.3[c] $.4[d] ] ]
Type Origin methods JSHttpRequest.p
void ^object2js[] ^JSHttpRequest:_object2js[]
empty string ^object2js[$s] ^JSHttpRequest:_object2js[$s]
empty table ^object2js[$t] ^JSHttpRequest:_object2js[$t]
empty hash ^object2js[$h] ^JSHttpRequest:_object2js[$h]
bool ^object2js($b) ^JSHttpRequest:_object2js($b)
int ^object2js($i) ^JSHttpRequest:_object2js($i)
double ^object2js($d) ^JSHttpRequest:_object2js($d)
string ^object2js[$s] ^JSHttpRequest:_object2js[$s]
date ^object2js[$dt] ^JSHttpRequest:_object2js[$dt]
table ^object2js[$t] ^JSHttpRequest:_object2js[$t]
hash of bool ^object2js[$h] ^JSHttpRequest:_object2js[$h]
hash of bool ^object2js[$h] ^JSHttpRequest:_object2js[$h]
simple hash ^object2js[$h] ^JSHttpRequest:_object2js[$h]
hash ^object2js[$h] ^JSHttpRequest:_object2js[$h]
# copy/paste methods by Sergey M. from this location: http://www.parser.ru/forum/?id=41408 ########################################################################### @object2js[test] ^if($test is void && ^return[null] || $test is bool && ($test && ^return[true] || ^return[false]) || $test is string && ^return['^taint[js][$test]'] || ($test is int || $test is double) && ^return[$test] || $test is hash && ($test && ^return[^_hash2js[$test]] || ^return[null]) || $test is table && ($test && ^return[^_table2js[$test]] || ^return[null]) || $test is date && ^return[new Date(^test.unix-timestamp[]000)] ){}{ ^return[null] } ########################################################################### @return[type] $caller.result[$type] $result(1) ########################################################################### @_hash2js[hash] # проверяем, а не hash ли это of bool ^if(^hash.foreach[;v]{^if($v is bool && $v;0;1)}){ # если не он - возвращаем ассоциативный массив (хеш) $result[^{^hash.foreach[k;v]{'^taint[js][$k]': ^if($v is bool || $v is int || $v is double){^object2js($v)}{^object2js[$v]}}[, ]^}] }{ # если, таки, он - возвращаем нумерованый $result[^[^hash.foreach[key;]{'^taint[js][$key]'}[, ]^]] } ########################################################################### @_table2js[table][keys] $keys[^table.columns[]] ^if($keys){ $result[^[^table.menu{^{^keys.menu{'^taint[js][$keys.column]':'^taint[js][$table.[$keys.column]]'}[, ]^}}[, ]^]] }{ # nameless tables are deprecated! $result[null] }