фанера мову шаблонів граматика, яка виглядає, відчуває і працює як Python
навантаження ('URL')
навантаження ('компрес »)
DOCTYPE ('HTML')
HTML:
І NBSP; головка:
І NBSP; мета (кодування = "UTF-8")
І NBSP; мета (ім'я = "області перегляду", зміст = "ширина = пристрої ширина; початкова масштаб = 1,0")
І NBSP; назва:
І NBSP; якщо назву:
І NBSP; # рядки документації *, є * позбавлений попередній пробіл (вони повинні бути
І NBSP; # відступом), і перший і останній символ нового рядка видаляється.
І NBSP; "" "
І NBSP; {назва} |
І NBSP; "" "# рядок intepolation є трохи більш важких, чем` .format ()`, але більш схожі, ніж різні.
І NBSP; 'Ласкаво просимо' # рядкові літерали вимагають цитати: - / Я * можливо * додати ще один спосіб зробити це ...
І NBSP; стиснути ('CSS'):
І NBSP; посилання (отн = 'стилів', тип = "текст / CSS", HREF = статичне ('CSS / reset.css'))
І NBSP; посилання (отн = 'стилів', тип = "текст / CSS", HREF = статичне ('CSS / welcome.css'))
І NBSP; сценарій (SRC = "// ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", тип = "текст / JavaScript")
І NBSP; стиснути ('JS'):
І NBSP; сценарій (SRC = статичне ("JS / underscore.js"), тип = "текст / JavaScript")
І NBSP; сценарій (SRC = статичне ("JS / Backbone.js"), тип = "текст / JavaScript")
І NBSP; ieif 'LT IE 9':
І NBSP; сценарій (SRC = "// html5shiv.googlecode.com/svn/trunk/html5.js", тип = "текст / JavaScript")
І NBSP; посилання (отн = 'стилів', тип = "текст / CSS", HREF = статичне ('CSS / ie.css'))
І NBSP; блок ("extra_head ') # блоки та успадкування блок? звичайно!
І NBSP; корпус:
І NBSP; DIV (клас = "обгортка", ID = "обгортка") # не скорочення для класів і ідентифікаторів (поки що)
І NBSP; заголовок:
І NBSP; блок ("заголовок"):
І NBSP; р (клас = "логотип"):
І NBSP; блок ("header_title '):
І NBSP; якщо користувач:
І NBSP; 'Ласкаво просимо' {user.name} '
І NBSP; інше:
І NBSP; 'Ласкаво просимо'
І NBSP; якщо current_member:
І NBSP; р (клас = "Логін"):
І NBSP; "Ласкаво просимо, {current_member.preferred_name}"
І NBSP; (HREF = URL ("Вихід")): "Вихід"
І NBSP; NAV:
І NBSP; UL:
І NBSP; блок ("Мавка):
І NBSP; Лі: (HREF = URL ("Вхід")): "Увійти"
І NBSP; розділ клас = "хлібних крихт":
І NBSP; блок (покроковий шлях)
І NBSP; розділ (клас = "головний"):
І NBSP; блок («послання»):
І NBSP; Якщо повідомлення:
І NBSP; вул (клас = "Повідомлення"):
І NBSP; для повідомлення в повідомленнях:
І NBSP; Li (клас = message.tags): '{повідомлення}'
І NBSP; сценарій:
І NBSP; # код літерали, так що досвідчені редактори можуть пофарбувати вихідний код
І NBSP; `` `JavaScript
І NBSP; $ (документ) .ready (функція () {
І NBSP; $ ("ul.messages") addClass ("пожвавити") .;
І NBSP; вар fade_out = _ (функція () {
І NBSP; this.addClass ("плавного зменшення")
І NBSP ;.}) Зв'язати ($ ("ul.messages"))
І NBSP; setTimeout (fade_out, 5000);
І NBSP ;. $ ("Ul.messages") Bind ("клік", fade_out);
І NBSP;});
І NBSP; `` `
І NBSP; блок («зміст»)
І NBSP; підвал:
І NBSP; # р:
І NBSP; # 'Це коментарі.
І NBSP; # період: '|'
І NBSP; # 'і копія; 2012 CrossFit "
Установка
І NBSP; пункт встановити фанери
І NBSP; шар
синтаксис
Кожен рядок починається з заяви, яку може бути або функція (DIV, блок) буквальне (',' ''), або управління заяву (якщо, в іншому випадку, для).
Функції викликаються з аргументами і "блок":
# Аргументи ((), {}), блок Блок ()
р
# Аргументи ((), {'класу': 'ділити'}), блок Блок ()
DIV (клас = "поділити")
# Аргументи (('автофокус'), {'ID': 'біо'}), блок Блок (дослівний («Це моя біо '),)
текстова (автофокус, ID = "біо"): "Це моя біо"
Навіть якщо немає "блок", ви отримаєте як мінімум на порожній об'єкт блоку, який ви можете зателефонувати block.render на. Це буде "falsey", хоча, так що ви можете перевірити наявність блоку. Мінімальний "truthy" блок порожній рядок. Це означає, що DIV '' дасть вам "truthy" блок, але DIV буде "falsey" блок.
Ви можете розширити лайно з фанери, бо DIV, якщо блок, набагато, все написані в якості розширень фанери. Без BuiltIn розширень, язик не міг насправді нічого робити, тому що це по своїй суті просто граматики мови.
ЧОМУ!?!?
Я думаю, що є місце для ще однієї мови шаблонів.
Haml? Coffekup? Jade? Вони, здається, не віщий для мене.
Звичайна Джейн HTML? Звичайно, якщо ви хочете. Тобто, я думаю, що краща альтернатива фанери.
Навіть великий мову шаблонів Django є HTML зробив гаже, вставивши додаткову розмітку. Я подивився на Джейд і Haml як "так, ви отримуєте там", але вони не прибити його.
Я unapologettically DIY-ер. Я думаю, що іноді диски просто потрібно заново винаходити! Крім того, це дало мені шанс зіграти з мовними граматик, які, я думаю, це весело. Я використовую Modgrammar
Вимоги
- Python
Коментар не знайдено