| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sergey M. 10.06.2005 01:30
Парсерный вариант функции _php2js() для тех, кого интересует subj. Функции можно передавать hash, string, таблицу, и т.д.@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]
}Местами может содержать ошибки, на серьезное тестирование пока не было времени.