@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[]
Type |
Origin methods |
JSHttpRequest.p |
void |
^object2js[] |
^JSHttpRequest:_object2js[] |
$s[]
empty string |
^object2js[$s] |
^JSHttpRequest:_object2js[$s] |
$t[^table::create{a b}]
empty table |
^object2js[$t] |
^JSHttpRequest:_object2js[$t] |
$h[^hash::create[]]
empty hash |
^object2js[$h] |
^JSHttpRequest:_object2js[$h] |
$b(^math:random(100) > 50)
bool |
^object2js($b) |
^JSHttpRequest:_object2js($b) |
$i(5)
int |
^object2js($i) |
^JSHttpRequest:_object2js($i) |
$d(1.5)
double |
^object2js($d) |
^JSHttpRequest:_object2js($d) |
$s[^math:md5[^math:random(100)]]
string |
^object2js[$s] |
^JSHttpRequest:_object2js[$s] |
$dt[^date::now[]]
date |
^object2js[$dt] |
^JSHttpRequest:_object2js[$dt] |
$t[^table::create{a b^#0Aa1 b1^#0Aa2 b2}]
table |
^object2js[$t] |
^JSHttpRequest:_object2js[$t] |
$h[
$.1(1==1)
$.2(1==1)
]
hash of bool |
^object2js[$h] |
^JSHttpRequest:_object2js[$h] |
$h[
$.1(1==1)
$.2(1==0)
]
hash of bool |
^object2js[$h] |
^JSHttpRequest:_object2js[$h] |
$h[
$.1[a]
$.2[b]
$.3[]
$.4[$dt]
]
simple hash |
^object2js[$h] |
^JSHttpRequest:_object2js[$h] |
$h[
$.1[a]
$.2[
$.3[c]
$.4[d]
]
]
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]
}