# 10.7 Tag

► |  | Pollen: the book is a program

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

▼ | 10 | Module reference

10.1 | Cache
10.2 | Decode
10.3 | File
10.4 | Pagetree
10.5 | Render
10.6 | Template
10.7 | Tag
10.8 | Top
10.9 | World

On this page:

make-tag-function

6.0.1.13
← prev up next →

#### 10.7`` Tag

( require pollen/tag ) | package: pollen

Convenience functions for working with tags.

> > procedure

> > ( make-tag-function id) → ( -> txexpr? )

> id : txexpr-tag?

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

← prev up next →