summaryrefslogtreecommitdiff
path: root/pages/index.fnl
blob: 4d8af80f8fabac0d2deb4a9b563cad0cd4ed48a8 (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
(local templates (require :templates))
(local html (require :vendor.html))

(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 test-improve-typography []
  (assert (= (improve-typography "Я лежу на пляжу!")
             "Я лежу на пляжу!"))
  (assert (= (improve-typography "500 рублей мы сняли со счета!")
              "500 рублей мы сняли со счета!"))
  (assert (= (improve-typography "500 рублей мы
                                  сняли со счета!")
             "500 рублей мы сняли со счета!")))

(local texts {
  :address
    (improve-typography
      "г. Омск, ул. Пушкина, д. 133/9, этаж 2. Вход с крыльца Магнита, дверь
       слева, домофон 4")

  :individual-ceremony
    (improve-typography
      "Индивидуальная чайная церемония: мастер готовит для вас чай на ваш выбор.
       О времени встречи договариваемся. Стоимость 1000 рублей с человека,
       до 5 человек.")

  :weekly-meetings
    (improve-typography
      "Еженедельное мероприятие: каждую субботу в 15:00 мы собираемся и пьем
       чай из нашей коллекции. Для посещения необходима запись в комментариях
       под соответствующим постом в нашей группе в телеграме. Стоимость 500
       рублей с человека.")
})

(fn pick-gallery-photo [list]
  (let [chosen (. list (math.random (# list)))]
    [:div {}
     [:a {:href (.. "static/" chosen.name ".webp") :target "_blank"}
      [:img {:src (.. "static/" chosen.name "-p.webp") :alt chosen.alt}]]]))

(fn content []
  [[:div {:class "content"}
    [:article {:class "article"}
     [:img {:class "logo" :src "/static/logo.svg"
            :alt "Белая жаба в мультяшном стиле с чайником на голове"}]
     [:h1 {} [:NO-ESCAPE "Чайная комната «Белая жаба»"]]
     [:nav {}
      [:a {:href "https://t.me/whitetoadtea"} "телеграм"]
      [:span {} "~"]
      [:a {:href "https://vk.com/whitetoadtea"} "вконтакте"]]]
    [: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"} "Подписаться"]]]]]]
   [:div {:class "gallery"}
    (pick-gallery-photo [{:name "people" :alt "Люди в чайной"}
                         {:name "gaiwan2" :alt "Близко сфотографированный чайный столик с пиалами и гайванью"}
                         {:name "teapot2" :alt "Пиала и чайник на фоне гирлянды"}])
    (pick-gallery-photo [{:name "table" :alt "Сфотографированные сверху пиалы на японском столике"}])
    [:div {}
     [:video {:autoplay true :loop true :muted true}
      [:source {:src "static/boiling-p.webm" :type "video/webm"}]]]
    (pick-gallery-photo [{:name "gaiwan" :alt "Гайвань и ширма с гирляндами на фоне"}
                         {:name "wall" :alt "Белая стена с веером и тенью окна"}
                         {:name "teapot" :alt "Чайник в темноте на светлом фоне гирлянд"}
                         {:name "teapot3" :alt "Чайник в руке на фоне растений"}])
    (pick-gallery-photo [{:name "rack" :alt "Стеллаж с чайной посудой"}
                         {:name "flowers" :alt "Ваза с цветами рядом с чайным столиком"}])
    [:div {}
     [:video {:autoplay true :loop true :muted true}
      [:source {:src "static/gaiwan-p.webm" :type "video/webm"}]]]]])

(fn render [request]
 (values 200 {} (html.render (templates.base-template (content)) true)))

{: render}