The 40ants-routes Reference Manual

This is the 40ants-routes Reference Manual, version 0.4.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Jul 13 21:53:03 2025 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 40ants-routes

Framework agnostic URL routing library.

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Long Description

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-40README-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

# 40ants-routes - Framework agnostic URL routing library

<a id="40-ants-routes-asdf-system-details"></a>

## 40ANTS-ROUTES ASDF System Details

* Description: Framework agnostic ‘URL‘ routing library.
* Licence: Unlicense
* Author: Alexander Artemenko <svetlyak.40wt@gmail.com>
* Homepage: [https://40ants.com/routes][7261]
* Bug tracker: [https://github.com/40ants/routes/issues][54bf]
* Source control: [GIT][6959]
* Depends on: [alexandria][8236], [cl-ppcre][49b9], [serapeum][c41d], [split-sequence][3dcd], [str][ef7f]

<a id="overview"></a>

## Overview

40ants-routes is a framework-agnostic ‘URL‘ routing library for Common Lisp, inspired by Django’s ‘URL‘ routing system. It provides a clean and flexible way to define ‘URL‘ routes, generate ‘URL‘s, and handle ‘URL‘ parameters.

<a id="features"></a>

## Features

* Defining routes with namespaces.
* Including routes from libraries into applications.
* Matching ‘URL‘ while extracting parameters from it.
* Generating ‘URL‘s based on route names.
* Generating breadcrumbs.

<a id="installation"></a>

## Installation

“‘lisp
(ql:quickload :40ants-routes)
“‘
<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

## Usage Examples

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40DEFINING-ROUTES-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Defining Routes

Routes can be defined using the [‘40ants-routes/defroutes:defroutes‘][3455] macro.

Inside it’s body, use [‘40ants-routes/defroutes:get‘][f902], [‘40ants-routes/defroutes:post‘][a861], macro
to define final routes in the collection.

“‘

(uiop:define-package #:test-routes
(:use #:cl)
(:shadowing-import-from #:40ants-routes/defroutes
#:defroutes
#:include
#:get
#:post)
(:import-from #:40ants-routes/route-url
#:route-url)
(:import-from #:40ants-routes/handler
#:call-handler)
(:import-from #:40ants-routes/with-url
#:with-partially-matched-url
#:with-url))
(in-package #:test-routes)

(defroutes (*blog-routes* :namespace "blog")
(get ("/" :name "index")
(format t "Handler for blog index was called."))
(get ("/<string:slug>" :name "post")
(format t "Handler for blog post ~S was called."
slug)))
“‘
Routes, defined by this [‘40ants-routes/defroutes:defroutes‘][3455] are stored in ‘*blog-routes*‘ variable
and can be used either to [‘40ants-routes/defroutes:include‘][2897] these routes into the route hierarchy,
or to search a route, matched to the ‘URL‘. See section [‘Matching the URL‘][af0d].

Here’s an example demonstrating how to use an integer ‘URL‘ parameter:

“‘lisp
(defroutes (*article-routes* :namespace "articles")
(get ("/" :name "index")
(format t "Handler for articles index was called."))
(get ("/<int:id>" :name "article")
(format t "Handler for article with ID ~D was called."
id)))
“‘
In this example, the route will match ‘URL‘s like ‘/123‘ and the argument ‘ID‘ will be parsed as an integer.

You can also capture the rest of the ‘URL‘ as a parameter using the ‘.*‘ regex pattern:

“‘lisp
(defroutes (*file-routes* :namespace "files")
(get ("/" :name "index")
(format t "Handler for files index was called."))
(get ("/<.*:path>" :name "file")
(format t "Handler for file at path ~S was called."
path)))
“‘
This will match ‘URL‘s like ‘/documents/reports/annual/2023.pdf‘ and capture the entire path
‘documents/reports/annual/2023.pdf‘ as the ‘PATH‘ argument.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40INCLUDING-ROUTES-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Including Routes

Routes from libraries can be included in application routes using
[‘40ants-routes/defroutes:include‘][2897] function.

This way they can form a hyerarchy:

“‘lisp
(defroutes (*app-routes* :namespace "app")
(get ("/" :name "index")
(format t "Handler for application’s index page."))
(include *blog-routes*
:path "/blog/"))
“‘
In it’s turn, ‘*blog-routes*‘ might also include other routes itself.

This allows to build a composable web-applications and libraries. For example,
some library might build routes to show the list of objects, show details about an object,
edit it and delete. Then such routes can be included into a more complex application.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40MATCHING-THE-URL-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Matching the URL

Imagine, user have opened the ‘URL‘ with a path like this ‘/blog/some-post‘.

Then in your web-application you might setup the context in which this route
processing should happen. Use [‘40ants-routes/with-url:with-url‘][1c5e] or [‘40ants-routes/with-url:with-partially-matched-url‘][1a23]
macros to setup the context. Inside the context you can use [‘call-handler‘][e530] function to call
a body of the route, matched to the ‘URL‘:

“‘lisp

TEST-ROUTES> (with-url (*app-routes* "/blog/some-post")
(call-handler))
Handler for blog post "some-post" was called.

TEST-ROUTES> (with-url (*app-routes* "/blog/")
(call-handler))
Handler for blog index was called.

TEST-ROUTES> (with-url (*app-routes* "/")
(call-handler))
Handler for application’s index page.
“‘
[‘40ants-routes/with-url:with-url‘][1c5e] will signal [‘40ants-routes/errors:no-route-for-url-error‘][2977]
error if there is no route matching the whole ‘URL‘, but [‘40ants-routes/with-url:with-partially-matched-url‘][1a23] will
try to do the best it can.

So, inside the [‘40ants-routes/with-url:with-url‘][1c5e] body you can use [‘call-handler‘][e530]
always, while inside the [‘40ants-routes/with-url:with-partially-matched-url‘][1a23] macro handler should be called only if
[‘40ants-routes/route:current-route-p‘][087c] function returns T.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40GENERATING-URLS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Generating URLs

Another feature of ‘40ants-routes‘ is ‘URL‘ generation.
‘URL‘s can be generated using the [‘40ants-routes/route-url:route-url‘][fe8a] function. Like
[‘call-handler‘][e530], it should be called when ‘URL‘ context is available.

In our application routes tree there are two ‘index‘ routes, but we can get paths to both of them
using namespaces. Route’s namespace is defined as a list of names from the root route, given
to the [‘with-url‘][1c5e] macro up to the matched route. Each [‘defroutes‘][3455] form or a call to [‘include‘][2897] form
create an object having the name. These names are added to the current route’s namespace.

Imagine we are on the blog-post page and we want to get path to all blog posts. Easiest way
to do this, is to call [‘route-url‘][fe8a] function with only route name:

“‘lisp
TEST-ROUTES> (with-url (*app-routes* "/blog/some-post")
(route-url "index"))
"/blog/"
“‘
But this will not work if the user is on the root page:

“‘lisp
TEST-ROUTES> (with-url (*app-routes* "/")
(route-url "index"))
"/"
“‘
You might want to make ‘URL‘ resolution more stable, especially if these ‘URL‘s are used in some common
page parts such as header or footer. In this case, help ‘URL‘ resolver by giving it a namespace:

“‘lisp
TEST-ROUTES> (with-url (*app-routes* "/")
(route-url "index"
:namespace ’("app" "blog")))
"/blog/"
“‘
Note, when you are building a reusable component which creates it’s own ‘40ants-routes/routes:routes‘ ([‘1‘][77f9] [‘2‘][cce3])
object, you should not use these absolute namespaces, because you don’t know beforehand which namespace
will be used by user when including the component’s routes.

Let’s update our blog component routes and add one to edit the blog post:

“‘lisp
TEST-ROUTES> (defroutes (*blog-routes* :namespace "blog")
(get ("/" :name "index")
(format t "Handler for blog index was called."))
(get ("/<string:slug>" :name "post")
(format t "Handler for blog post ~S was called.~
To edit post go to ~S."
slug
(route-url "edit-post"
:slug slug)))
(get ("/<string:slug>/edit" :name "edit-post")
(format t "Handler for blog post ~S edit form was called."
slug)))
#<40ANTS-ROUTES/ROUTES:ROUTES "blog" 3 subroutes>
“‘
Note, how we did use [‘route-url‘][fe8a] inside the ‘/<string:slug>‘ handler to get
path to the post edit page.

Now, let’s try to call this handler when this blog’s routes are included
into the application routes:

“‘lisp
TEST-ROUTES> (with-url (*app-routes* "/blog/some-post")
(call-handler))
Handler for blog post "some-post" was called.To edit post go to "/blog/some-post/edit".
“‘
See, it did return ‘/blog/some-post/edit‘ path to the edit page and there wasn’t need to specify
a namespace at all!

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40GENERATING-BREADCRUMBS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### Generating Breadcrumbs

Breadcrumbs can be generated using the [‘40ants-routes/breadcrumbs:get-breadcrumbs‘][bd21] function. This function returns a list of [‘40ants-routes/breadcrumbs:breadcrumb‘][e419] objects that represent the path from the root to the current page.

Each [‘40ants-routes/breadcrumbs:breadcrumb‘][e419] object has the following properties:
- The ‘URL‘ path to the breadcrumb (accessible via [‘40ants-routes/breadcrumbs:breadcrumb-path‘][3f6e])
- The display title for the breadcrumb (accessible via [‘40ants-routes/breadcrumbs:breadcrumb-title‘][b28f])
- The route object associated with the breadcrumb (accessible via [‘40ants-routes/breadcrumbs:breadcrumb-route‘][920e])

To use breadcrumbs, you need to define routes with titles:

“‘lisp

(defroutes (*admin-users-routes* :namespace "users")
(post ("/" :name "users"
:title "Users")
(format nil "Users list"))
(get ("/<string:username>"
:name "user"
:title "User Profile")
(format nil "User profile: ~A" username)))

(defroutes (*admin-routes* :namespace "admin")
(get ("/" :name "admin-index" :title "Admin")
(format nil "Admin index"))
(include *admin-users-routes*
:path "/users/"))

(defroutes (*app-routes* :namespace "app")
(get ("/" :name "index" :title "Home")
(format nil "App index"))
(include *admin-routes*
:path "/admin/"))
“‘
Then, you can generate breadcrumbs for a specific ‘URL‘:

“‘lisp

TEST-ROUTES> (with-url (*app-routes* "/admin/users/john")
(let ((crumbs (40ants-routes/breadcrumbs:get-breadcrumbs)))
;; This way you can get all paths or titles:
(values
(mapcar #’40ants-routes/breadcrumbs:breadcrumb-path crumbs)
(mapcar #’40ants-routes/breadcrumbs:breadcrumb-title crumbs))))
("/" "/admin/" "/admin/users/" "/admin/users/john")
("Home" "Admin" "Users" "User Profile")
“‘
or to generate an ‘HTML‘ code like this:

“‘lisp

TEST-ROUTES> (with-url (*app-routes* "/admin/users/john")
(let ((crumbs (40ants-routes/breadcrumbs:get-breadcrumbs)))
(format t "<nav aria-label=\"breadcrumb\">~%")
(format t " <ol class=\"breadcrumb\">~%")
(loop for crumb in crumbs
for last-p = (eq crumb (car (last crumbs)))
do (format t " <li class=\"breadcrumb-item~:[~; active~]\"~:[~; aria-current=\"page\"~]>~%"
last-p last-p)
(if last-p
(format t " ~A~%" (40ants-routes/breadcrumbs:breadcrumb-title crumb))
(format t " <a href=\"~A\">~A</a>~%"
(40ants-routes/breadcrumbs:breadcrumb-path crumb)
(40ants-routes/breadcrumbs:breadcrumb-title crumb)))
(format t " </li>~%"))
(format t " </ol>~%")
(format t "</nav>~%")))
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="/">Home</a>
</li>
<li class="breadcrumb-item">
<a href="/admin/">Admin</a>
</li>
<li class="breadcrumb-item">
<a href="/admin/users/">Users</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
User Profile
</li>
</ol>
</nav>
“‘
For more advanced usage, you can also use functions as route titles to generate dynamic titles based on ‘URL‘ parameters. This is demonstrated in the test file:

First, you need to define a function which will accept an arguments extracted from ‘URL‘:

“‘lisp
(defun get-user-name (&key username &allow-other-keys)
"A function for retrieving user display names based on username parameter"
(cond
((string= username "john")
"John Smith")
((string= username "jane")
"Jane Doe")
(t
(format nil "User: ~A" username))))
“‘
Then redefine routes, to use this function as ‘TITLE‘ argument of the route:

“‘
(defroutes (*admin-users-routes* :namespace "users")
(post ("/" :name "users" :title "Users")
(format nil "Users list"))
(get ("/<string:username>"
:name "user"
;; Example of using a function for retrieving
;; route title dynamically at runtime:
:title #’get-user-name)
(format nil "User profile: ~A" username)))
“‘
And now you will get a real user’s name as the last breadcrumb title:

“‘lisp

TEST-ROUTES> (with-url (*app-routes* "/admin/users/john")
(let ((crumbs (40ants-routes/breadcrumbs:get-breadcrumbs)))
(values
(mapcar #’40ants-routes/breadcrumbs:breadcrumb-path crumbs)
(mapcar #’40ants-routes/breadcrumbs:breadcrumb-title crumbs))))
("/" "/admin/" "/admin/users/" "/admin/users/john")
("Home" "Admin" "Users" "John Smith")
“‘
This makes it easy to create meaningful breadcrumb navigation that adapts to the content being displayed.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40API-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

## API Reference

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FBREADCRUMBS-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/BREADCRUMBS

<a id="x-28-23A-28-2825-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FBREADCRUMBS-22-29-20PACKAGE-29"></a>

#### [package](80be) ‘40ants-routes/breadcrumbs‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FBREADCRUMBS-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FBREADCRUMBS-24BREADCRUMB-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### BREADCRUMB

<a id="x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-20CLASS-29"></a>

###### [class](6b1c) ‘40ants-routes/breadcrumbs:breadcrumb‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-PATH-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-29-29"></a>

###### [reader](895a) ‘40ants-routes/breadcrumbs:breadcrumb-path‘ (breadcrumb) (:path)

<a id="x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-29-29"></a>

###### [reader](27fe) ‘40ants-routes/breadcrumbs:breadcrumb-route‘ (breadcrumb) (:route)

<a id="x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-TITLE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-29-29"></a>

###### [reader](5dcf) ‘40ants-routes/breadcrumbs:breadcrumb-title‘ (breadcrumb) (:title)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FBREADCRUMBS-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FBREADCRUMBS-3AGET-BREADCRUMBS-20FUNCTION-29"></a>

##### [function](53c4) ‘40ants-routes/breadcrumbs:get-breadcrumbs‘

Generate breadcrumbs list for the current ‘URL‘ set by [‘40ants-routes/with-url:with-url‘][1c5e] macro.

<a id="x-2840ANTS-ROUTES-2FBREADCRUMBS-3AMAKE-BREADCRUMB-20FUNCTION-29"></a>

##### [function](dec1) ‘40ants-routes/breadcrumbs:make-breadcrumb‘ title

Creates a breadcrumb item.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FDEFROUTES-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/DEFROUTES

<a id="x-28-23A-28-2823-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FDEFROUTES-22-29-20PACKAGE-29"></a>

#### [package](31be) ‘40ants-routes/defroutes‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FDEFROUTES-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FDEFROUTES-3AINCLUDE-20FUNCTION-29"></a>

##### [function](c5b9) ‘40ants-routes/defroutes:include‘ routes &key (path "/")

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FDEFROUTES-3FMacros-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Macros

<a id="x-2840ANTS-ROUTES-2FDEFROUTES-3ADEFROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](f7eb) ‘40ants-routes/defroutes:defroutes‘ (var-name &key namespace (routes-class ’routes)) &body route-definitions

Define a variable holding collection of routes and binds it to a variable ‘VAR-NAME‘.

This macro acts like a ‘DEFVAR‘ - if there is already an ‘40ants-routes/routes:routes‘ ([‘1‘][77f9] [‘2‘][cce3])
object bound to the variable, then it is not replaced, but updated inplace.
This allows to change routes on the fly even if they were included into some routes
hierarchy.

You can use ‘ROUTES-CLASS‘ argument to supply you own class, inherited from ‘routes‘ ([‘1‘][77f9] [‘2‘][cce3]).
This way it might be possible to special processing for these routes, for example,
inject some special code for representing this routes in the "breadcrumbs".

Use [‘get‘][f902], [‘post‘][a861], [‘put‘][c587], ‘DELETE‘ macros in ‘ROUTE-DEFINITIONS‘ forms.

See more examples how to define routes in the
[‘Defining Routes‘][d39a] section.

<a id="x-2840ANTS-ROUTES-2FDEFROUTES-3AGET-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](8a76) ‘40ants-routes/defroutes:get‘ (path &key name title (route-class ’route)) &body handler-body

<a id="x-2840ANTS-ROUTES-2FDEFROUTES-3APOST-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](bb9a) ‘40ants-routes/defroutes:post‘ (path &key name title (route-class ’route)) &body handler-body

<a id="x-2840ANTS-ROUTES-2FDEFROUTES-3APUT-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](aba5) ‘40ants-routes/defroutes:put‘ (path &key name title (route-class ’route)) &body handler-body

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/ERRORS

<a id="x-28-23A-28-2820-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FERRORS-22-29-20PACKAGE-29"></a>

#### [package](2356) ‘40ants-routes/errors‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FERRORS-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-24ARGUMENT-MISSING-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### ARGUMENT-MISSING-ERROR

<a id="x-2840ANTS-ROUTES-2FERRORS-3AARGUMENT-MISSING-ERROR-20CONDITION-29"></a>

###### [condition](4f03) ‘40ants-routes/errors:argument-missing-error‘ (error)

**Readers**

<a id="x-2840ANTS-ROUTES-2FERRORS-3AARGUMENT-MISSING-ERROR-PARAMETER-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3AARGUMENT-MISSING-ERROR-29-29"></a>

###### [reader](4f03) ‘40ants-routes/errors:argument-missing-error-parameter‘ (argument-missing-error) (:missing-parameter)

<a id="x-2840ANTS-ROUTES-2FERRORS-3AARGUMENT-MISSING-ERROR-ROUTE-NAME-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3AARGUMENT-MISSING-ERROR-29-29"></a>

###### [reader](4f03) ‘40ants-routes/errors:argument-missing-error-route-name‘ (argument-missing-error) (:route-name)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-24NAMESPACE-DUPLICATION-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### NAMESPACE-DUPLICATION-ERROR

<a id="x-2840ANTS-ROUTES-2FERRORS-3ANAMESPACE-DUPLICATION-ERROR-20CONDITION-29"></a>

###### [condition](ac63) ‘40ants-routes/errors:namespace-duplication-error‘ (error)

**Readers**

<a id="x-2840ANTS-ROUTES-2FERRORS-3AEXISTING-NAMESPACE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANAMESPACE-DUPLICATION-ERROR-29-29"></a>

###### [reader](ac63) ‘40ants-routes/errors:existing-namespace‘ (namespace-duplication-error) (:namespace)

<a id="x-2840ANTS-ROUTES-2FERRORS-3AEXISTING-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANAMESPACE-DUPLICATION-ERROR-29-29"></a>

###### [reader](ac63) ‘40ants-routes/errors:existing-route‘ (namespace-duplication-error) (:existing-route)

<a id="x-2840ANTS-ROUTES-2FERRORS-3ANEW-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANAMESPACE-DUPLICATION-ERROR-29-29"></a>

###### [reader](ac63) ‘40ants-routes/errors:new-route‘ (namespace-duplication-error) (:new-route)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-24NO-COMMON-ELEMENTS-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### NO-COMMON-ELEMENTS-ERROR

<a id="x-2840ANTS-ROUTES-2FERRORS-3ANO-COMMON-ELEMENTS-ERROR-20CONDITION-29"></a>

###### [condition](0a57) ‘40ants-routes/errors:no-common-elements-error‘ (error)

**Readers**

<a id="x-2840ANTS-ROUTES-2FERRORS-3AFULL-NAMESPACE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANO-COMMON-ELEMENTS-ERROR-29-29"></a>

###### [reader](0a57) ‘40ants-routes/errors:full-namespace‘ (no-common-elements-error) (:full-namespace)

<a id="x-2840ANTS-ROUTES-2FERRORS-3ARELATIVE-NAMESPACE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANO-COMMON-ELEMENTS-ERROR-29-29"></a>

###### [reader](0a57) ‘40ants-routes/errors:relative-namespace‘ (no-common-elements-error) (:relative-namespace)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-24NO-ROUTE-FOR-URL-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### NO-ROUTE-FOR-URL-ERROR

<a id="x-2840ANTS-ROUTES-2FERRORS-3ANO-ROUTE-FOR-URL-ERROR-20CONDITION-29"></a>

###### [condition](1b13) ‘40ants-routes/errors:no-route-for-url-error‘ (error)

**Readers**

<a id="x-2840ANTS-ROUTES-2FERRORS-3AERROR-ROUTES-PATH-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANO-ROUTE-FOR-URL-ERROR-29-29"></a>

###### [reader](1b13) ‘40ants-routes/errors:error-routes-path‘ (no-route-for-url-error) (:routes-path)

<a id="x-2840ANTS-ROUTES-2FERRORS-3AERROR-URL-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3ANO-ROUTE-FOR-URL-ERROR-29-29"></a>

###### [reader](1b13) ‘40ants-routes/errors:error-url‘ (no-route-for-url-error) (:url)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-24PATH-DUPLICATION-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### PATH-DUPLICATION-ERROR

<a id="x-2840ANTS-ROUTES-2FERRORS-3APATH-DUPLICATION-ERROR-20CONDITION-29"></a>

###### [condition](4370) ‘40ants-routes/errors:path-duplication-error‘ (error)

**Readers**

<a id="x-2840ANTS-ROUTES-2FERRORS-3AEXISTING-PATH-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3APATH-DUPLICATION-ERROR-29-29"></a>

###### [reader](4370) ‘40ants-routes/errors:existing-path‘ (path-duplication-error) (:path)

<a id="x-2840ANTS-ROUTES-2FERRORS-3AEXISTING-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3APATH-DUPLICATION-ERROR-29-29"></a>

###### [reader](4370) ‘40ants-routes/errors:existing-route‘ (path-duplication-error) (:existing-route)

<a id="x-2840ANTS-ROUTES-2FERRORS-3ANEW-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3APATH-DUPLICATION-ERROR-29-29"></a>

###### [reader](4370) ‘40ants-routes/errors:new-route‘ (path-duplication-error) (:new-route)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FERRORS-24URL-RESOLUTION-ERROR-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### URL-RESOLUTION-ERROR

<a id="x-2840ANTS-ROUTES-2FERRORS-3AURL-RESOLUTION-ERROR-20CONDITION-29"></a>

###### [condition](8ef4) ‘40ants-routes/errors:url-resolution-error‘ (error)

**Readers**

<a id="x-2840ANTS-ROUTES-2FERRORS-3ANAMESPACE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3AURL-RESOLUTION-ERROR-29-29"></a>

###### [reader](8ef4) ‘40ants-routes/errors:namespace‘ (url-resolution-error) (:namespace)

<a id="x-2840ANTS-ROUTES-2FERRORS-3AROUTE-NAME-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FERRORS-3AURL-RESOLUTION-ERROR-29-29"></a>

###### [reader](8ef4) ‘40ants-routes/errors:route-name‘ (url-resolution-error) (:route-name)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FFIND-ROUTE-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/FIND-ROUTE

<a id="x-28-23A-28-2824-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FFIND-ROUTE-22-29-20PACKAGE-29"></a>

#### [package](b185) ‘40ants-routes/find-route‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FFIND-ROUTE-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FFIND-ROUTE-3AFIND-ROUTE-20FUNCTION-29"></a>

##### [function](3d53) ‘40ants-routes/find-route:find-route‘ name &key namespace on-match

Find a route by name in the given namespace hierarchy.

If route was found, then returns it.

Additionally, it will call ‘ON-MATCH‘ callable argument
with each route node along path to the leaf route.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FGENERICS-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/GENERICS

<a id="x-28-23A-28-2822-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FGENERICS-22-29-20PACKAGE-29"></a>

#### [package](7799) ‘40ants-routes/generics‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FGENERICS-3FGenerics-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Generics

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AADD-ROUTE-20GENERIC-FUNCTION-29"></a>

##### [generic-function](7fb4) ‘40ants-routes/generics:add-route‘ routes route-or-routes-to-add &key override

Add a route or included-routes object to the routes collection at runtime.
If a route with the same path or namespace already exists, an error will be signaled
unless override is set to true.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AFORMAT-URL-20GENERIC-FUNCTION-29"></a>

##### [generic-function](1f44) ‘40ants-routes/generics:format-url‘ obj stream args

Should write a piece of ‘URL‘ to the ‘STREAM‘ substituting arguments from plist ‘ARGS‘.

When called, it should write a piece of ‘URL‘ without starting backslash.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AGET-ROUTE-BREADCRUMBS-20GENERIC-FUNCTION-29"></a>

##### [generic-function](50cd) ‘40ants-routes/generics:get-route-breadcrumbs‘ node

Returns a list of breadcrumbs associated with given routes node.

‘NODE‘ argument could have [‘40ants-routes/route:route‘][377c] class, [‘40ants-routes/routes:routes‘][cce3] class or an object of other
class bound to some object of [‘40ants-routes/route:route‘][377c] class.

For objects of class [‘40ants-routes/routes:routes‘][cce3] usually the method return breadcrumbs of the
route having the ‘/‘ path.

Method can return from zero to N objects of [‘40ants-routes/breadcrumbs:breadcrumb‘][e419] class.
A returning of multiple breadcrumbs can be useful if route matches to some filename in a nested directory
and you want to give an ability to navigate into intermediate directories.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AHAS-NAMESPACE-P-20GENERIC-FUNCTION-29"></a>

##### [generic-function](5327) ‘40ants-routes/generics:has-namespace-p‘ routes

Returns T of node can respond to [‘node-namespace‘][db92] generic-function call.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AMATCH-URL-20GENERIC-FUNCTION-29"></a>

##### [generic-function](640c) ‘40ants-routes/generics:match-url‘ obj url &key on-match

Checks for complete match of the object to ‘URL‘.

Should return an ‘OBJ‘ if it fully matches to a given url.
May return a sub-object if ‘OBJ‘ matches to a prefix
and sub-object matches the rest of ‘URL‘.

If match was found, the second returned value
should be a alist with matched parameters.

If ‘ON-MATCH‘ argument is given, then in any case
of match, full or prefix, calls ‘ON-MATCH‘
function with ‘OBJ‘ as a single argument.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3ANODE-NAMESPACE-20GENERIC-FUNCTION-29"></a>

##### [generic-function](222b) ‘40ants-routes/generics:node-namespace‘ routes

Returns a string name of node’s namepace. Works only for objects for which [‘has-namespace-p‘][3eec] returns true.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3APARTIAL-MATCH-URL-20GENERIC-FUNCTION-29"></a>

##### [generic-function](b135) ‘40ants-routes/generics:partial-match-url‘ obj url

Tests of obj matches to the a prefix of ‘URL‘.

If match was found, should return two
values: the object which matches and position of
the character after the matched prefix.

If ‘OBJ‘ is a compound element, then
a sub-element can be returned in case of match.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AURL-PATH-20GENERIC-FUNCTION-29"></a>

##### [generic-function](45ef) ‘40ants-routes/generics:url-path‘ obj

Returns the [‘40ants-routes/url-pattern:url-pattern‘][a13f] associated with the object.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FHANDLER-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/HANDLER

<a id="x-28-23A-28-2821-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FHANDLER-22-29-20PACKAGE-29"></a>

#### [package](01b4) ‘40ants-routes/handler‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FHANDLER-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FHANDLER-3ACALL-HANDLER-20FUNCTION-29"></a>

##### [function](4c47) ‘40ants-routes/handler:call-handler‘

Calls a handler of current route.

Should be called only during [‘40ants-routes/with-url:with-url‘][1c5e] macro body execution.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FINCLUDED-ROUTES-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/INCLUDED-ROUTES

<a id="x-28-23A-28-2829-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FINCLUDED-ROUTES-22-29-20PACKAGE-29"></a>

#### [package](31c6) ‘40ants-routes/included-routes‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FINCLUDED-ROUTES-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FINCLUDED-ROUTES-24INCLUDED-ROUTES-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### INCLUDED-ROUTES

<a id="x-2840ANTS-ROUTES-2FINCLUDED-ROUTES-3AINCLUDED-ROUTES-20CLASS-29"></a>

###### [class](3ce2) ‘40ants-routes/included-routes:included-routes‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FINCLUDED-ROUTES-3AORIGINAL-ROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FINCLUDED-ROUTES-3AINCLUDED-ROUTES-29-29"></a>

###### [reader](b9bd) ‘40ants-routes/included-routes:original-routes‘ (included-routes) (:original-collection)

The original collection that was included

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AURL-PATH-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FINCLUDED-ROUTES-3AINCLUDED-ROUTES-29-29"></a>

###### [reader](43c2) ‘40ants-routes/generics:url-path‘ (included-routes) (:path)

Path to add to all routes in the collection

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FINCLUDED-ROUTES-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FINCLUDED-ROUTES-3AINCLUDED-ROUTES-P-20FUNCTION-29"></a>

##### [function](d0d5) ‘40ants-routes/included-routes:included-routes-p‘ obj

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FMATCHED-ROUTE-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/MATCHED-ROUTE

<a id="x-28-23A-28-2827-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FMATCHED-ROUTE-22-29-20PACKAGE-29"></a>

#### [package](4e55) ‘40ants-routes/matched-route‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FMATCHED-ROUTE-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FMATCHED-ROUTE-24MATCHED-ROUTE-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### MATCHED-ROUTE

<a id="x-2840ANTS-ROUTES-2FMATCHED-ROUTE-3AMATCHED-ROUTE-20CLASS-29"></a>

###### [class](21dc) ‘40ants-routes/matched-route:matched-route‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FMATCHED-ROUTE-3AMATCHED-ROUTE-PARAMETERS-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FMATCHED-ROUTE-3AMATCHED-ROUTE-29-29"></a>

###### [reader](40df) ‘40ants-routes/matched-route:matched-route-parameters‘ (matched-route) (:parameters = nil)

Parameters extracted from the ‘URL‘ pattern as alist where keys are parameter names and values - parameter types.

<a id="x-2840ANTS-ROUTES-2FMATCHED-ROUTE-3AORIGINAL-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FMATCHED-ROUTE-3AMATCHED-ROUTE-29-29"></a>

###### [reader](acf8) ‘40ants-routes/matched-route:original-route‘ (matched-route) (:original-route)

The original [‘route‘][377c] object which has been matched.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FMATCHED-ROUTE-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FMATCHED-ROUTE-3AMATCHED-ROUTE-P-20FUNCTION-29"></a>

##### [function](5224) ‘40ants-routes/matched-route:matched-route-p‘ obj

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FROUTE-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/ROUTE

<a id="x-28-23A-28-2819-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FROUTE-22-29-20PACKAGE-29"></a>

#### [package](a523) ‘40ants-routes/route‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FROUTE-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FROUTE-24ROUTE-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### ROUTE

<a id="x-2840ANTS-ROUTES-2FROUTE-3AROUTE-20CLASS-29"></a>

###### [class](c40a) ‘40ants-routes/route:route‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FROUTE-3AROUTE-HANDLER-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTE-3AROUTE-29-29"></a>

###### [reader](e1d4) ‘40ants-routes/route:route-handler‘ (route) (:handler)

Function to handle the route

<a id="x-2840ANTS-ROUTES-2FROUTE-3AROUTE-METHOD-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTE-3AROUTE-29-29"></a>

###### [reader](e079) ‘40ants-routes/route:route-method‘ (route) (:method = :get)

‘HTTP‘ method (‘GET‘, ‘POST‘, ‘PUT‘, etc.)

<a id="x-2840ANTS-ROUTES-2FROUTE-3AROUTE-NAME-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTE-3AROUTE-29-29"></a>

###### [reader](f77b) ‘40ants-routes/route:route-name‘ (route) (:name)

Name of the route

<a id="x-2840ANTS-ROUTES-2FROUTE-3AROUTE-TITLE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTE-3AROUTE-29-29"></a>

###### [reader](55fc) ‘40ants-routes/route:route-title‘ (route) (:title = nil)

Title for breadcrumbs

<a id="x-2840ANTS-ROUTES-2FGENERICS-3AURL-PATH-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTE-3AROUTE-29-29"></a>

###### [reader](8221) ‘40ants-routes/generics:url-path‘ (route) (:pattern)

‘URL‘ pattern

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FURL-PATTERN-24URL-PATTERN-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### URL-PATTERN

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-20CLASS-29"></a>

###### [class](de0b) ‘40ants-routes/url-pattern:url-pattern‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-PARAMS-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-29-29"></a>

###### [reader](4cbf) ‘40ants-routes/url-pattern:url-pattern-params‘ (url-pattern) (:params)

Alist with parameter types

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-PATTERN-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-29-29"></a>

###### [reader](8878) ‘40ants-routes/url-pattern:url-pattern-pattern‘ (url-pattern) (:pattern)

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-REGEX-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-29-29"></a>

###### [reader](2180) ‘40ants-routes/url-pattern:url-pattern-regex‘ (url-pattern) (:regex)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FROUTE-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FROUTE-3ACURRENT-ROUTE-20FUNCTION-29"></a>

##### [function](122f) ‘40ants-routes/route:current-route‘

Returns the current route.

Should be called only during [‘40ants-routes/with-url:with-url‘][1c5e] macro body execution.

<a id="x-2840ANTS-ROUTES-2FROUTE-3ACURRENT-ROUTE-P-20FUNCTION-29"></a>

##### [function](18bd) ‘40ants-routes/route:current-route-p‘

Returns T if there current route matching the ‘URL‘ was found..

Should be called only during [‘40ants-routes/with-url:with-url‘][1c5e]
or [‘40ants-routes/with-url:with-partially-matched-url‘][1a23] macro body execution.

<a id="x-2840ANTS-ROUTES-2FROUTE-3AROUTEP-20FUNCTION-29"></a>

##### [function](9264) ‘40ants-routes/route:routep‘ obj

Checks if ‘OBJ‘ is of [‘route‘][377c] class.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FROUTE-URL-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/ROUTE-URL

<a id="x-28-23A-28-2823-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FROUTE-URL-22-29-20PACKAGE-29"></a>

#### [package](09bb) ‘40ants-routes/route-url‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FROUTE-URL-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FROUTE-URL-3AROUTE-URL-20FUNCTION-29"></a>

##### [function](61ac) ‘40ants-routes/route-url:route-url‘ name &rest args &key namespace &allow-other-keys

Generate a ‘URL‘ for a named route with the given parameters.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FROUTES-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/ROUTES

<a id="x-28-23A-28-2820-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FROUTES-22-29-20PACKAGE-29"></a>

#### [package](59ce) ‘40ants-routes/routes‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FROUTES-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FROUTES-24ROUTES-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### ROUTES

<a id="x-2840ANTS-ROUTES-2FROUTES-3AROUTES-20CLASS-29"></a>

###### [class](52f1) ‘40ants-routes/routes:routes‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FROUTES-3ACHILDREN-ROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTES-3AROUTES-29-29"></a>

###### [reader](4441) ‘40ants-routes/routes:children-routes‘ (routes) (:children = nil)

List of children in this collection.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3ANODE-NAMESPACE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FROUTES-3AROUTES-29-29"></a>

###### [reader](0986) ‘40ants-routes/generics:node-namespace‘ (routes) (:namespace)

Namespace of this routes collection.

**Accessors**

<a id="x-2840ANTS-ROUTES-2FROUTES-3ACHILDREN-ROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-ROUTES-2FROUTES-3AROUTES-29-29"></a>

###### [accessor](4441) ‘40ants-routes/routes:children-routes‘ (routes) (:children = nil)

List of children in this collection.

<a id="x-2840ANTS-ROUTES-2FGENERICS-3ANODE-NAMESPACE-20-2840ANTS-DOC-2FLOCATIVES-3AACCESSOR-2040ANTS-ROUTES-2FROUTES-3AROUTES-29-29"></a>

###### [accessor](0986) ‘40ants-routes/generics:node-namespace‘ (routes) (:namespace)

Namespace of this routes collection.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FROUTES-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FROUTES-3AROUTESP-20FUNCTION-29"></a>

##### [function](e475) ‘40ants-routes/routes:routesp‘ obj

Checks if object is of class [‘routes‘][cce3].

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FROUTES-3FMacros-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Macros

<a id="x-2840ANTS-ROUTES-2FROUTES-3AROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](f269) ‘40ants-routes/routes:routes‘ (namespace &key (routes-class ’routes)) &body route-definitions

Define a variable holding collection of routes the same way
as [‘40ants-routes/defroutes:defroutes‘][3455] does, but do not bind these routes to the variable.

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FURL-PATTERN-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/URL-PATTERN

<a id="x-28-23A-28-2825-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FURL-PATTERN-22-29-20PACKAGE-29"></a>

#### [package](9930) ‘40ants-routes/url-pattern‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FURL-PATTERN-3FClasses-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Classes

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FURL-PATTERN-24URL-PATTERN-3FCLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

##### URL-PATTERN

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-20CLASS-29"></a>

###### [class](de0b) ‘40ants-routes/url-pattern:url-pattern‘ ()

**Readers**

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-PARAMS-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-29-29"></a>

###### [reader](4cbf) ‘40ants-routes/url-pattern:url-pattern-params‘ (url-pattern) (:params)

Alist with parameter types

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-PATTERN-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-29-29"></a>

###### [reader](8878) ‘40ants-routes/url-pattern:url-pattern-pattern‘ (url-pattern) (:pattern)

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-REGEX-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-29-29"></a>

###### [reader](2180) ‘40ants-routes/url-pattern:url-pattern-regex‘ (url-pattern) (:regex)

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FURL-PATTERN-3FFunctions-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Functions

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3APARSE-URL-PATTERN-20FUNCTION-29"></a>

##### [function](898a) ‘40ants-routes/url-pattern:parse-url-pattern‘ pattern

Parse a ‘URL‘ pattern and extract parameter specifications.

Returns an object of class [‘url-pattern‘][a13f].

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-EQUAL-20FUNCTION-29"></a>

##### [function](9829) ‘40ants-routes/url-pattern:url-pattern-equal‘ left right

Compares two [‘url-pattern‘][a13f] objects

<a id="x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-P-20FUNCTION-29"></a>

##### [function](6b0c) ‘40ants-routes/url-pattern:url-pattern-p‘ obj

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-4040ANTS-ROUTES-2FWITH-URL-3FPACKAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

### 40ANTS-ROUTES/WITH-URL

<a id="x-28-23A-28-2822-29-20BASE-CHAR-20-2E-20-2240ANTS-ROUTES-2FWITH-URL-22-29-20PACKAGE-29"></a>

#### [package](983b) ‘40ants-routes/with-url‘

<a id="x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-7C-4040ANTS-ROUTES-2FWITH-URL-3FMacros-SECTION-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29"></a>

#### Macros

<a id="x-2840ANTS-ROUTES-2FWITH-URL-3AWITH-PARTIALLY-MATCHED-URL-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](6cef) ‘40ants-routes/with-url:with-partially-matched-url‘ (root-routes url) &body body

Execute body with the current routes object corresponding to a given ‘URL‘ argument.

Difference between this macro and [‘with-url‘][1c5e] macro is that [‘with-url‘][1c5e] signals an error
if it is unable to find a leaf route matching to the whole ‘URL‘.

[‘with-partially-matched-url‘][1a23] will try to find a routes path matching as much
of ‘URL‘ as possible. As the result, [‘40ants-routes/route:current-route-p‘][087c] function
might return ‘NIL‘ when ‘URL‘ was not fully matched by [‘with-partially-matched-url‘][1a23].

<a id="x-2840ANTS-ROUTES-2FWITH-URL-3AWITH-URL-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"></a>

##### [macro](56f3) ‘40ants-routes/with-url:with-url‘ (root-routes url) &body body

Execute body with the current routes object corresponding to a given ‘URL‘ argument.

[7261]: https://40ants.com/routes
[e419]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-20CLASS-29
[3f6e]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-PATH-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-29-29
[920e]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-ROUTE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-29-29
[b28f]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-TITLE-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-2040ANTS-ROUTES-2FBREADCRUMBS-3ABREADCRUMB-29-29
[bd21]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FBREADCRUMBS-3AGET-BREADCRUMBS-20FUNCTION-29
[3455]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FDEFROUTES-3ADEFROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[f902]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FDEFROUTES-3AGET-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[2897]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FDEFROUTES-3AINCLUDE-20FUNCTION-29
[a861]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FDEFROUTES-3APOST-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[c587]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FDEFROUTES-3APUT-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[2977]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FERRORS-3ANO-ROUTE-FOR-URL-ERROR-20CONDITION-29
[3eec]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FGENERICS-3AHAS-NAMESPACE-P-20GENERIC-FUNCTION-29
[db92]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FGENERICS-3ANODE-NAMESPACE-20GENERIC-FUNCTION-29
[e530]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FHANDLER-3ACALL-HANDLER-20FUNCTION-29
[087c]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FROUTE-3ACURRENT-ROUTE-P-20FUNCTION-29
[377c]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FROUTE-3AROUTE-20CLASS-29
[fe8a]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FROUTE-URL-3AROUTE-URL-20FUNCTION-29
[77f9]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FROUTES-3AROUTES-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[cce3]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FROUTES-3AROUTES-20CLASS-29
[a13f]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FURL-PATTERN-3AURL-PATTERN-20CLASS-29
[1a23]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FWITH-URL-3AWITH-PARTIALLY-MATCHED-URL-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[1c5e]: https://40ants.com/routes/#x-2840ANTS-ROUTES-2FWITH-URL-3AWITH-URL-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29
[d39a]: https://40ants.com/routes/#x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40DEFINING-ROUTES-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29
[af0d]: https://40ants.com/routes/#x-2840ANTS-ROUTES-DOCS-2FINDEX-3A-3A-40MATCHING-THE-URL-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29
[6959]: https://github.com/40ants/routes
[80be]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L1
[6b1c]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L35
[895a]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L36
[5dcf]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L39
[27fe]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L42
[dec1]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L84
[53c4]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/breadcrumbs.lisp#L92
[31be]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L1
[8a76]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L120
[bb9a]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L124
[aba5]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L128
[c5b9]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L140
[f7eb]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L34
[f269]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/defroutes.lisp#L72
[2356]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L1
[0a57]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L24
[ac63]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L35
[4370]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L49
[1b13]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L63
[8ef4]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L74
[4f03]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/errors.lisp#L85
[b185]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/find-route.lisp#L1
[3d53]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/find-route.lisp#L103
[7799]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L1
[640c]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L14
[b135]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L30
[1f44]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L42
[45ef]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L48
[5327]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L52
[222b]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L58
[7fb4]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L62
[50cd]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/generics.lisp#L68
[01b4]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/handler.lisp#L1
[4c47]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/handler.lisp#L15
[31c6]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/included-routes.lisp#L1
[3ce2]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/included-routes.lisp#L20
[b9bd]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/included-routes.lisp#L21
[43c2]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/included-routes.lisp#L25
[d0d5]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/included-routes.lisp#L39
[4e55]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/matched-route.lisp#L1
[21dc]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/matched-route.lisp#L22
[acf8]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/matched-route.lisp#L23
[40df]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/matched-route.lisp#L27
[5224]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/matched-route.lisp#L44
[09bb]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route-url.lisp#L1
[61ac]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route-url.lisp#L27
[a523]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L1
[c40a]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L32
[f77b]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L33
[8221]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L37
[e1d4]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L41
[55fc]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L45
[e079]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L50
[9264]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L68
[18bd]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L80
[122f]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/route.lisp#L88
[59ce]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/routes.lisp#L1
[52f1]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/routes.lisp#L21
[4441]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/routes.lisp#L22
[0986]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/routes.lisp#L26
[e475]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/routes.lisp#L39
[9930]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L1
[6b0c]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L172
[9829]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L179
[de0b]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L24
[8878]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L25
[2180]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L28
[4cbf]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L31
[898a]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/url-pattern.lisp#L46
[983b]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/with-url.lisp#L1
[6cef]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/with-url.lisp#L112
[56f3]: https://github.com/40ants/routes/blob/b599659e5cbe7655ff69a9d4298359de9ef65acd/src/with-url.lisp#L86
[54bf]: https://github.com/40ants/routes/issues
[8236]: https://quickdocs.org/alexandria
[49b9]: https://quickdocs.org/cl-ppcre
[c41d]: https://quickdocs.org/serapeum
[3dcd]: https://quickdocs.org/split-sequence
[ef7f]: https://quickdocs.org/str

* * *
###### [generated by [40ANTS-DOC](https://40ants.com/doc/)]

Version

0.4.0

Defsystem Dependency

40ants-asdf-system (system).

Dependencies
Source

40ants-routes.asd.


2.2 40ants-routes/route

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.3 40ants-routes/errors

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Source

40ants-routes.asd.


2.4 40ants-routes/url-pattern

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.5 40ants-routes/generics

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Source

40ants-routes.asd.


2.6 40ants-routes/vars

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependency

serapeum (system).

Source

40ants-routes.asd.


2.7 40ants-routes/routes

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.8 40ants-routes/included-routes

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.9 40ants-routes/with-url

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.10 40ants-routes/matched-route

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.11 40ants-routes/find-route

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.12 40ants-routes/defroutes

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.13 40ants-routes/route-url

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.14 40ants-routes/utils

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependency

40ants-routes/errors (system).

Source

40ants-routes.asd.


2.15 40ants-routes/breadcrumbs

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


2.16 40ants-routes/add-route

Author

Alexander Artemenko <>

Home Page

https://40ants.com/routes

Source Control

(GIT https://github.com/40ants/routes)

Bug Tracker

https://github.com/40ants/routes/issues

License

Unlicense

Dependencies
Source

40ants-routes.asd.


3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


3.1 Lisp


3.1.2 40ants-routes/route/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/route (system).

Packages

40ants-routes/route.

Public Interface
Internals

replace-parameters (function).


3.1.3 40ants-routes/errors/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/errors (system).

Packages

40ants-routes/errors.

Public Interface

3.1.4 40ants-routes/url-pattern/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/url-pattern (system).

Packages

40ants-routes/url-pattern.

Public Interface
Internals

match-url (function).


3.1.5 40ants-routes/generics/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/generics (system).

Packages

40ants-routes/generics.

Public Interface

3.1.6 40ants-routes/vars/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/vars (system).

Packages

40ants-routes/vars.

Internals

3.1.7 40ants-routes/routes/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/routes (system).

Packages

40ants-routes/routes.

Public Interface

3.1.8 40ants-routes/included-routes/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/included-routes (system).

Packages

40ants-routes/included-routes.

Public Interface

3.1.9 40ants-routes/with-url/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/with-url (system).

Packages

40ants-routes/with-url.

Public Interface
Internals

3.1.10 40ants-routes/matched-route/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/matched-route (system).

Packages

40ants-routes/matched-route.

Public Interface
Internals

def-proxy-method (macro).


3.1.11 40ants-routes/find-route/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/find-route (system).

Packages

40ants-routes/find-route.

Public Interface

find-route (function).

Internals

3.1.12 40ants-routes/defroutes/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/defroutes (system).

Packages

40ants-routes/defroutes.

Public Interface
Internals

3.1.13 40ants-routes/route-url/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/route-url (system).

Packages

40ants-routes/route-url.

Public Interface

route-url (function).


3.1.14 40ants-routes/utils/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/utils (system).

Packages

40ants-routes/utils.

Internals

make-new-namespace (function).


3.1.15 40ants-routes/breadcrumbs/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/breadcrumbs (system).

Packages

40ants-routes/breadcrumbs.

Public Interface
Internals

3.1.16 40ants-routes/add-route/file-type.lisp

Source

40ants-routes.asd.

Parent Component

40ants-routes/add-route (system).

Packages

40ants-routes/add-route.

Public Interface
Internals

4 Packages

Packages are listed by definition order.


4.1 40ants-routes/generics

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

4.2 40ants-routes/matched-route

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

def-proxy-method (macro).


4.3 40ants-routes/errors

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

4.4 40ants-routes/utils

Source

file-type.lisp.

Use List

common-lisp.

Internals

make-new-namespace (function).


4.5 40ants-routes/with-url

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

4.6 40ants-routes/vars

Source

file-type.lisp.

Use List

common-lisp.

Internals

4.7 40ants-routes/breadcrumbs

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

4.8 40ants-routes/route-url

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

route-url (function).


4.9 40ants-routes/url-pattern

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

match-url (function).


4.10 40ants-routes/add-route

Source

file-type.lisp.

Use List

common-lisp.

Internals

4.11 40ants-routes/defroutes

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

4.12 40ants-routes/route

Source

file-type.lisp.

Use List

common-lisp.

Public Interface
Internals

replace-parameters (function).


4.13 40ants-routes/included-routes

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

4.14 40ants-routes/routes

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

4.15 40ants-routes/find-route

Source

file-type.lisp.

Use List

common-lisp.

Public Interface

find-route (function).

Internals

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


5.1 Public Interface


5.1.1 Macros

Macro: defroutes ((var-name &key namespace routes-class) &body route-definitions)

Define a variable holding collection of routes and binds it to a variable VAR-NAME.

This macro acts like a DEFVAR - if there is already an 40ANTS-ROUTES/ROUTES:ROUTES object bound to the variable, then it is not replaced, but updated inplace. This allows to change routes on the fly even if they were included into some routes hierarchy.

You can use ROUTES-CLASS argument to supply you own class, inherited from ROUTES. This way it might be possible to special processing for these routes, for example, inject some special code for representing this routes in the "breadcrumbs".

Use GET, POST, PUT, DELETE macros in ROUTE-DEFINITIONS forms.

See more examples how to define routes in the 40ANTS-ROUTES-DOCS/INDEX::@DEFINING-ROUTES section.

Package

40ants-routes/defroutes.

Source

file-type.lisp.

Macro: get ((path &key name title route-class) &body handler-body)
Package

40ants-routes/defroutes.

Source

file-type.lisp.

Macro: post ((path &key name title route-class) &body handler-body)
Package

40ants-routes/defroutes.

Source

file-type.lisp.

Macro: put ((path &key name title route-class) &body handler-body)
Package

40ants-routes/defroutes.

Source

file-type.lisp.

Macro: routes ((namespace &key routes-class) &body route-definitions)

Define a variable holding collection of routes the same way
as 40ANTS-ROUTES/DEFROUTES:DEFROUTES does, but do not bind these routes to the variable.

Package

40ants-routes/routes.

Source

file-type.lisp.

Macro: with-partially-matched-url ((root-routes url) &body body)

Execute body with the current routes object corresponding to a given URL argument.

Difference between this macro and WITH-URL macro is that WITH-URL signals an error if it is unable to find a leaf route matching to the whole URL.

WITH-PARTIALLY-MATCHED-URL will try to find a routes path matching as much
of URL as possible. As the result, 40ANTS-ROUTES/ROUTE:CURRENT-ROUTE-P function might return NIL when URL was not fully matched by WITH-PARTIALLY-MATCHED-URL.

Package

40ants-routes/with-url.

Source

file-type.lisp.

Macro: with-url ((root-routes url) &body body)

Execute body with the current routes object corresponding to a given URL argument.

Package

40ants-routes/with-url.

Source

file-type.lisp.


5.1.2 Ordinary functions

Function: current-route ()

Returns the current route.

Should be called only during 40ANTS-ROUTES/WITH-URL:WITH-URL macro body execution.

Package

40ants-routes/route.

Source

file-type.lisp.

Function: current-route-p ()

Returns T if there current route matching the URL was found..

Should be called only during 40ANTS-ROUTES/WITH-URL:WITH-URL
or 40ANTS-ROUTES/WITH-URL:WITH-PARTIALLY-MATCHED-URL macro body execution.

Package

40ants-routes/route.

Source

file-type.lisp.

Function: find-route (name &key namespace on-match)

Find a route by name in the given namespace hierarchy.

If route was found, then returns it.

Additionally, it will call ON-MATCH callable argument with each route node along path to the leaf route.

Package

40ants-routes/find-route.

Source

file-type.lisp.

Function: get-breadcrumbs ()

Generate breadcrumbs list for the current URL set by 40ANTS-ROUTES/WITH-URL:WITH-URL macro.

Package

40ants-routes/breadcrumbs.

Source

file-type.lisp.

Function: include (routes &key path)
Package

40ants-routes/defroutes.

Source

file-type.lisp.

Function: included-routes-p (obj)
Package

40ants-routes/included-routes.

Source

file-type.lisp.

Function: make-breadcrumb (title)

Creates a breadcrumb item.

Package

40ants-routes/breadcrumbs.

Source

file-type.lisp.

Function: matched-route-p (obj)
Package

40ants-routes/matched-route.

Source

file-type.lisp.

Function: parse-url-pattern (pattern)

Parse a URL pattern and extract parameter specifications.

Returns an object of class URL-PATTERN.

Package

40ants-routes/url-pattern.

Source

file-type.lisp.

Function: route-url (name &rest args &key namespace &allow-other-keys)

Generate a URL for a named route with the given parameters.

Package

40ants-routes/route-url.

Source

file-type.lisp.

Function: routep (obj)

Checks if OBJ is of ROUTE class.

Package

40ants-routes/route.

Source

file-type.lisp.

Function: routesp (obj)

Checks if object is of class ROUTES.

Package

40ants-routes/routes.

Source

file-type.lisp.

Function: url-pattern-equal (left right)

Compares two URL-PATTERN objects

Package

40ants-routes/url-pattern.

Source

file-type.lisp.

Function: url-pattern-p (obj)
Package

40ants-routes/url-pattern.

Source

file-type.lisp.


5.1.3 Generic functions

Generic Function: add-route (routes route-or-routes-to-add &key override)

Add a route or included-routes object to the routes collection at runtime.
If a route with the same path or namespace already exists, an error will be signaled unless override is set to true.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: add-route ((routes routes) (route included-routes) &key override)

Add any other type of object to the routes collection at runtime.
If the object has a namespace and a route with the same namespace already exists, an error will be signaled unless override is true.

Source

file-type.lisp.

Method: add-route ((routes routes) (routes-to-add routes) &key override)

We only allow to include objects of ROUTE or INCLUDED-ROUTES type.

Thus we should wrap ROUTES with INCLUDED-ROUTES and path /

Source

file-type.lisp.

Method: add-route ((routes routes) (route route) &key override)

Add a route to the routes collection at runtime.
If a route with the same path already exists, an error will be signaled unless override is set to true.

Source

file-type.lisp.

Generic Reader: argument-missing-error-parameter (condition)
Package

40ants-routes/errors.

Methods
Reader Method: argument-missing-error-parameter ((condition argument-missing-error))
Source

file-type.lisp.

Target Slot

missing-parameter.

Generic Reader: argument-missing-error-route-name (condition)
Package

40ants-routes/errors.

Methods
Reader Method: argument-missing-error-route-name ((condition argument-missing-error))
Source

file-type.lisp.

Target Slot

route-name.

Generic Reader: breadcrumb-path (object)
Package

40ants-routes/breadcrumbs.

Methods
Reader Method: breadcrumb-path ((breadcrumb breadcrumb))

automatically generated reader method

Source

file-type.lisp.

Target Slot

path.

Generic Reader: breadcrumb-route (object)
Package

40ants-routes/breadcrumbs.

Methods
Reader Method: breadcrumb-route ((breadcrumb breadcrumb))

automatically generated reader method

Source

file-type.lisp.

Target Slot

route.

Generic Reader: breadcrumb-title (object)
Package

40ants-routes/breadcrumbs.

Methods
Reader Method: breadcrumb-title ((breadcrumb breadcrumb))

automatically generated reader method

Source

file-type.lisp.

Target Slot

title.

Generic Function: children-routes (object)
Package

40ants-routes/routes.

Methods
Method: children-routes ((included included-routes))
Source

file-type.lisp.

Reader Method: children-routes ((routes routes))

List of children in this collection.

Source

file-type.lisp.

Target Slot

children.

Generic Function: (setf children-routes) (object)
Package

40ants-routes/routes.

Methods
Writer Method: (setf children-routes) :around ((obj routes))
Source

file-type.lisp.

Target Slot

children.

Method: (setf children-routes) ((routes routes))

List of children in this collection.

Source

file-type.lisp.

Generic Reader: error-routes-path (condition)
Package

40ants-routes/errors.

Methods
Reader Method: error-routes-path ((condition no-route-for-url-error))
Source

file-type.lisp.

Target Slot

routes-path.

Generic Reader: error-url (condition)
Package

40ants-routes/errors.

Methods
Reader Method: error-url ((condition no-route-for-url-error))
Source

file-type.lisp.

Target Slot

url.

Generic Reader: existing-namespace (condition)
Package

40ants-routes/errors.

Methods
Reader Method: existing-namespace ((condition namespace-duplication-error))
Source

file-type.lisp.

Target Slot

namespace.

Generic Reader: existing-path (condition)
Package

40ants-routes/errors.

Methods
Reader Method: existing-path ((condition path-duplication-error))
Source

file-type.lisp.

Target Slot

path.

Generic Reader: existing-route (condition)
Package

40ants-routes/errors.

Methods
Reader Method: existing-route ((condition path-duplication-error))
Source

file-type.lisp.

Target Slot

existing-route.

Reader Method: existing-route ((condition namespace-duplication-error))
Source

file-type.lisp.

Target Slot

existing-route.

Generic Function: format-url (obj stream args)

Should write a piece of URL to the STREAM substituting arguments from plist ARGS.
When called, it should write a piece of URL without starting backslash.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: format-url ((obj included-routes) stream args)
Source

file-type.lisp.

Method: format-url ((obj routes) stream args)
Source

file-type.lisp.

Method: format-url ((obj url-pattern) stream args)
Source

file-type.lisp.

Method: format-url ((obj route) stream args)
Source

file-type.lisp.

Generic Reader: full-namespace (condition)
Package

40ants-routes/errors.

Methods
Reader Method: full-namespace ((condition no-common-elements-error))
Source

file-type.lisp.

Target Slot

full-namespace.

Generic Function: get-route-breadcrumbs (node)

Returns a list of breadcrumbs associated with given routes node.

NODE argument could have 40ANTS-ROUTES/ROUTE:ROUTE class, 40ANTS-ROUTES/ROUTES:ROUTES class or an object of other class bound to some object of 40ANTS-ROUTES/ROUTE:ROUTE class.

For objects of class 40ANTS-ROUTES/ROUTES:ROUTES usually the method return breadcrumbs of the
route having the ‘/‘ path.

Method can return from zero to N objects of 40ANTS-ROUTES/BREADCRUMBS:BREADCRUMB class.
A returning of multiple breadcrumbs can be useful if route matches to some filename in a nested directory
and you want to give an ability to navigate into intermediate directories.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: get-route-breadcrumbs ((obj routes))
Source

file-type.lisp.

Method: get-route-breadcrumbs ((obj included-routes))
Source

file-type.lisp.

Method: get-route-breadcrumbs ((obj route))
Source

file-type.lisp.

Method: get-route-breadcrumbs :around (obj)
Source

file-type.lisp.

Method: get-route-breadcrumbs ((obj matched-route))
Source

file-type.lisp.

Generic Function: has-namespace-p (routes)

Returns T of node can respond to NODE-NAMESPACE generic-function call.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: has-namespace-p ((obj included-routes))
Source

file-type.lisp.

Method: has-namespace-p ((obj routes))
Source

file-type.lisp.

Method: has-namespace-p (routes)
Generic Function: match-url (obj url &key on-match)

Checks for complete match of the object to URL.

Should return an OBJ if it fully matches to a given url. May return a sub-object if OBJ matches to a prefix and sub-object matches the rest of URL.

If match was found, the second returned value
should be a alist with matched parameters.

If ON-MATCH argument is given, then in any case
of match, full or prefix, calls ON-MATCH
function with OBJ as a single argument.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: match-url ((obj route) (url string) &key on-match)
Source

file-type.lisp.

Method: match-url ((obj included-routes) (url string) &key on-match)
Source

file-type.lisp.

Method: match-url ((obj routes) (url string) &key on-match)
Source

file-type.lisp.

Method: match-url ((obj url-pattern) (url string) &key on-match)
Source

file-type.lisp.

Generic Reader: matched-route-parameters (object)
Package

40ants-routes/matched-route.

Methods
Reader Method: matched-route-parameters ((matched-route matched-route))

Parameters extracted from the URL pattern as alist where keys are parameter names and values - parameter types.

Source

file-type.lisp.

Target Slot

parameters.

Generic Reader: namespace (condition)
Package

40ants-routes/errors.

Methods
Reader Method: namespace ((condition url-resolution-error))
Source

file-type.lisp.

Target Slot

namespace.

Generic Reader: new-route (condition)
Package

40ants-routes/errors.

Methods
Reader Method: new-route ((condition path-duplication-error))
Source

file-type.lisp.

Target Slot

new-route.

Reader Method: new-route ((condition namespace-duplication-error))
Source

file-type.lisp.

Target Slot

new-route.

Generic Function: node-namespace (routes)

Returns a string name of node’s namepace. Works only for objects for which HAS-NAMESPACE-P returns true.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: node-namespace ((included included-routes))
Source

file-type.lisp.

Reader Method: node-namespace ((routes routes))

Namespace of this routes collection.

Source

file-type.lisp.

Target Slot

namespace.

Generic Writer: (setf node-namespace) (object)
Package

40ants-routes/generics.

Methods
Writer Method: (setf node-namespace) ((routes routes))

Namespace of this routes collection.

Source

file-type.lisp.

Target Slot

namespace.

Generic Reader: original-route (object)
Package

40ants-routes/matched-route.

Methods
Reader Method: original-route ((matched-route matched-route))

The original ROUTE object which has been matched.

Source

file-type.lisp.

Target Slot

original-route.

Generic Reader: original-routes (object)
Package

40ants-routes/included-routes.

Methods
Reader Method: original-routes ((included-routes included-routes))

The original collection that was included

Source

file-type.lisp.

Target Slot

original-collection.

Generic Function: partial-match-url (obj url)

Tests of obj matches to the a prefix of URL.

If match was found, should return two values: the object which matches and position of the character after the matched prefix.

If OBJ is a compound element, then
a sub-element can be returned in case of match.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: partial-match-url ((obj url-pattern) (url string))
Source

file-type.lisp.

Generic Reader: relative-namespace (condition)
Package

40ants-routes/errors.

Methods
Reader Method: relative-namespace ((condition no-common-elements-error))
Source

file-type.lisp.

Target Slot

relative-namespace.

Generic Function: route-handler (object)
Package

40ants-routes/route.

Methods
Method: route-handler ((obj matched-route))
Source

file-type.lisp.

Reader Method: route-handler ((route route))

Function to handle the route

Source

file-type.lisp.

Target Slot

handler.

Generic Function: route-method (object)
Package

40ants-routes/route.

Methods
Method: route-method ((obj matched-route))
Source

file-type.lisp.

Reader Method: route-method ((route route))

HTTP method (GET, POST, PUT, etc.)

Source

file-type.lisp.

Target Slot

method.

Generic Reader: route-name (condition)
Package

40ants-routes/errors.

Methods
Reader Method: route-name ((condition url-resolution-error))
Source

file-type.lisp.

Target Slot

route-name.

Generic Function: route-name (object)
Package

40ants-routes/route.

Methods
Method: route-name ((obj matched-route))
Source

file-type.lisp.

Reader Method: route-name ((route route))

Name of the route

Source

file-type.lisp.

Target Slot

name.

Generic Function: route-title (object)
Package

40ants-routes/route.

Methods
Method: route-title ((obj matched-route))
Source

file-type.lisp.

Reader Method: route-title ((route route))

Title for breadcrumbs

Source

file-type.lisp.

Target Slot

title.

Generic Function: url-path (obj)

Returns the 40ANTS-ROUTES/URL-PATTERN:URL-PATTERN associated with the object.

Package

40ants-routes/generics.

Source

file-type.lisp.

Methods
Method: url-path ((obj matched-route))
Source

file-type.lisp.

Reader Method: url-path ((included-routes included-routes))

Path to add to all routes in the collection

Source

file-type.lisp.

Target Slot

path.

Reader Method: url-path ((route route))

URL pattern

Source

file-type.lisp.

Target Slot

pattern.

Generic Reader: url-pattern-params (object)
Package

40ants-routes/url-pattern.

Methods
Reader Method: url-pattern-params ((url-pattern url-pattern))

Alist with parameter types

Source

file-type.lisp.

Target Slot

params.

Generic Reader: url-pattern-pattern (object)
Package

40ants-routes/url-pattern.

Methods
Reader Method: url-pattern-pattern ((url-pattern url-pattern))

automatically generated reader method

Source

file-type.lisp.

Target Slot

pattern.

Generic Reader: url-pattern-regex (object)
Package

40ants-routes/url-pattern.

Methods
Reader Method: url-pattern-regex ((url-pattern url-pattern))

automatically generated reader method

Source

file-type.lisp.

Target Slot

regex.


5.1.4 Standalone methods

Method: print-object ((obj matched-route) stream)
Source

file-type.lisp.

Method: print-object ((obj breadcrumb) stream)
Source

file-type.lisp.

Method: print-object ((obj url-pattern) stream)
Source

file-type.lisp.

Method: print-object ((obj route) stream)
Source

file-type.lisp.

Method: print-object ((obj included-routes) stream)
Source

file-type.lisp.

Method: print-object ((obj routes) stream)
Source

file-type.lisp.


5.1.5 Conditions

Condition: argument-missing-error
Package

40ants-routes/errors.

Source

file-type.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: route-name
Initargs

:route-name

Readers

argument-missing-error-route-name.

Writers

This slot is read-only.

Slot: missing-parameter
Initargs

:missing-parameter

Readers

argument-missing-error-parameter.

Writers

This slot is read-only.

Condition: namespace-duplication-error
Package

40ants-routes/errors.

Source

file-type.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: namespace
Initargs

:namespace

Readers

existing-namespace.

Writers

This slot is read-only.

Slot: existing-route
Initargs

:existing-route

Readers

existing-route.

Writers

This slot is read-only.

Slot: new-route
Initargs

:new-route

Readers

new-route.

Writers

This slot is read-only.

Condition: no-common-elements-error
Package

40ants-routes/errors.

Source

file-type.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: full-namespace
Initargs

:full-namespace

Readers

full-namespace.

Writers

This slot is read-only.

Slot: relative-namespace
Initargs

:relative-namespace

Readers

relative-namespace.

Writers

This slot is read-only.

Condition: no-route-for-url-error
Package

40ants-routes/errors.

Source

file-type.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: url
Initargs

:url

Readers

error-url.

Writers

This slot is read-only.

Slot: routes-path

A path of routes corresponding matching to the prefix of the current URL.

Initargs

:routes-path

Readers

error-routes-path.

Writers

This slot is read-only.

Condition: path-duplication-error
Package

40ants-routes/errors.

Source

file-type.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: path
Initargs

:path

Readers

existing-path.

Writers

This slot is read-only.

Slot: existing-route
Initargs

:existing-route

Readers

existing-route.

Writers

This slot is read-only.

Slot: new-route
Initargs

:new-route

Readers

new-route.

Writers

This slot is read-only.

Condition: url-resolution-error
Package

40ants-routes/errors.

Source

file-type.lisp.

Direct superclasses

error.

Direct methods
Direct slots
Slot: route-name
Initargs

:route-name

Readers

route-name.

Writers

This slot is read-only.

Slot: namespace
Initargs

:namespace

Readers

namespace.

Writers

This slot is read-only.


5.1.6 Classes

Class: breadcrumb
Package

40ants-routes/breadcrumbs.

Source

file-type.lisp.

Direct methods
Direct slots
Slot: path
Type

string

Initargs

:path

Readers

breadcrumb-path.

Writers

This slot is read-only.

Slot: title
Type

string

Initargs

:title

Readers

breadcrumb-title.

Writers

This slot is read-only.

Slot: route
Package

40ants-routes/route.

Type

40ants-routes/route:route

Initargs

:route

Readers

breadcrumb-route.

Writers

This slot is read-only.

Class: included-routes
Package

40ants-routes/included-routes.

Source

file-type.lisp.

Direct methods
Direct slots
Slot: original-collection

The original collection that was included

Type

40ants-routes/routes:routes

Initargs

:original-collection

Readers

original-routes.

Writers

This slot is read-only.

Slot: path

Path to add to all routes in the collection

Type

40ants-routes/url-pattern:url-pattern

Initargs

:path

Readers

url-path.

Writers

This slot is read-only.

Class: matched-route
Package

40ants-routes/matched-route.

Source

file-type.lisp.

Direct methods
Direct slots
Slot: original-route

The original ROUTE object which has been matched.

Type

40ants-routes/route:route

Initargs

:original-route

Readers

original-route.

Writers

This slot is read-only.

Slot: parameters

Parameters extracted from the URL pattern as alist where keys are parameter names and values - parameter types.

Type

(serapeum:soft-alist-of keyword (or integer string))

Initargs

:parameters

Readers

matched-route-parameters.

Writers

This slot is read-only.

Class: route
Package

40ants-routes/route.

Source

file-type.lisp.

Direct methods
Direct slots
Slot: name

Name of the route

Type

string

Initargs

:name

Readers

route-name.

Writers

This slot is read-only.

Slot: pattern

URL pattern

Type

40ants-routes/url-pattern:url-pattern

Initargs

:pattern

Readers

url-path.

Writers

This slot is read-only.

Slot: handler

Function to handle the route

Type

function

Initargs

:handler

Readers

route-handler.

Writers

This slot is read-only.

Slot: title

Title for breadcrumbs

Type

(or null string function)

Initargs

:title

Readers

route-title.

Writers

This slot is read-only.

Slot: method

HTTP method (GET, POST, PUT, etc.)

Package

common-lisp.

Type

keyword

Initform

:get

Initargs

:method

Readers

route-method.

Writers

This slot is read-only.

Class: routes
Package

40ants-routes/routes.

Source

file-type.lisp.

Direct methods
Direct slots
Slot: children

List of children in this collection.

Initargs

:children

Readers

children-routes.

Writers

(setf children-routes).

Slot: namespace

Namespace of this routes collection.

Type

string

Initargs

:namespace

Readers

node-namespace.

Writers

(setf node-namespace).

Class: url-pattern
Package

40ants-routes/url-pattern.

Source

file-type.lisp.

Direct methods
Direct slots
Slot: pattern
Type

string

Initargs

:pattern

Readers

url-pattern-pattern.

Writers

This slot is read-only.

Slot: regex
Type

string

Initargs

:regex

Readers

url-pattern-regex.

Writers

This slot is read-only.

Slot: params

Alist with parameter types

Type

list

Initargs

:params

Readers

url-pattern-params.

Writers

This slot is read-only.


5.2 Internals


5.2.1 Special variables

Special Variable: *breadcrumbs-path*
Package

40ants-routes/breadcrumbs.

Source

file-type.lisp.

Special Variable: *current-namespace*

Current namespace of the current route. Will be bound during WITH-URL macro body exectution.

Holds a list of namespace names starting from the current route’s namespace and ending with root routes node.

Package

40ants-routes/vars.

Source

file-type.lisp.

Special Variable: *current-route*

Current route collection for route resolution.

Package

40ants-routes/vars.

Source

file-type.lisp.

Special Variable: *routes-path*

This variable will be bound during WITH-URL macro body execution.

It contains a chain of routes matched to the given url.

For example if we call WITH-URL on /company/blog/post-slug, then in the *ROUTES-PATH* will be three items:

“‘
(lisp (ROUTE /post-slug)
(INCLUDED-ROUTES /blog/)
(INCLUDED-ROUTES /company/))
“‘

Package

40ants-routes/vars.

Source

file-type.lisp.


5.2.2 Macros

Macro: def-proxy-method (name)
Package

40ants-routes/matched-route.

Source

file-type.lisp.

Macro: delete ((path &key name title route-class) &body handler-body)
Package

40ants-routes/defroutes.

Source

file-type.lisp.


5.2.3 Ordinary functions

Function: absolute-namespace-p (namespace)
Package

40ants-routes/find-route.

Source

file-type.lisp.

Function: call-with-partially-matched-url (root-routes url thunk)
Package

40ants-routes/with-url.

Source

file-type.lisp.

Function: call-with-url (root-routes url thunk)
Package

40ants-routes/with-url.

Source

file-type.lisp.

Function: current-breadcrumb-path ()
Package

40ants-routes/breadcrumbs.

Source

file-type.lisp.

Function: current-breadcrumb-route ()
Package

40ants-routes/breadcrumbs.

Source

file-type.lisp.

Function: find-route-for-url (routes url)

Searches a route matching URL.

URL can match some nested route.

Package

40ants-routes/with-url.

Source

file-type.lisp.

Function: generate-route (http-method path name title handler-body &key route-class)

A helper to use in your own macro to create routes

Package

40ants-routes/defroutes.

Source

file-type.lisp.

Function: make-new-namespace (full-namespace relative-namespace)

Create a new namespace by combining the full namespace of the current page with a partial namespace of the target page.

Examples:

“‘
(make-new-namespace ’("server" "app" "blog" "post")
’("app" "admin" "users"))
;; => ("server" "app" "admin" "users")

(make-new-namespace ’("server" "app" "blog" "post")
’("blog" "moderation" "posts"))
;; => ("server" "app" "blog" "moderation" "posts")

(make-new-namespace ’("server" "app" "blog" "post") ’("app"))
;; => ("server" "app")

(make-new-namespace ’("server" "app" "blog" "post")
’("server" "another-app" "images"))
;; => ("server" "another-app" "images")

(make-new-namespace ’("server" "app" "blog" "post") ’("some-other-server" "app" "admin"))
;; => signals error NO-COMMON-ELEMENTS-ERROR
“‘

Package

40ants-routes/utils.

Source

file-type.lisp.

Function: match-url (pattern url &key partialp)

Match a URL against a route.

Returns three values where:

- first will be T if pattern was matched
- the second value is parameter values alist
- and the third one is position of the character right after the matched piece of URL

If PARTIALP argument is T then full match is required and the third returned value will be equal to a URL length.

Package

40ants-routes/url-pattern.

Source

file-type.lisp.

Function: replace-parameters (url-pattern args)

Replace parameters in a URL pattern with their values.

- URL-PATTERN - The original URL pattern (e.g., ’/<string:slug>’) - ARGS - Property list of parameter values (:name value ...)

Package

40ants-routes/route.

Source

file-type.lisp.

Function: search-child-route-with-name (routes name)
Package

40ants-routes/find-route.

Source

file-type.lisp.

Function: search-route-with-namespace (children namespace)
Package

40ants-routes/add-route.

Source

file-type.lisp.

Function: search-route-with-path (children path)
Package

40ants-routes/add-route.

Source

file-type.lisp.

Function: search-routes-with-namespace (root-routes namespaces &key on-match)

If given, ON-MATCH callable will be called starting from the root node to the last routes object matching the last namespace in the list.

Package

40ants-routes/find-route.

Source

file-type.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   (  
A   B   C   D   E   F   G   H   I   M   N   O   P   R   S   U   W  
Index Entry  Section

(
(setf children-routes): Public generic functions
(setf children-routes): Public generic functions
(setf children-routes): Public generic functions
(setf node-namespace): Public generic functions
(setf node-namespace): Public generic functions

A
absolute-namespace-p: Private ordinary functions
add-route: Public generic functions
add-route: Public generic functions
add-route: Public generic functions
add-route: Public generic functions
argument-missing-error-parameter: Public generic functions
argument-missing-error-parameter: Public generic functions
argument-missing-error-route-name: Public generic functions
argument-missing-error-route-name: Public generic functions

B
breadcrumb-path: Public generic functions
breadcrumb-path: Public generic functions
breadcrumb-route: Public generic functions
breadcrumb-route: Public generic functions
breadcrumb-title: Public generic functions
breadcrumb-title: Public generic functions

C
call-with-partially-matched-url: Private ordinary functions
call-with-url: Private ordinary functions
children-routes: Public generic functions
children-routes: Public generic functions
children-routes: Public generic functions
current-breadcrumb-path: Private ordinary functions
current-breadcrumb-route: Private ordinary functions
current-route: Public ordinary functions
current-route-p: Public ordinary functions

D
def-proxy-method: Private macros
defroutes: Public macros
delete: Private macros

E
error-routes-path: Public generic functions
error-routes-path: Public generic functions
error-url: Public generic functions
error-url: Public generic functions
existing-namespace: Public generic functions
existing-namespace: Public generic functions
existing-path: Public generic functions
existing-path: Public generic functions
existing-route: Public generic functions
existing-route: Public generic functions
existing-route: Public generic functions

F
find-route: Public ordinary functions
find-route-for-url: Private ordinary functions
format-url: Public generic functions
format-url: Public generic functions
format-url: Public generic functions
format-url: Public generic functions
format-url: Public generic functions
full-namespace: Public generic functions
full-namespace: Public generic functions
Function, absolute-namespace-p: Private ordinary functions
Function, call-with-partially-matched-url: Private ordinary functions
Function, call-with-url: Private ordinary functions
Function, current-breadcrumb-path: Private ordinary functions
Function, current-breadcrumb-route: Private ordinary functions
Function, current-route: Public ordinary functions
Function, current-route-p: Public ordinary functions
Function, find-route: Public ordinary functions
Function, find-route-for-url: Private ordinary functions
Function, generate-route: Private ordinary functions
Function, get-breadcrumbs: Public ordinary functions
Function, include: Public ordinary functions
Function, included-routes-p: Public ordinary functions
Function, make-breadcrumb: Public ordinary functions
Function, make-new-namespace: Private ordinary functions
Function, match-url: Private ordinary functions
Function, matched-route-p: Public ordinary functions
Function, parse-url-pattern: Public ordinary functions
Function, replace-parameters: Private ordinary functions
Function, route-url: Public ordinary functions
Function, routep: Public ordinary functions
Function, routesp: Public ordinary functions
Function, search-child-route-with-name: Private ordinary functions
Function, search-route-with-namespace: Private ordinary functions
Function, search-route-with-path: Private ordinary functions
Function, search-routes-with-namespace: Private ordinary functions
Function, url-pattern-equal: Public ordinary functions
Function, url-pattern-p: Public ordinary functions

G
generate-route: Private ordinary functions
Generic Function, (setf children-routes): Public generic functions
Generic Function, (setf node-namespace): Public generic functions
Generic Function, add-route: Public generic functions
Generic Function, argument-missing-error-parameter: Public generic functions
Generic Function, argument-missing-error-route-name: Public generic functions
Generic Function, breadcrumb-path: Public generic functions
Generic Function, breadcrumb-route: Public generic functions
Generic Function, breadcrumb-title: Public generic functions
Generic Function, children-routes: Public generic functions
Generic Function, error-routes-path: Public generic functions
Generic Function, error-url: Public generic functions
Generic Function, existing-namespace: Public generic functions
Generic Function, existing-path: Public generic functions
Generic Function, existing-route: Public generic functions
Generic Function, format-url: Public generic functions
Generic Function, full-namespace: Public generic functions
Generic Function, get-route-breadcrumbs: Public generic functions
Generic Function, has-namespace-p: Public generic functions
Generic Function, match-url: Public generic functions
Generic Function, matched-route-parameters: Public generic functions
Generic Function, namespace: Public generic functions
Generic Function, new-route: Public generic functions
Generic Function, node-namespace: Public generic functions
Generic Function, original-route: Public generic functions
Generic Function, original-routes: Public generic functions
Generic Function, partial-match-url: Public generic functions
Generic Function, relative-namespace: Public generic functions
Generic Function, route-handler: Public generic functions
Generic Function, route-method: Public generic functions
Generic Function, route-name: Public generic functions
Generic Function, route-name: Public generic functions
Generic Function, route-title: Public generic functions
Generic Function, url-path: Public generic functions
Generic Function, url-pattern-params: Public generic functions
Generic Function, url-pattern-pattern: Public generic functions
Generic Function, url-pattern-regex: Public generic functions
get: Public macros
get-breadcrumbs: Public ordinary functions
get-route-breadcrumbs: Public generic functions
get-route-breadcrumbs: Public generic functions
get-route-breadcrumbs: Public generic functions
get-route-breadcrumbs: Public generic functions
get-route-breadcrumbs: Public generic functions
get-route-breadcrumbs: Public generic functions

H
has-namespace-p: Public generic functions
has-namespace-p: Public generic functions
has-namespace-p: Public generic functions
has-namespace-p: Public generic functions

I
include: Public ordinary functions
included-routes-p: Public ordinary functions

M
Macro, def-proxy-method: Private macros
Macro, defroutes: Public macros
Macro, delete: Private macros
Macro, get: Public macros
Macro, post: Public macros
Macro, put: Public macros
Macro, routes: Public macros
Macro, with-partially-matched-url: Public macros
Macro, with-url: Public macros
make-breadcrumb: Public ordinary functions
make-new-namespace: Private ordinary functions
match-url: Public generic functions
match-url: Public generic functions
match-url: Public generic functions
match-url: Public generic functions
match-url: Public generic functions
match-url: Private ordinary functions
matched-route-p: Public ordinary functions
matched-route-parameters: Public generic functions
matched-route-parameters: Public generic functions
Method, (setf children-routes): Public generic functions
Method, (setf children-routes): Public generic functions
Method, (setf node-namespace): Public generic functions
Method, add-route: Public generic functions
Method, add-route: Public generic functions
Method, add-route: Public generic functions
Method, argument-missing-error-parameter: Public generic functions
Method, argument-missing-error-route-name: Public generic functions
Method, breadcrumb-path: Public generic functions
Method, breadcrumb-route: Public generic functions
Method, breadcrumb-title: Public generic functions
Method, children-routes: Public generic functions
Method, children-routes: Public generic functions
Method, error-routes-path: Public generic functions
Method, error-url: Public generic functions
Method, existing-namespace: Public generic functions
Method, existing-path: Public generic functions
Method, existing-route: Public generic functions
Method, existing-route: Public generic functions
Method, format-url: Public generic functions
Method, format-url: Public generic functions
Method, format-url: Public generic functions
Method, format-url: Public generic functions
Method, full-namespace: Public generic functions
Method, get-route-breadcrumbs: Public generic functions
Method, get-route-breadcrumbs: Public generic functions
Method, get-route-breadcrumbs: Public generic functions
Method, get-route-breadcrumbs: Public generic functions
Method, get-route-breadcrumbs: Public generic functions
Method, has-namespace-p: Public generic functions
Method, has-namespace-p: Public generic functions
Method, has-namespace-p: Public generic functions
Method, match-url: Public generic functions
Method, match-url: Public generic functions
Method, match-url: Public generic functions
Method, match-url: Public generic functions
Method, matched-route-parameters: Public generic functions
Method, namespace: Public generic functions
Method, new-route: Public generic functions
Method, new-route: Public generic functions
Method, node-namespace: Public generic functions
Method, node-namespace: Public generic functions
Method, original-route: Public generic functions
Method, original-routes: Public generic functions
Method, partial-match-url: Public generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, relative-namespace: Public generic functions
Method, route-handler: Public generic functions
Method, route-handler: Public generic functions
Method, route-method: Public generic functions
Method, route-method: Public generic functions
Method, route-name: Public generic functions
Method, route-name: Public generic functions
Method, route-name: Public generic functions
Method, route-title: Public generic functions
Method, route-title: Public generic functions
Method, url-path: Public generic functions
Method, url-path: Public generic functions
Method, url-path: Public generic functions
Method, url-pattern-params: Public generic functions
Method, url-pattern-pattern: Public generic functions
Method, url-pattern-regex: Public generic functions

N
namespace: Public generic functions
namespace: Public generic functions
new-route: Public generic functions
new-route: Public generic functions
new-route: Public generic functions
node-namespace: Public generic functions
node-namespace: Public generic functions
node-namespace: Public generic functions

O
original-route: Public generic functions
original-route: Public generic functions
original-routes: Public generic functions
original-routes: Public generic functions

P
parse-url-pattern: Public ordinary functions
partial-match-url: Public generic functions
partial-match-url: Public generic functions
post: Public macros
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
put: Public macros

R
relative-namespace: Public generic functions
relative-namespace: Public generic functions
replace-parameters: Private ordinary functions
route-handler: Public generic functions
route-handler: Public generic functions
route-handler: Public generic functions
route-method: Public generic functions
route-method: Public generic functions
route-method: Public generic functions
route-name: Public generic functions
route-name: Public generic functions
route-name: Public generic functions
route-name: Public generic functions
route-name: Public generic functions
route-title: Public generic functions
route-title: Public generic functions
route-title: Public generic functions
route-url: Public ordinary functions
routep: Public ordinary functions
routes: Public macros
routesp: Public ordinary functions

S
search-child-route-with-name: Private ordinary functions
search-route-with-namespace: Private ordinary functions
search-route-with-path: Private ordinary functions
search-routes-with-namespace: Private ordinary functions

U
url-path: Public generic functions
url-path: Public generic functions
url-path: Public generic functions
url-path: Public generic functions
url-pattern-equal: Public ordinary functions
url-pattern-p: Public ordinary functions
url-pattern-params: Public generic functions
url-pattern-params: Public generic functions
url-pattern-pattern: Public generic functions
url-pattern-pattern: Public generic functions
url-pattern-regex: Public generic functions
url-pattern-regex: Public generic functions

W
with-partially-matched-url: Public macros
with-url: Public macros


A.3 Variables

Jump to:   *  
C   E   F   H   M   N   O   P   R   S   T   U  
Index Entry  Section

*
*breadcrumbs-path*: Private special variables
*current-namespace*: Private special variables
*current-route*: Private special variables
*routes-path*: Private special variables

C
children: Public classes

E
existing-route: Public conditions
existing-route: Public conditions

F
full-namespace: Public conditions

H
handler: Public classes

M
method: Public classes
missing-parameter: Public conditions

N
name: Public classes
namespace: Public conditions
namespace: Public conditions
namespace: Public classes
new-route: Public conditions
new-route: Public conditions

O
original-collection: Public classes
original-route: Public classes

P
parameters: Public classes
params: Public classes
path: Public conditions
path: Public classes
path: Public classes
pattern: Public classes
pattern: Public classes

R
regex: Public classes
relative-namespace: Public conditions
route: Public classes
route-name: Public conditions
route-name: Public conditions
routes-path: Public conditions

S
Slot, children: Public classes
Slot, existing-route: Public conditions
Slot, existing-route: Public conditions
Slot, full-namespace: Public conditions
Slot, handler: Public classes
Slot, method: Public classes
Slot, missing-parameter: Public conditions
Slot, name: Public classes
Slot, namespace: Public conditions
Slot, namespace: Public conditions
Slot, namespace: Public classes
Slot, new-route: Public conditions
Slot, new-route: Public conditions
Slot, original-collection: Public classes
Slot, original-route: Public classes
Slot, parameters: Public classes
Slot, params: Public classes
Slot, path: Public conditions
Slot, path: Public classes
Slot, path: Public classes
Slot, pattern: Public classes
Slot, pattern: Public classes
Slot, regex: Public classes
Slot, relative-namespace: Public conditions
Slot, route: Public classes
Slot, route-name: Public conditions
Slot, route-name: Public conditions
Slot, routes-path: Public conditions
Slot, title: Public classes
Slot, title: Public classes
Slot, url: Public conditions
Special Variable, *breadcrumbs-path*: Private special variables
Special Variable, *current-namespace*: Private special variables
Special Variable, *current-route*: Private special variables
Special Variable, *routes-path*: Private special variables

T
title: Public classes
title: Public classes

U
url: Public conditions


A.4 Data types

Jump to:   4  
A   B   C   F   I   M   N   P   R   S   U  
Index Entry  Section

4
40ants-routes: The 40ants-routes system
40ants-routes.asd: The 40ants-routes/40ants-routes․asd file
40ants-routes/add-route: The 40ants-routes/add-route system
40ants-routes/add-route: The 40ants-routes/add-route package
40ants-routes/breadcrumbs: The 40ants-routes/breadcrumbs system
40ants-routes/breadcrumbs: The 40ants-routes/breadcrumbs package
40ants-routes/defroutes: The 40ants-routes/defroutes system
40ants-routes/defroutes: The 40ants-routes/defroutes package
40ants-routes/errors: The 40ants-routes/errors system
40ants-routes/errors: The 40ants-routes/errors package
40ants-routes/find-route: The 40ants-routes/find-route system
40ants-routes/find-route: The 40ants-routes/find-route package
40ants-routes/generics: The 40ants-routes/generics system
40ants-routes/generics: The 40ants-routes/generics package
40ants-routes/included-routes: The 40ants-routes/included-routes system
40ants-routes/included-routes: The 40ants-routes/included-routes package
40ants-routes/matched-route: The 40ants-routes/matched-route system
40ants-routes/matched-route: The 40ants-routes/matched-route package
40ants-routes/route: The 40ants-routes/route system
40ants-routes/route: The 40ants-routes/route package
40ants-routes/route-url: The 40ants-routes/route-url system
40ants-routes/route-url: The 40ants-routes/route-url package
40ants-routes/routes: The 40ants-routes/routes system
40ants-routes/routes: The 40ants-routes/routes package
40ants-routes/url-pattern: The 40ants-routes/url-pattern system
40ants-routes/url-pattern: The 40ants-routes/url-pattern package
40ants-routes/utils: The 40ants-routes/utils system
40ants-routes/utils: The 40ants-routes/utils package
40ants-routes/vars: The 40ants-routes/vars system
40ants-routes/vars: The 40ants-routes/vars package
40ants-routes/with-url: The 40ants-routes/with-url system
40ants-routes/with-url: The 40ants-routes/with-url package

A
argument-missing-error: Public conditions

B
breadcrumb: Public classes

C
Class, breadcrumb: Public classes
Class, included-routes: Public classes
Class, matched-route: Public classes
Class, route: Public classes
Class, routes: Public classes
Class, url-pattern: Public classes
Condition, argument-missing-error: Public conditions
Condition, namespace-duplication-error: Public conditions
Condition, no-common-elements-error: Public conditions
Condition, no-route-for-url-error: Public conditions
Condition, path-duplication-error: Public conditions
Condition, url-resolution-error: Public conditions

F
File, 40ants-routes.asd: The 40ants-routes/40ants-routes․asd file
File, file-type.lisp: The 40ants-routes/route/file-type․lisp file
File, file-type.lisp: The 40ants-routes/errors/file-type․lisp file
File, file-type.lisp: The 40ants-routes/url-pattern/file-type․lisp file
File, file-type.lisp: The 40ants-routes/generics/file-type․lisp file
File, file-type.lisp: The 40ants-routes/vars/file-type․lisp file
File, file-type.lisp: The 40ants-routes/routes/file-type․lisp file
File, file-type.lisp: The 40ants-routes/included-routes/file-type․lisp file
File, file-type.lisp: The 40ants-routes/with-url/file-type․lisp file
File, file-type.lisp: The 40ants-routes/matched-route/file-type․lisp file
File, file-type.lisp: The 40ants-routes/find-route/file-type․lisp file
File, file-type.lisp: The 40ants-routes/defroutes/file-type․lisp file
File, file-type.lisp: The 40ants-routes/route-url/file-type․lisp file
File, file-type.lisp: The 40ants-routes/utils/file-type․lisp file
File, file-type.lisp: The 40ants-routes/breadcrumbs/file-type․lisp file
File, file-type.lisp: The 40ants-routes/add-route/file-type․lisp file
file-type.lisp: The 40ants-routes/route/file-type․lisp file
file-type.lisp: The 40ants-routes/errors/file-type․lisp file
file-type.lisp: The 40ants-routes/url-pattern/file-type․lisp file
file-type.lisp: The 40ants-routes/generics/file-type․lisp file
file-type.lisp: The 40ants-routes/vars/file-type․lisp file
file-type.lisp: The 40ants-routes/routes/file-type․lisp file
file-type.lisp: The 40ants-routes/included-routes/file-type․lisp file
file-type.lisp: The 40ants-routes/with-url/file-type․lisp file
file-type.lisp: The 40ants-routes/matched-route/file-type․lisp file
file-type.lisp: The 40ants-routes/find-route/file-type․lisp file
file-type.lisp: The 40ants-routes/defroutes/file-type․lisp file
file-type.lisp: The 40ants-routes/route-url/file-type․lisp file
file-type.lisp: The 40ants-routes/utils/file-type․lisp file
file-type.lisp: The 40ants-routes/breadcrumbs/file-type․lisp file
file-type.lisp: The 40ants-routes/add-route/file-type․lisp file

I
included-routes: Public classes

M
matched-route: Public classes

N
namespace-duplication-error: Public conditions
no-common-elements-error: Public conditions
no-route-for-url-error: Public conditions

P
Package, 40ants-routes/add-route: The 40ants-routes/add-route package
Package, 40ants-routes/breadcrumbs: The 40ants-routes/breadcrumbs package
Package, 40ants-routes/defroutes: The 40ants-routes/defroutes package
Package, 40ants-routes/errors: The 40ants-routes/errors package
Package, 40ants-routes/find-route: The 40ants-routes/find-route package
Package, 40ants-routes/generics: The 40ants-routes/generics package
Package, 40ants-routes/included-routes: The 40ants-routes/included-routes package
Package, 40ants-routes/matched-route: The 40ants-routes/matched-route package
Package, 40ants-routes/route: The 40ants-routes/route package
Package, 40ants-routes/route-url: The 40ants-routes/route-url package
Package, 40ants-routes/routes: The 40ants-routes/routes package
Package, 40ants-routes/url-pattern: The 40ants-routes/url-pattern package
Package, 40ants-routes/utils: The 40ants-routes/utils package
Package, 40ants-routes/vars: The 40ants-routes/vars package
Package, 40ants-routes/with-url: The 40ants-routes/with-url package
path-duplication-error: Public conditions

R
route: Public classes
routes: Public classes

S
System, 40ants-routes: The 40ants-routes system
System, 40ants-routes/add-route: The 40ants-routes/add-route system
System, 40ants-routes/breadcrumbs: The 40ants-routes/breadcrumbs system
System, 40ants-routes/defroutes: The 40ants-routes/defroutes system
System, 40ants-routes/errors: The 40ants-routes/errors system
System, 40ants-routes/find-route: The 40ants-routes/find-route system
System, 40ants-routes/generics: The 40ants-routes/generics system
System, 40ants-routes/included-routes: The 40ants-routes/included-routes system
System, 40ants-routes/matched-route: The 40ants-routes/matched-route system
System, 40ants-routes/route: The 40ants-routes/route system
System, 40ants-routes/route-url: The 40ants-routes/route-url system
System, 40ants-routes/routes: The 40ants-routes/routes system
System, 40ants-routes/url-pattern: The 40ants-routes/url-pattern system
System, 40ants-routes/utils: The 40ants-routes/utils system
System, 40ants-routes/vars: The 40ants-routes/vars system
System, 40ants-routes/with-url: The 40ants-routes/with-url system

U
url-pattern: Public classes
url-resolution-error: Public conditions