Hi Joel,

Thank for the interest ! You can also take a look at some code have done 
around css unit types there <https://github.com/JeremS/units>. It's got 
arithmetic for 
units and a namespace dedicated to colors. In it you'll find conversions 
between rgb en hsl (that I have taken from the color 
library<https://github.com/jolby/colors>
)
and the implementation of SASS color helpers. May be you could adapt my 
library to garden. From what I have seen Garden uses
protocols to compile different types into css and every unit (including 
colors) I define is a record. So you might be able to extend my library 
with Garden protocols and use it in garden without much effort. I'd be glad 
to see that !

About higher order function I have thought about that and went back, my 
first approach made for to complicated function (complected even). With the 
actual implementation I can just define stuff like:

(def grid {}) ; grid spec with column, gutter...

(def width (partial grid/witdh grid))
(def push (partial grid/push grid))


and then :

(def side-style [:#side (width 4) 
                                (push 1)])

for a side element spanning onto 4 columns and pushed off 1.


Regarding more advanced systems like Foundation I haven't spent much time 
trying to implement them with my DSL.
To do so I need to up my CSS game because I am not yet well versed into the 
art of responsive design and it will take me
a bit of time wrapping my head around the media queries involved. If I try 
to got responsive, I might probably study 
the Unsemantic <http://unsemantic.com> system from the creator of the 960 
one I think.

Good luck with your work and don't hesitate on browsing my github, right 
now most of the projects are oriented around CSS and there 
might be some ideas there who knows ! 

