> 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.

Reply via email to