> On Nov 18, 2018, at 4:08 PM, [email protected] wrote:
>
> There are two things I'm struggling with. First, I know how to nest the span
> with class "marginnote" inside another element. However, I don't know how to
> place two elements before it. (I've wasted a lot of time trying to make this
> work.)
I imagine you want to use the splice tag `@` to wrap your three elements. When
the document is rendered, the elements will be spliced into the doc. (The
splice tag different from the quasiquote-splicing operator ,@ but it's a
similar idea.)
Example:
#lang pollen/markup
◊(define (margin id . notes)
`(@
(label ((for ,id)(class "margin-toggle")) 8853)
(input ((type "checkbox") (id ,id) (class "margin-toggle")))
(span ((class "marginnote")) ,@notes)))
◊margin["mn-demo"]{This is a margin note. Notice there isn’t a number preceding
the note.}
;; result (notice the splice tag disappears):
'(root
(label ((for "mn-demo") (class "margin-toggle")) 8853)
(input ((type "checkbox") (id "mn-demo") (class "margin-toggle")))
(span
((class "marginnote"))
"This is a margin note. Notice there isn’t a number preceding the note."))
>
> Second, each margin note needs its own unique ID. So I want to pass this id
> (in this case "mn-demo") as an argument to the function. However, again I
> can't quite work out how to make this happen. In the Pollen documentation
> there are lots of examples using key-value pairs, but in this case the key is
> redundant. It would be redundant to have to type the same key every time I
> call the function, like this: [#:id "mn-demo"] It's much neater to just have
> ["mn-demo"].
See sample above. If you don't care what the id is, you can also generate one
with `gensym`, which guarantees a unique symbol. This lets you omit the id
argument altogether:
#lang pollen/markup
◊(define (margin . notes)
(define id (symbol->string (gensym)))
`(@
(label ((for ,id)(class "margin-toggle")) 8853)
(input ((type "checkbox") (id ,id) (class "margin-toggle")))
(span ((class "marginnote")) ,@notes)))
◊margin{This is a margin note. Notice there isn’t a number preceding the note.}
--
You received this message because you are subscribed to the Google Groups
"Pollen" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.