On Wednesday, June 19, 2013 8:54:48 AM UTC+2, Joel Holdbrooks wrote:
>
> Jeremy,
>
> Looks good. I've been tinkering with grid systems on and off for the past 
> month or so. Have you thought of trying your hand at porting something like 
> the Foundation or Gumby grid system?
>
> One thing I've discovered, and you might try this with your 960 
> implementation, is that using higher order functions can be very handy for 
> building them out. For example, a *make-grid* function which accepts a 
> map of configuration options and returns a function which takes a column 
> number and optional parameters for, say, push and pull. It's a nice way to 
> package things up.
>
> I'm close to wrapping up a small colors framework for Garden which will be 
> available in the next beta (hopefully it won't be in beta much longer). 
> When I take it out of beta it'll probably include a Clojure flavored 
> implementation of either the grid system that ships with Bootstrap or 
> Foundation (including the mobile parts).
>
> On the side I've been taking of advantage of Clojure to create a new 
> concept for a *layout* system. It's based on the font-size/line-height 
> ratio and allows for the construction of stylesheets such that the grid 
> system and typography are harmonious. IOW it's a fat pain in the ass, but I 
> don't think I could even fathom the idea of doing it in Sass.
>
> TL;DR you have Clojure at your disposal! Though we're SOL on some very 
> nice Sass libraries, we can potentially do more and at a higher level!
>
> Thanks for sharing! It's inspiring.
>
> On Jun 18, 2013, at 4:41 AM, JeremyS <jschof...@gmail.com <javascript:>> 
> wrote:
>
> Hi Joel,
>
> I have a quick and dirty implementation of a 960-ish grid 
> system<https://github.com/JeremS/cljss-grid>using a DSL similar to garden If 
> you want to take a look.
>
>
>
> On Friday, April 26, 2013 1:01:44 AM UTC+2, Joel Holdbrooks wrote:
>>
>> It's funny you should bring that up! I've actually been working on 
>> extracting the grid system from Bootstrap and modular scale from 
>> Foundation. But it's mostly been tinkering.
>>
>> *  I am sorely tempted to give this a try.*
>>
>> Please do! If I come up with something I'll be sure to share a Gist.
>>
>>
>> On Thu, Apr 25, 2013 at 3:27 PM, Clinton Dreisbach 
>> <cli...@dreisbach.us>wrote:
>>
>>> One interesting thing you could do, given both Garden and
>>> ClojureScript, is package CSS frameworks like Twitter Bootstrap or
>>> Zurb Foundation as a Clojure library. I am sorely tempted to give this
>>> a try.
>>>
>>> On Thu, Apr 25, 2013 at 6:12 PM, Joel Holdbrooks <cjhold...@gmail.com> 
>>> wrote:
>>> > Murtaza,
>>> >
>>> > Thanks for having a look at the library. I'll try to answer you 
>>> questions as
>>> > best as I can.
>>> >
>>> >
>>> > How does Garden compare to other pre processors such as sass and less?
>>> >
>>> > There are some similarities with Garden and other CSS preprocessors. 
>>> I've
>>> > tried to bring over the ones I found most useful when using them. 
>>> Nested
>>> > selectors and declarations, parent selector references, and unit 
>>> arithmetic
>>> > are all currently available to stylesheet authors.
>>> >
>>> > The big difference and, in my opinion, the big win is you can build 
>>> your
>>> > stylesheets with regular Clojure. This gives you a lot of power and 
>>> freedom
>>> > you won't find anywhere else (AFAIK). To name just a few benefits:
>>> >
>>> > There's no file parsing or interpretation step. It's just data
>>> > transformation.
>>> > There's no need for any sort of special @mixin syntax or macros, you 
>>> can use
>>> > Clojure function.
>>> > There's no need for an @include directive thanks to clojure 
>>> namespaces. This
>>> > can help you organize your stylesheet in ways (I think) are much 
>>> cleaner and
>>> > less surprising than SASS and other preprocessors.
>>> > Thanks to Clojure, Garden (potentially) has clearer syntax than CSS 
>>> which,
>>> > if you look closely, can be pretty random in some places.
>>> >
>>> > WIth regard to the third point, if you've ever tried using the SMACSS
>>> > approach to stylesheet authoring with a preprocessor like SASS, you 
>>> can end
>>> > up with an explosion of files and tons of @include directives. It's 
>>> not fun,
>>> > it's hard to manage, and it's difficult to see where code is coming 
>>> from -
>>> > especially when using 3rd-party libraries.
>>> >
>>> > Also can I use it in my clojurescript projects ? I mean does it have 
>>> any
>>> > java lib dependencies that would prevent it?
>>> >
>>> > It does have one small dependency on java.net.URI but I need some time 
>>> to
>>> > think about whether or not it would be worth dropping. As far as using 
>>> it
>>> > from a ClojureScript project, what sort of use case are you 
>>> considering?
>>> >
>>> > What is the workflow when using Garden?
>>> >
>>> > My experience using Garden is probably close to others at this point. 
>>> It's
>>> > kind of funny in that regard. I'm building a tool and at the same time 
>>> am
>>> > learning how to use it. Personally, I create a namespace for my "core"
>>> > stylesheets and separate namespaces for things like utilities and so 
>>> forth
>>> > (ie. (ns me.css (:require [me.css.button :as button])) . Then I have a 
>>> call
>>> > to function that compiles and saves the stylesheet at the bottom of the
>>> > "core" stylesheets. Since I develop with Emacs and nREPL this means 
>>> all I
>>> > have to do is reload the file and the CSS is "refreshed".
>>> >
>>> > It isn't the best approach, but Garden is still very young and I 
>>> haven't
>>> > thought about how a standardize the build process. But I would 
>>> definitely be
>>> > open to any thoughts regarding that. A Leiningen plugin would be 
>>> awesome!
>>> >
>>> >
>>> > I hope these answers are helpful. Please continue to experiment with 
>>> the
>>> > library and express your thoughts!
>>> >
>>> > Thanks,
>>> >
>>> > Joel
>>> >
>>> >
>>> > On Wed, Apr 24, 2013 at 6:44 PM, Murtaza Husain
>>> > <murtaza...@sevenolives.com> wrote:
>>> >>
>>> >> Joel,
>>> >>
>>> >> Thanks for the lib. Its great and I plan to use it in my projects.
>>> >>
>>> >> How does Garden compare to other pre processors such as sass and less 
>>> ?
>>> >>
>>> >> Also can I use it in my clojurescript projects ? I mean does it have 
>>> any
>>> >> java lib dependencies that would prevent it?
>>> >>
>>> >> What is the workflow when using Garden ? If I am using Sass, I would
>>> >> create a .scss file, and the sass daemon would watch over any changes 
>>> to the
>>> >> file and compile it to .css.
>>> >>
>>> >> As I understand garden is generating css when called with the fn/macro
>>> >> (css [...]). Would it make sense to have a similar workflow like 
>>> above;
>>> >> where a leiningen plugin watches for any .garden files and compiles 
>>> them to
>>> >> .css files ? Or is there a better workflow that I am missing?
>>> >>
>>> >> Thanks,
>>> >> Murtaza
>>> >>
>>> >>
>>> >> On Tuesday, April 23, 2013 2:42:55 AM UTC+5:30, Joel Holdbrooks wrote:
>>> >>>
>>> >>> As of today, Garden is officially out of alpha and in to beta!
>>> >>>
>>> >>> The library now sports media queries (via meta data) and parent 
>>> selector
>>> >>> references (ie. "&hover"). With these new features it is now 
>>> possible to
>>> >>> build more sophisticated stylesheets bringing us a step closer to 
>>> having a
>>> >>> viable CSS alternative in Clojure.
>>> >>>
>>> >>> Over the course of the next few weeks, I plan to continue improving 
>>> the
>>> >>> library by adding "missing" features and functions to make the 
>>> library as
>>> >>> powerful as possible when it's release as 0.1.0 stable.
>>> >>>
>>> >>> Now more than ever, I would like to encourage others in the 
>>> community to
>>> >>> reach out with suggestions and code review. This my first "real" 
>>> Clojure
>>> >>> library and after only six months with the language I'm sure it could
>>> >>> benefit greatly from both of these things.
>>> >>
>>> >> --
>>> >> --
>>> >> You received this message because you are subscribed to the Google
>>> >> Groups "Clojure" group.
>>> >> To post to this group, send email to clo...@googlegroups.com
>>> >> Note that posts from new members are moderated - please be patient 
>>> with
>>> >> your first post.
>>> >> To unsubscribe from this group, send email to
>>> >> clojure+u...@googlegroups.com
>>> >> For more options, visit this group at
>>> >> http://groups.google.com/group/clojure?hl=en
>>> >> ---
>>> >> You received this message because you are subscribed to a topic in the
>>> >> Google Groups "Clojure" group.
>>> >> To unsubscribe from this topic, visit
>>> >> 
>>> https://groups.google.com/d/topic/clojure/xbFU2prTxlY/unsubscribe?hl=en.
>>> >> To unsubscribe from this group and all its topics, send an email to
>>> >> clojure+u...@googlegroups.com.
>>> >>
>>> >> For more options, visit https://groups.google.com/groups/opt_out.
>>> >>
>>> >>
>>> >
>>> >
>>> >
>>> >
>>> > --
>>> >
>>> > Joel
>>> >
>>> > --
>>> > --
>>> > You received this message because you are subscribed to the Google
>>> > Groups "Clojure" group.
>>> > To post to this group, send email to clo...@googlegroups.com
>>> > Note that posts from new members are moderated - please be patient 
>>> with your
>>> > first post.
>>> > To unsubscribe from this group, send email to
>>> > clojure+u...@googlegroups.com
>>> > For more options, visit this group at
>>> > http://groups.google.com/group/clojure?hl=en
>>> > ---
>>> > You received this message because you are subscribed to the Google 
>>> Groups
>>> > "Clojure" group.
>>> > To unsubscribe from this group and stop receiving emails from it, send 
>>> an
>>> > email to clojure+u...@googlegroups.com.
>>> > For more options, visit https://groups.google.com/groups/opt_out.
>>> >
>>> >
>>>
>>> --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clo...@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+u...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "Clojure" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/clojure/xbFU2prTxlY/unsubscribe?hl=en.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> clojure+u...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>>
>>
>> -- 
>>
>> Joel 
>>
>
> -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com <javascript:>
> Note that posts from new members are moderated - please be patient with 
> your first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com <javascript:>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to a topic in the 
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/clojure/xbFU2prTxlY/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> clojure+u...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to