Lisp HUG Maillist Archive

Lots of Internet packages for LW

Hello, LispWorks community...

I've been using LispWorks for a bunch of personal projects for a while now. All my projects are typically internet-based. Over time I've been building up a bunch of packages that I thought I'd share! I've found LispWorks (out of the box) to be lacking when it comes to doing work on the internet, so hopefully new-comers will find this and be able to start using it right away.

Anyway, I'm posting a bunch of packages here that I've put up on GitHub. They are all licensed under Apache 2.0, so feel free to use them, fork them, etc. All the code is 100% Lisp. There is no use of FLI, DLL requirements, or code from anyone else (aside from what comes with LispWorks standard).

Definitely email me if you have questions, find a bug, or have a feature request. I certainly have my own feature list of things to continue doing, but knowing others use/need them as well will get my creative juices flowing more....

Enjoy!

1. https://github.com/massung/pl

This is my "package-loader" source. It handles feature requirements, dependency packages, and implementation-specific module requirements. I dislike ASDF and Quicklisp, so this is what I made. It's really designed to be used in conjunction with Git. You don't have to, but all other packages listed here are setup to use this and it helps.

2. https://github.com/massung/re

This is a Lua-style pattern matching library. It's *very* fast. Most things I list here will use it in one way or another. If you use nothing else, I've found this incredibly useful overall.

3.
https://github.com/massung/lexer

This is a tokenizer that uses the "re" package above. While it can be used alone, it's made to be used with the LispWorks "parsergen" module.

4.
https://github.com/massung/json

A JSON decoder and encoder package that uses the "lexer" package. It's incredibly small and simple.

5.
https://github.com/massung/xml

An XML parser. It handles almost everything in XML (namespaces, doctypes, entities, stylesheets, cdata, comments, etc). It supports querying as well. It is *not* an XML writer, though.

6.
https://github.com/massung/date

An RFC822 and RFC3339 internet date format encoder and decoder. It's pretty strict and adheres to the RFCs for each, though. This one is fairly new, so if you find a bug (likely dealing with time zones), please let me know.

7.
https://github.com/massung/base64

A really simple base64 encoder and decoder. Nothing much that's special here.

8.
https://github.com/massung/http

A complete HTTP client and URL parsing package. URL parsing is complete (scheme, auth, domain, port, path, query, fragment).  Has a bunch of utility functions for query string parsing and creation. URL encoding/decoding, formatting URLs, header parsing, etc. Correctly handles HEAD, GET, DELETE, PUT, POST, and PATCH requests. Correctly uses SSL when required. Has functionality for following redirects. It also handles chunked transfer encoding. There's still more I want to do with this package, like handling gzip content encoding, but it passes almost every test at
http://httpbin.org/ (the two it doesn't is /gzip and /redirect, because httpbin uses a relative path redirect which is against the HTTP spec).

9.
https://github.com/massung/rss

An RSS 2.0 parser. Uses the http and xml packages. I haven't yet found an RSS feed it couldn't fetch (using http) and parse (using xml).

Re: Lots of Internet packages for LW

Fantastic contribution, thank you!
I will surely use that in forthcoming projects.
I am curious about the package loader based on Git...


On 29 août 2013, at 21:10, Jeffrey Massung <massung@gmail.com> wrote:

Hello, LispWorks community...

I've been using LispWorks for a bunch of personal projects for a while now. All my projects are typically internet-based. Over time I've been building up a bunch of packages that I thought I'd share! I've found LispWorks (out of the box) to be lacking when it comes to doing work on the internet, so hopefully new-comers will find this and be able to start using it right away.

Anyway, I'm posting a bunch of packages here that I've put up on GitHub. They are all licensed under Apache 2.0, so feel free to use them, fork them, etc. All the code is 100% Lisp. There is no use of FLI, DLL requirements, or code from anyone else (aside from what comes with LispWorks standard).

Definitely email me if you have questions, find a bug, or have a feature request. I certainly have my own feature list of things to continue doing, but knowing others use/need them as well will get my creative juices flowing more....

Enjoy!

1. https://github.com/massung/pl

This is my "package-loader" source. It handles feature requirements, dependency packages, and implementation-specific module requirements. I dislike ASDF and Quicklisp, so this is what I made. It's really designed to be used in conjunction with Git. You don't have to, but all other packages listed here are setup to use this and it helps.

2. https://github.com/massung/re

This is a Lua-style pattern matching library. It's *very* fast. Most things I list here will use it in one way or another. If you use nothing else, I've found this incredibly useful overall.

3.
https://github.com/massung/lexer

This is a tokenizer that uses the "re" package above. While it can be used alone, it's made to be used with the LispWorks "parsergen" module.

4.
https://github.com/massung/json

A JSON decoder and encoder package that uses the "lexer" package. It's incredibly small and simple.

5.
https://github.com/massung/xml

An XML parser. It handles almost everything in XML (namespaces, doctypes, entities, stylesheets, cdata, comments, etc). It supports querying as well. It is *not* an XML writer, though.

