Fork me on GitHub
#garden
<
2021-02-02
>
Vincent Cantin05:02:47

I would like to contribute for the https://github.com/noprompt/garden/issues/171, but first I wanted to ask a few questions.

Vincent Cantin05:02:20

Does garden have any sort of visitor, a spec about the garden data format or anything like that ?

Vincent Cantin05:02:16

It would be handy for writing any kind of garden-rewriting function.

noprompt06:02:19

@vincent.cantin No, but Iā€™m sure itā€™s possible to fit something on top of it. The design is pretty bad; it was one of my first ā€œseriousā€ Clojure projects. You probably noticed, a second version in the works ā€” the aleph branch ā€” but it too needs work.

noprompt06:02:00

A zipper traversal is probably possible. I tend to stay away from spec these days.

Vincent Cantin06:02:23

I did not know about the aleph branch. I made a library which is creating garden data (https://github.com/green-coder/girouette), thatā€™s the reason I am interested in improving Garden.

noprompt06:02:39

Oh man would I love help

noprompt06:02:00

Iā€™m very busy with meander, my day job, and family.

noprompt06:02:45

I would be happy to explain in detail where the aleph branch needs to be in terms of release quality.

Vincent Cantin06:02:00

Maybe I could write a data model for the Garden format using Minimallist and use it to visit the nodes.

noprompt06:02:01

Apologies if I sound desperate! šŸ™‚

Vincent Cantin06:02:44

I am equally desesperate for help with my projects, I totally understand you šŸ˜…

noprompt06:02:50

If you would like to work on the current released version thatā€™d be great too.

noprompt06:02:44

I think what would really help would be to have a proper ā€œparseā€ phase to get the data into a format which can be more easily manipulated.

noprompt06:02:43

This is what I was doing on the aleph branch: a protocol for parsing stuff into AST nodes (maps) and separate phases for manipulating /compiling those.

noprompt06:02:27

Two things need to happen on that branch: 1. the parser needs to be written in vanilla clojure, no spec, no conform, etc. 2. finish up the docs (but this is less important than the first)

noprompt06:02:55

For the current branch, I think fitting a proper parser could work just as well.

Vincent Cantin06:02:29

By ā€œvanilla clojureā€, what do you mean? what is your goal exactly?

noprompt06:02:19

(garden.parse/parse ["h1" {:font-weight "bold"}])
;; =>
[:rule [:block [:selector "h1"] ,,,]]]
Something like this or whatever (probably maps not hiccup though)

noprompt06:02:39

By ā€œvanilla clojureā€ I just mean no spec or other libraries.

Vincent Cantin06:02:06

Your goal is not to have dependencies ?

noprompt06:02:42

spec can be nice for annotating stuff on the side but conform is too slow.

noprompt06:02:48

Yes, no dependencies.

noprompt06:02:59

Otherwise, Iā€™d just write the whole thing using Meander.

noprompt06:02:07

Itā€™s way easier. šŸ™‚

noprompt06:02:20

FWIW, I think the idea you mentioned on the ticket is similar to what happens on aleph branch IIRC

noprompt06:02:49

Basically pulling the media query up.

Vincent Cantin06:02:02

I will take a look at the aleph branch in the next couple of days.

Vincent Cantin06:02:16

In the near future, do you plan to maintain both branches master and aleph or do you plan to replace master when you can?

noprompt06:02:54

I think this could be done with a zipper by finding the media query node, replacing it with itā€™s contents, then replacing that path along the tree with the media query e.g.

[,,, [,,, (at-media {,,,} <stuff>)]]
;; =>
(at-media {,,,} [,,, [,,, <stuff>]])

noprompt06:02:07

No, I would want stick with aleph after.

noprompt06:02:26

I always support accepting patches, etc though.

Vincent Cantin06:02:58

I think that you should write it somewhere in the README.md, because many contributors may not know that and will work only on master.

Vincent Cantin06:02:30

Communicate on the direction of the project so that people can be side by side with you.

Vincent Cantin06:02:22

Small detail: the git branch is spelled alef , not aleph

noprompt06:02:55

My mistake šŸ™‚

noprompt06:02:01

I certainly mean that

noprompt06:02:44

Re: communication: Iā€™ve mentioned needing help on main README.

Vincent Cantin06:02:27

At some point in Girouette, I will want to group CSS rules which belong in the same media queries. Itā€™s at that point that having all the media queries at the root will be useful.

Vincent Cantin06:02:03

For now, I use a work around in my code to construct my data with the media query at the root, but itā€™s a little hacky.

noprompt06:02:27

TBH, and Iā€™ve mentioned this in the #meander channel as well, Iā€™m very bad a writing documentation/sending emails. OTOH Iā€™m usually very good at replying here in this format.

noprompt06:02:17

The reason is that between the things I enumerated earlier which occupy my time and mind is a head in the clouds.

noprompt06:02:51

tl;dr Iā€™m happy to help here and also in DMs

Vincent Cantin06:02:48

I also struggle with time, having a full time job not even related to Clojure and a family to take care of. I got your point.

noprompt06:02:13

Young kids take a lot of input šŸ™‚

Vincent Cantin06:02:15

I might have time next week to look at alph and see what I can do on it.

noprompt06:02:17

I have 3 šŸ˜›

Vincent Cantin06:02:35

You +1 me, I have 2

noprompt06:02:27

Any number of kids beyond one is difficult

noprompt06:02:44

I think someone said the difficulty is squared for each one you have šŸ˜„

noprompt06:02:18

But I promise you, if you want to work on the project I will give you my full support

šŸ‘ 3
Vincent Cantin04:02:36

@noprompt I will cut a first release for Girouette first, then see how to improve Garden right after.

noprompt20:02:43

Works for me. Keep in touch.

Vincent Cantin06:02:25

I would say itā€™s log if you can teach them to take care of each other.

noprompt06:02:43

I look forward to that day. šŸ™‚

noprompt07:02:18

If you want to add something to what is on master you could do it before here: https://github.com/noprompt/garden/blob/master/src/garden/compiler.cljc#L765

noprompt07:02:30

You could create a separate step for finding the media queries and properly hoisting them to the top level as you suggested.