| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
G_Z 16.12.2015 15:48 / 16.12.2015 15:49
В предыдущих постах Я как раз публиковал код, в котором разбивал $request:uri по слэшам.И спрашивали почему ваш громоздкий код не работает так, как вы ожидаете.
Потом находил соответствия полученным значениям в БД, если они были, передавал эти параметры обработчику, который выдавал содержимое.Вам посоветовали так не делать и предложили более универсальную схему, примеры которой есть как в известных фреймворках, так и на Парсере — в pf.
Я пытаюсь повторить текст в код, начинаю с регулярных выражений, Вы пишите что так сложно не нужно, а Я с учетом расширения это делаю.Вы разбираете не то, что нужно.
@main[]
^dispatch[$form:url]
@dispatch[URL][locals]
$dispatchers[^table::create{handler trap}]
$form[^hash::create[$form:fields]]
^form.delete[url]
$URL[^URL.trim[both;/]]
$URLs[^URL.split[/]]
^URLs.menu{
$handler[^if(def $handler){$handler}^_upperFirstLetter[$URLs.piece]]
$_URL[^if(def $_URL){$_URL/}$URLs.piece]
^dispatchers.append{on$handler ^URL.mid(^_URL.length[] + 1)}
}
^dispatchers.sort(^dispatchers.line[])[desc]
$dispatched(false)
^dispatchers.menu{
$handler[$[$dispatchers.handler]]
^if($handler is junction){
^handler[
$.trap[$dispatchers.trap]
$.slug[^dispatchers.trap.left(^dispatchers.trap.pos[/])]
$.form[$form]
]
$dispatched(true)
^break[]
}
}
^if(!$dispatched){
^onNotFound[
$.trap[$URL]
$.slug[^URL.left(^URL.pos[/])]
$.form[$form]
]
}
@_upperFirstLetter[string][locals]
$result[^string.match[(.)(.+);]{^match.1.upper[]^match.2.lower[]}]
@onNews[params]
onNews
^json:string[$params]
@onNewsBest[params]
onNewsBest
^json:string[$params]
@onNewsBest2015[params]
onNewsBest2015
^json:string[$params]
@onNotFound[params]
onNotFound
^json:string[$params]