(import-macros {:compile-html <>} :macros) (local fennel (require :vendor.fennel)) (fn improve-typography [text] (var result (-> text (string.gsub "(\n|\r)" " ") (string.gsub "%s+" " "))) (let [nbsp-replaces ["на" "На" "и" "И" "в" "В" "о" "О" "с" "С" "со" "Со" "до" "До" "для" "Для" "а" "А" "но" "Но" "на" "На" "я" "Я" "мы" "Мы" "над" "Над" "под" "Под" "г." "Г." "ул." "Ул." "д." "Д." "%d+"]] (each [_ v (ipairs nbsp-replaces)] (set result (-> result (string.gsub (.. "( " v ") ") "%1 ") (string.gsub (.. "(%s" v ") ") " %1 ") (string.gsub (.. "^(" v ") ") "%1 "))))) result) (fn header [current-path] (local logo (<> [:img {:class "logo" :src "/static/logo.svg" :alt "Белая жаба в мультяшном стиле с чайником на голове"}])) (<> [:article {:class "article"} (if (~= current-path "") (<> [:a {:href "/"} logo]) logo) [:h1 {} "Чайная комната «Белая жаба»"] [:nav {} [:a {:href "/shop" :class "active"} "магазин"] [:span {} "~"] [:a {:href "https://t.me/whitetoadtea"} "телеграм"] [:span {} "~"] [:a {:href "https://vk.com/whitetoadtea"} "вконтакте"]]])) (local texts { :address (improve-typography "г. Омск, ул. Пушкина, д. 133/9, этаж 2. Вход с крыльца Магнита, дверь слева, домофон 4") :individual-ceremony (improve-typography "Индивидуальная чайная церемония: мастер готовит для вас чай на ваш выбор. О времени встречи договариваемся. Стоимость 1000 рублей с человека, до 5 человек.") :weekly-meetings (improve-typography "Еженедельное мероприятие: каждую субботу в 15:00 мы собираемся и пьем чай из нашей коллекции. Для посещения необходима запись в комментариях под соответствующим постом в нашей группе в телеграме. Стоимость 500 рублей с человека.")}) (print (<> [:div (fn [] {:huemoe nil :hello "world" :required true}) "whatever"])) ; (macrodebug ; (<> [:div (fn [] {:hello "world" :required true}) "whatever"])) ; (macrodebug ; (<> ; [:div {:class "side"} ; (unpack [])])) ; (macrodebug ; (<> ; [:div {:class "side"} ; [:article {:class "article"} ; (header "") ; [:h2 {} "Адрес"] ; [:p {} "test!"]]])) ; (print (<> ; [:img {:class "side"}])) ; (local hello {:world "test"}) ; (print ; (fennel.view ; [(<> [:div {:class "first"} "11111"]) ; (<> [:div {:class "second"} "22222"])])) ; (print (<> ; [:div {:class "side"} ; [:article {:class "article"} ; (header "") ; [(if true :h2 :h3) {(if true "hello" "world") "test"} "Адрес"] ; [:else {:test hello.world} "Адрес"] ; [:NO-ESCAPE ""] ; [:p {} ""]]])) ; (macrodebug ; (<> ; [:div {:class "side"} ; (header "") ; [:article {:class "article"} ; [:h2 {} "Адрес"] ; [:p {} [:NO-ESCAPE texts.address]]] ; [:article {:class "article"} ; [:h2 {} "Форматы участия"] ; [:ol {} ; [:li {} ; [:NO-ESCAPE texts.individual-ceremony] ; [:div {:class "button-wrapper"} ; [:a {:href "https://t.me/whitetoadvlad" :class "button"} "Записаться"]]] ; [:li {} ; [:NO-ESCAPE texts.weekly-meetings] ; [:div {:class "button-wrapper"} ; [:a {:href "https://t.me/whitetoadtea" :class "button"} "Подписаться"]]]]]]))