Uniform Resource Locators for Common Lisp
Common Lisp
Switch branches/tags
release10.1_t6 release10.1_t5 release10.1_t4 release10.1_t3 release10.1_t2 release10.1_t1 release10.1_release_point release10.1_rc5 release10.1_rc4 release10.1_rc3 release10.1_rc2 release10.1_rc1 release10.1_beta3_release_point release10.1.beta2_release_point release10.1.beta_t6 release10.1.beta_t5 release10.1.beta_t4 release10.1.beta_t3 release10.1.beta_t2 release10.1.beta_t1 release10.1.beta_release_point release10.1.beta_rc4 release10.1.beta_rc3 release10.1.beta_rc2 release10.1.beta_rc1 release10.0_t3 release10.0_t2 release10.0_t1 release10.0_rc9 release10.0_rc8 release10.0_rc7 release10.0_rc6 release10.0_rc5 release10.0_rc4 release10.0_rc3 release10.0_rc2 release10.0_rc1 release10.0.pre-final.30_release_point release10.0.pre-final.17_release_point release10.0.beta_t13 release10.0.beta_t12 release10.0.beta_t11 release10.0.beta_t10 release10.0.beta_t9 release10.0.beta_t8 release10.0.beta_t7 release10.0.beta_t6 release10.0.beta_t5 release10.0.beta_t4 release10.0.beta_t3 release10.0.beta_t2 release10.0.beta_t1 release10.0.beta_release_point release10.0.beta_rc2 release10.0.beta_rc1 release_aclt2 release_acl100b14t8 release_acl100b11t7 release_acl100b10t6 release_acl100b8t5 release_acl100b7t4 release_acl100b6t3 release_acl100b4t2 release_acl100b2t1 release_acl90b21rc5 release_acl90b20_release_point release_acl90b20rc4 release_acl90b19rc3 release_acl90b18rc2 release_acl90b15_release_point release_acl90b15rc1 release_acl90b13t1 release_acl90b11t1 release_acl90b9t1 release_acl90b8t1 release_acl90b6_release_point release_acl90b6rc2 release_acl90b_release_point release_acl90a52rc1 release_acl90a44rc2 release_acl90a43rc1 release_acl90a39 release_acl90a39rc2 release_acl90a32 release_acl90a27 release_acl90a25 release_acl90a24 release_acl90a23 release_acl90a20 release_acl90a18 documentation_for_acl90_201200717 documentation_for_acl90_20120614 documentation_for_acl90b_20120323 documentation_for_acl90b_20120313 documentation_for_acl90b_20120214 documentation_for_acl10.1_20170309 documentation_for_acl10.1b_20160928 documentation_for_acl10.0_20150813 acl100express_Dec2015update1202_rc1 acl100express_Aug2016update081516_rc1
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
LICENSE
README.md
rfc1035.txt
rfc1738.txt
rfc1808.txt
rfc2141.txt
rfc2396.txt
rfc3986.txt
t-uri.cl
uri.cl

README.md

uri - Uniform Resource Identifiers for Common Lisp

Table of contents

  • Description
  • Author
  • Author comments
  • Documentation
  • Platforms
  • Dependencies
  • Installation
  • Configuration
  • Licence
  • Notes
  • Examples
  • Franz Inc. Open Source Info

Description

Uniform Resource Identifiers (URIs) for Common Lisp. URIs, a superset of URLs, define a syntax for identifying an abstract or physical resource. Read the RFC below for more general information about URIs.

This is the same URI implementation that first appeared in Allegro CL 6.0. Following RFC 2396 as closely as possible was an important goal for the project, and some of the tests came directly from the RFC. RFC 2396 has since been obsoleted by RFC 3986. At least in one contentious area, relative URL resolution with only a query component, our implementation follows RFC 3986 and not 2396. That is

(net.uri:merge-uris (net.uri:parse-uri "?bar")
                    (net.uri:parse-uri "http://example.com/foo"))

yields

#<uri http://example.com/foo?bar>

and not

#<uri http://example.com/?bar>

as RFC 2396 would indicate.

In the future, further comparisons between the implementation and RFC 3986 will be done, and changes made to bring our implementation into compliance with it.

Author

Kevin Layer, Franz Inc.

Platforms

All ACL versions.

Dependencies

Allegro Common Lisp and the tester library for the test suite.

Installation

Start your lisp and load uri.cl which is part of this project:

(load (compile-file "/path/to/your/uri.cl"))

To run the test suite, load the tests.

(load (compile-file "/pathto/your/t-uri.cl"))

Configuration

Setting the variable net.url:*strict-parse* to a boolean will control how strict the parser is.

Documentation

See the [franz uri documentation] (http://franz.com/support/documentation/current/doc/uri.htm).

License

The uri source code is licensed under the terms of the Lisp Lesser GNU Public License, known as the LLGPL. The LLGPL consists of a preamble and the LGPL. Where these conflict, the preamble takes precedence. This project is referenced in the preamble as the LIBRARY.

Notes

See the file rfc2396.txt that is part of this project for more info.

Examples and Information

See the link in the documentation section above.

Franz Open Source Info

This project's homepage is http://opensource.franz.com. There is an informal community support and development mailing list opensource@franz.com for these open source projects. We encourage you to take advantage by subscribing to the list. Once you're subscribed, email to opensource@franz.com with your questions, comments, suggestions, and patches.