summaryrefslogtreecommitdiff
path: root/test.fnl
blob: df0df6d19269e8643a4ec083d65165f470d0ab8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
(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 (.. "(&nbsp;" v ") ") "%1&nbsp;")
            (string.gsub (.. "(%s" v ") ") " %1&nbsp;")
            (string.gsub (.. "^(" v ") ") "%1&nbsp;")))))
  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 {} "Чайная комната «Белая&nbsp;жаба»"]
        [: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 "<script>works!</script>"]
;     [:p {} "<script>doesnt work!</script>"]]]))

; (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"} "Подписаться"]]]]]]))