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).