6.
https://github.com/massung/date

An RFC822 and RFC3339 internet date format encoder and decoder. It's pretty strict and adheres to the RFCs for each, though. This one is fairly new, so if you find a bug (likely dealing with time zones), please let me know.

7.
https://github.com/massung/base64

A really simple base64 encoder and decoder. Nothing much that's special here.

8.
https://github.com/massung/http

A complete HTTP client and URL parsing package. URL parsing is complete (scheme, auth, domain, port, path, query, fragment).  Has a bunch of utility functions for query string parsing and creation. URL encoding/decoding, formatting URLs, header parsing, etc. Correctly handles HEAD, GET, DELETE, PUT, POST, and PATCH requests. Correctly uses SSL when required. Has functionality for following redirects. It also handles chunked transfer encoding. There's still more I want to do with this package, like handling gzip content encoding, but it passes almost every test at
http://httpbin.org/ (the two it doesn't is /gzip and /redirect, because httpbin uses a relative path redirect which is against the HTTP spec).

9.
https://github.com/massung/rss

An RSS 2.0 parser. Uses the http and xml packages. I haven't yet found an RSS feed it couldn't fetch (using http) and parse (using xml).

Re: Lots of Internet packages for LW

After some very positive feedback (much appreciated), I decided to get rid of my unique (and dead-simple) package-loader package and switch to ASDF since it's ubiquitous and LispWorks now comes with it built-in.

However, I'm hoping someone can help me with something regarding ASDF (since I've not been a big user). In my .lispworks file I have this:

;;;; set where ASDF looks for systems
(flet ((asd-directory (file)
         (make-pathname :directory (pathname-directory file))))
  (let ((asd-files (directory #p"~/Projects/*/*.asd")))
    (setf asdf:*central-registry* (mapcar #'asd-directory asd-files))))

This seems quite obnoxious. Does ASDF have a way of setting a "top-level" directory and having it search sub-directories for ASD system files?

Thanks!

Jeff M.
Jeffrey Massung
August 29, 2013 2:10 PM
Hello, LispWorks community...

I've been using LispWorks for a bunch of personal projects for a while now. All my projects are typically internet-based. Over time I've been building up a bunch of packages that I thought I'd share! I've found LispWorks (out of the box) to be lacking when it comes to doing work on the internet, so hopefully new-comers will find this and be able to start using it right away.

Anyway, I'm posting a bunch of packages here that I've put up on GitHub. They are all licensed under Apache 2.0, so feel free to use them, fork them, etc. All the code is 100% Lisp. There is no use of FLI, DLL requirements, or code from anyone else (aside from what comes with LispWorks standard).

Definitely email me if you have questions, find a bug, or have a feature request. I certainly have my own feature list of things to continue doing, but knowing others use/need them as well will get my creative juices flowing more....

Enjoy!

1. https://github.com/massung/pl

This is my "package-loader" source. It handles feature requirements, dependency packages, and implementation-specific module requirements. I dislike ASDF and Quicklisp, so this is what I made. It's really designed to be used in conjunction with Git. You don't have to, but all other packages listed here are setup to use this and it helps.

2. https://github.com/massung/re

This is a Lua-style pattern matching library. It's *very* fast. Most things I list here will use it in one way or another. If you use nothing else, I've found this incredibly useful overall.

3.
https://github.com/massung/lexer

This is a tokenizer that uses the "re" package above. While it can be used alone, it's made to be used with the LispWorks "parsergen" module.

4.
https://github.com/massung/json

A JSON decoder and encoder package that uses the "lexer" package. It's incredibly small and simple.

5.
https://github.com/massung/xml

An XML parser. It handles almost everything in XML (namespaces, doctypes, entities, stylesheets, cdata, comments, etc). It supports querying as well. It is *not* an XML writer, though.

6.
https://github.com/massung/date

An RFC822 and RFC3339 internet date format encoder and decoder. It's pretty strict and adheres to the RFCs for each, though. This one is fairly new, so if you find a bug (likely dealing with time zones), please let me know.

7.
https://github.com/massung/base64

A really simple base64 encoder and decoder. Nothing much that's special here.

8.
https://github.com/massung/http

A complete HTTP client and URL parsing package. URL parsing is complete (scheme, auth, domain, port, path, query, fragment).  Has a bunch of utility functions for query string parsing and creation. URL encoding/decoding, formatting URLs, header parsing, etc. Correctly handles HEAD, GET, DELETE, PUT, POST, and PATCH requests. Correctly uses SSL when required. Has functionality for following redirects. It also handles chunked transfer encoding. There's still more I want to do with this package, like handling gzip content encoding, but it passes almost every test at
http://httpbin.org/ (the two it doesn't is /gzip and /redirect, because httpbin uses a relative path redirect which is against the HTTP spec).

9.
https://github.com/massung/rss

An RSS 2.0 parser. Uses the http and xml packages. I haven't yet found an RSS feed it couldn't fetch (using http) and parse (using xml).
Updated at: 2020-12-10 08:35 UTC