Новости | 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] }Местами может содержать ошибки, на серьезное тестирование пока не было времени.