clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
2017-10-16T05:54:37.000002Z

+ это привычка из жс, делать по модулю на компонент

dottedmag 2017-10-16T07:05:20.000269Z

Не из джавы ли? 😄

2017-10-16T07:16:37.000100Z

ухххх :D

y.khmelevskii 2017-10-16T07:46:42.000179Z

та да, у меня, в частности, из js привычка 🙂

2017-10-16T08:46:27.000376Z

у меня была такая проблема в проекте с селениум тестами. написал макрос который подключает все ns с определенным префиксом

2017-10-16T08:46:34.000036Z

#_(:require [clojure.tools.namespace.find :as ns]
            [clojure.java.classpath :as cp])

(defmacro loading-my-tests
  "Подключает все ns из каталога test"
  []
  (let [all-ns (ns/find-namespaces (cp/classpath))
        test-ns-list (filter #(re-matches #"test(.*)" (str %)) all-ns)
        name-to-fn (fn [ns-name] `(require '[~ns-name :refer :all]))
        fn-list (mapv name-to-fn test-ns-list)]
    `(do ~@fn-list)))

dottedmag 2017-10-16T09:04:07.000451Z

Чо уж, тогда (defmacro загрузить-все-тесты ...)

kuzmin_m 2017-10-16T09:21:28.000112Z

про core.match кто-нибудь сталкивался с тем, что не работает вот это:

(let [x [:k1 :k2 :k3]]
  (m/match [x]
           [(:k1 :<< first)] :first))
а вот так - работает
(let [k1 :k1
      x [:k1 :k2 :k3]]
  (m/match [x]
           [(k1 :<< first)] :first))

kuzmin_m 2017-10-16T09:21:51.000096Z

может быть есть какой-то другой синтаксис?

kuzmin_m 2017-10-16T09:22:13.000355Z

Invalid list syntax :<< in (:k1 :<< first). Valid syntax:
   [[:default :guard] [:or :default] [:default :only] [:default :seq]
   [:default :when] [:default :as] [:default :<<] [:default
   :clojure.core.match/vector]]

kuzmin_m 2017-10-16T09:23:11.000190Z

т.е. он не прнимает keyword первым элементом в такой конструкции (:keyword :<< fn)

anjensan 2017-10-16T09:27:48.000285Z

@kuzmin_m судя по https://github.com/clojure/core.match/blob/master/src/main/clojure/clojure/core/match.clj#L1809 это деталь реализации - оно пытается заресолвить синтаксис по первым двум кейвордам. т.е. пытается воспринять :k1 как часть синтаксиса core.match

kuzmin_m 2017-10-16T09:28:56.000293Z

а что такое :default?

anjensan 2017-10-16T09:29:03.000280Z

при этом игнорирует :<<

kuzmin_m 2017-10-16T09:29:16.000542Z

или это из multimethod?

anjensan 2017-10-16T09:29:17.000344Z

это "магический" диспач-кей для defmulti

kuzmin_m 2017-10-16T09:29:25.000104Z

а, ок

anjensan 2017-10-16T09:30:01.000195Z

т.е. если 2 кейворда - оно принципиально считает, что первый часть синтаксиса - второй - тупо value и не участвует в парсинге

anjensan 2017-10-16T09:30:04.000416Z

имхо это "баг" 🙂

kuzmin_m 2017-10-16T09:30:55.000005Z

я завел issue им

kuzmin_m 2017-10-16T09:31:07.000450Z

https://dev.clojure.org/jira/browse/MATCH-125

y.khmelevskii 2017-10-16T13:22:04.000316Z

подскажите, можно, как-то, с помощью cljs.spec описать пропсы reagent-компонента? как вы описываете PropTypes reagent-компонента?

2017-10-16T13:57:12.000311Z

@y.khmelevskii если это функция, то спекой для функций

2017-10-16T13:57:15.000659Z

s/fdef

2017-10-16T13:57:24.000453Z

но от этого сомнительный профит

2017-10-16T13:57:29.000557Z

имхо

kuzmin_m 2017-10-16T13:58:25.000117Z

еще spec/assert есть

2017-10-16T13:58:33.000133Z

+ вроде бы, instrument не валидирует все аспекты спеки функции

kuzmin_m 2017-10-16T13:58:50.000202Z

он только парамеры проверяет

2017-10-16T13:59:51.000549Z

угу, была билиотека поверх спеки с проверкой return value

2017-10-16T14:00:20.000036Z

а еще спека не подается DCE в cljs

2017-10-16T14:00:27.000320Z

так и будет висеть в бандле

2017-10-16T14:02:27.000123Z

@y.khmelevskii проще наверное сделать pre- post- ассерты

y.khmelevskii 2017-10-16T14:45:36.000333Z

@roman01la спасибо. печально как-то без propTypes и ворнингов реакта. pre- ассерты, на сколько я понимаю, если не пройдут, то будут вызывать исключения, чего не хочется, нужны просто ворнинги. И да, спека в бандле тоже неприятно.

dottedmag 2017-10-16T15:22:16.000458Z

Так а ворнинг-то на основании чего делать, если спеки в бандле не будет?

y.khmelevskii 2017-10-16T15:29:51.000652Z

Ворнинги на деве полезны, для прода обычно проптайпсы вырезают с бандла.

dottedmag 2017-10-16T15:56:34.000338Z

Так положить спек в исходники, которые цепляются только при :dev.

2017-10-16T16:05:00.000182Z

значит без ns алиасов придется писать?

mike_ananev 2017-10-16T21:49:04.000198Z

@roman01la https://github.com/jeaye/orchestra

mike_ananev 2017-10-16T21:49:09.000303Z

эта либа?

dottedmag 2017-10-16T21:55:47.000109Z

да, она

2017-10-16T23:36:09.000159Z

интересно, а чем обусловлено существование этой либы? почему спек из коробки не делает тоже самое?