Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Генератор тэгов. (https://javascript.ru/forum/jquery/8007-generator-tehgov.html)

JAre 02.03.2010 18:57

Генератор тэгов.
 
Интересно, есть ли плуг для jQuery такого рода:
var my_prototype = '<my_window caption = "$caption" x-button="$close">$content</my_window>'; //прототип тэга, то есть мы объясняем jQuery, что такое окно с нашей точки зрения.
var custom_tag = jquery.tag_factory(my_prototype); // фабрика, генерирует поля на основании прототипа.
custom_tag.caption.default = 'имя окна не задано'; // если свойство caption не указано
custom_tag.close.default = kill_window;
custom_tag.instantiation = function(){...}; // используя вводные данные описываем процесс создания окна, то есть объясняем jQuery, что такое окно с точки зрения html.


Потом эту приблуду можно так использовать:

<my_window caption = "Приветствие"><b>Добро</b> пожаловать!</my_window>


PS. Это концепция, а не рабочий код :)

Tim 02.03.2010 20:48

JAre,
Зачем именно для джи квери? Можно просто функцию сделать или метод объекта если хотите. Передавать ей(ему) объек {title: "Заголовок", content: "Контент", и т.п. }. Потом в цикле for in парсить регулярками. А переменные в шаблоне лучне во что нибудь завернуть для исключения случайных совпадений, например так '<my_window caption = "{$caption}" x-button="{$close}">{$content}</my_window>'

subzey 03.03.2010 00:43

JAre,
Мне кажется, Вас может заинтересовать XSLT. Достаточно мощный язык трансформаций, позволяющий делать такие макросы. Но предупрежу сразу, его применение требует, чтобы исходник был строго синтаксически правильным XML.

JAre 03.03.2010 11:36

jQuery потому, что "пиши меньше - делай больше" :)
Хотелось иметь простую и гибкую систему представления тэгов "высшего порядка" через "атомарные тэги" Казалось бы, фигня. Нужен скрипт, которому говоришь "Я хочу окно, оно квадратное, имеет название, содержимое и кнопку с крестиком. Содержимое это любой html, название это текст а кнопка с крестиком - кнопка при нажатии на которую окно закрывается" А потом просто использовать этот новый тэг как и все остальные.
Схема работы такого скрипта примерно следующая:
1. Распарсить сигнатуру нового тэга.
2. Создать объект этого тэга с заданными полями.
3. Заполнить некоторые поля значением по умолчанию.
4. Распарсить шаблон html продукта трансформации.
5. Привязать поля сигнатуры к полям конечного html(кнопки, лэйбы)
6. Разместить в репозитории - массив шаблонов связанных с прототипами и хранящем значения по умолчанию.
7. Поставить обработчик события "ДОМ построен" при котором скрипт будет находить в документе все тэги соответствующие сигнатуре тэга высшего порядка и выполнять считывание значений полей, генерацию конечного html и подстановку.

Огромное поле для экспериментов с обработкой ошибок и прочих промежуточных стадий и даже перегрузка стандартных тэгов - когда <div> уже не ведет себя как <div>. И даже наследование от стандартных тэгов и других тэгов высшего порядка - расширение функционала. И многое многое другое.

То есть можно получить простую в обращении, но очень мощную тулзу.
Ее пользователю даже не нужно знать как устроенно окно, он собирает свою страничку из готовых блоков. Если хочет изменить или комбинировать имеющиеся тэги может перегрузить их(например, обычная форма получит оформление или AJAX верификацию) или применить наследование.


Или я брежу?

PS. XSLT это хорошо, но оно слишком требовательно и универсально. Хотя, это хоть какой но выход - спасибо.


Часовой пояс GMT +3, время: 19:13.