► |  | Pollen: the book is a program

1 | Installation
2 | Quick tour
3 | Backstory
4 | The big picture
5 | First tutorial
6 | Second tutorial
7 | Third tutorial
8 | Using raco pollen
9 | File formats
10 | ◊ command overview
11 | Module reference
12 | Acknowledgments
13 | License & source code
| Index

▼ | 11 | Module reference

11.1 | Cache
11.2 | Decode
11.3 | File
11.4 | Pagetree
11.5 | Render
11.6 | Template
11.7 | Tag
11.8 | Top
11.9 | World

On this page:

make-default-tag-function
split-attributes

6.1.0.8
← prev up next →

#### 11.7`` Tag

(require pollen/tag) | package: pollen

Convenience functions for working with tags.

> procedure (make-default-tag-function id) → (-> txexpr?)
> id : txexpr-tag?

Make a default tag function for id. As arguments, a tag function takes an optional set of X-expression attributes (txexpr-attrs?) followed by X-expression elements (txexpr-elements?). From these, the tag function creates a tagged X-expression using id as the tag.

Examples:
> > (require pollen/tag)
> > (define beaucoup (make-default-tag-function 'em))
> > (beaucoup "Bonjour")
> '(em "Bonjour")
> > (beaucoup '((id "greeting")) "Bonjour")
> '(em ((id "greeting")) "Bonjour")

Entering attributes this way can be cumbersome. So for convenience, a tag function provides an alternative: any symbol + string pairs at the front of your expression will be interpreted as attributes, if the symbols are followed by a colon. If you leave out the colon, the symbols will be interpreted as part of the content of the tag.

Examples:
> > (require pollen/tag)
> > (define beaucoup (make-default-tag-function 'em))
> > (beaucoup 'id: "greeting" 'class: "large" "Bonjour")
> '(em ((id "greeting") (class "large")) "Bonjour")
> ; Don't forget the colons
> > (beaucoup 'id "greeting" 'class "large" "Bonjour")
> '(em id "greeting" class "large" "Bonjour")
> ; Don't forget to provide a value for each attribute
> > (beaucoup 'id: 'class: "large" "Bonjour")
> '(em id: class: "large" "Bonjour")

Pollen also uses this function to provide the default behavior for undefined tags. See #%top.

> > procedure
> > (split-attributes parts) |  | → |  |
> > txexpr-attrs? |  | txexpr-elements?
> parts : list?

Helper function for custom tag functions. Take a rest argument that possibly includes tag attributes plus elements, and split it into attributes and elements. If there are no attributes, that return value will be the empty list. Properly parses the abbreviated Pollen syntax for attributes (described in make-default-tag-function).

Examples:
> > (require pollen/tag)
> > (define (tag . parts)
> (define-values (attrs elements) (split-attributes parts))
> (values attrs elements))
> > (tag "Hello world")
> '()
> '("Hello world")
> > (tag '((key "value")) "Hello world")
> '((key "value"))
> '("Hello world")
> > (tag 'key: "value" "Hello world")
> '((key "value"))
> '("Hello world")

← prev up next →