...
 
Commits (221)
......@@ -8,3 +8,5 @@ auto-save-list
# Output files
output/
system-index.txt
*.dx64fsl
*.fasl
build-site:
build:
stage: build
script: make
tags:
- site-gen
pages:
stage: deploy
script:
- make
- mv output public
artifacts:
paths:
- public
tags:
- site-gen
only:
- master
Copyright 2018, Common-Lisp.Net maintainers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
all: build
serve:
cd output; python ../server.py
static:
mkdir -p output/static
cp -rf content/static/* output/static
favicon:
cp content/favicon.ico output/
build: static favicon
build: static
sbcl --load build.lisp --non-interactive
clean:
rm -rf output
mkdir output
serve: static
sbcl --load test-serve.lisp
paserve: static
sbcl --load servers/paserve/serve.lisp
zaserve: static
sbcl --load servers/zaserve/serve.lisp
htoot: static
sbcl --load servers/htoot/serve.lisp
woo: static
sbcl --load servers/woo/serve.lisp
clack: static
sbcl --load servers/clack/serve.lisp
cl-http: static
sbcl --load servers/cl-http/serve.lisp
# Common-Lisp.net site generator #
## Dependencies
CL-MUSTACHE for HTML templating
## Execution
### From command line (recommended) ###
Using Make.
The Makefile contains various useful commands.
Among them:
* `make` - to generate the site.
* `make serve` - to run a simple site server (needs python)
* `make clean` - to remove the generated files from output directory
### From Lisp ###
Load with this command:
(ql:quickload :cl-site)
To generate the site:
(cl-site::make-site)
The output files will be generated in the `output/` directory.
# Common-Lisp.net site generator
## Directory structure
### Content
The site content is divided over the directories `content/`
and `layout`.
The `layout/` directory holds all content
that applies to more than one page (e.g. templates) and
everything that's referenced from such components (e.g.
logo and other images or CSS), or is used to override
such a component (e.g. a template which overrides the
default template). Referred content, such as stylesheets,
scripts and images are located in `layout/static/*`.
The `content/` directory holds the individual content items (pages)
and everything that's referred from that content, but not referred
from layout content. E.g. the `index.html` page — defining the
site's front page — is located in `content/` as well as any images
that are included on the front page but not included on any template
content. Referred content, such as stylesheets, scripts and images are
located in `content/static/*`
The `content/` directory can contain both `html` files and `lisp`
files. `html` files are processed with the template stuff directly
into the `output/` directory. `lisp` files are expected to have a call
to `cl-site:add-content` as their toplevel form, which takes arguments
of `:headers-plist` and `html-string`. See `content/about.lisp` for a
reference example.
If a file by the same name is stored in both
`layout/static/` and `content/static/`, then the one
in `layout/static/` takes precedence.
### Generator Source Code
The source code for the site generator is located in the
root of the repository. The `t/` directory contains tests
for the site generator.
### Server Setup Code (optional)
The `servers/` directory contains code for running various CL HTTP
servers to be able to serve the generated content locally (e.g. while
authoring/editing). It has [its own
README](https://gitlab.common-lisp.net/dcooper/cl-site/blob/master/servers/README.md).
## Dependencies
* CL-MUSTACHE for HTML templating
* CL-YAML for YAML "header" parsing
* CLOSER-MOP (because...?)
* CL-WHO for LHTML processing
* MARKDOWN.CL for Markdown processing
(these are all called out in the cl-site.asd file and will be fetched
automatically by Quicklisp)
## Execution
### From command line, using make:
The Makefile contains various useful commands.
Among them:
* `make` - to generate the site.
* `make serve` - to generate the site and start up a default test server.
* `make clean` - to remove the generated files from output directory
### From Lisp
(The following assumes you have a reasonably recent Quicklisp loaded)
* To generate the static pages:
(load ".../cl-site/build.lisp") ;; replace with your actual path to cl-site/
This will load the site-generating code and generate the static pages into `output/`
* To generate the static pages and start the test server:
(load ".../cl-site/test-serve.lisp") ;; replace with your actual path to cl-site/
This will start serving the site. The toplevel URL should be printed to the console.
### Known Problems
At least one of the test servers crashes on load with `invalid number
of arguments` on certain 1.3.1 releases of SBCL (apparently a problem
with the `ironclad` library from quicklisp with this sbcl
version). If you get this error, feel free to [report the
issue](https://gitlab.common-lisp.net/clo/cl-site/issues), but you
might also try upgrading your SBCL or try [another
implementation](https://common-lisp.net/implementations).
(push (uiop:getcwd) quicklisp:*local-project-directories*)
(in-package :cl-user)
(pushnew (make-pathname :defaults *load-truename* :name nil :type nil)
quicklisp:*local-project-directories* :test #'equalp)
(ql:register-local-projects)
(ql:quickload :cl-site)
(funcall (symbol-function (intern "MAKE-SITE" :cl-site)) (merge-pathnames "output/" (uiop:getcwd)))
(cl-site:make-site)
......@@ -4,18 +4,17 @@
(asdf:defsystem cl-site
:name "cl-site"
:version "0.0.1"
:maintainer "C. Yang"
:author "C. Yang"
:maintainer "Common-Lisp.Net maintainers"
:author "C. Yang & Common-Lisp.Net maintainers"
:licence "TBD"
:description "Static site generator for CLnet, written in CL"
:depends-on (:cl-mustache :plump :markdown.cl :closer-mop)
:description "Static site generator for common-lisp.net, written in CL"
:depends-on (:cl-mustache :plump :cl-markdown :closer-mop :cl-who :cl-yaml)
:components ((:module source
:pathname ""
:serial t
:depends-on (package)
:components ((:file "globals")
:components ((:file "patches")
(:file "globals")
(:file "helpers")
(:file "process")
(:file "main")))
......
<h1><i class="far fa-question-circle"></i>&nbsp;About Common-Lisp.net</h1>
<p> Common-Lisp.net provides hosting for projects and user groups
related to the programming language Common Lisp.
</p>
<p>The site is run under the governance of the <a
href="http://www.cl-foundation.org/">Common Lisp Foundation</a> and
maintained mostly by a committee of volunteers. <a
href="/contribute">Please consider donating</a>.</p>
<p>Its source is hosted
on <a href="https://gitlab.common-lisp.net/clo/cl-site">gitlab.common-lisp.net</a>.
</p>
<p>If you want to request a project, <a href="/project-intro">read
this document</a>.</p>
<p>If you have questions, suggestions or comments about this site or
you simply wish to reach the current maintainers, <a
href="http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/clo-devel">email
this mailinglist</a>.</p>
<p>The documentation, procedures, feature requests etc are located in
our Trac instance: <a href="http://trac.common-lisp.net/clo">clo's
Trac</a>.</p>
<h2>Maintainance</h2>
<p>Since many years <a href="/">Common-Lisp.net</a> has been run
by a number of volunteers.</p>
<h3>Currently active maintainers</h3>
<ul>
<li>Mark Evenson</li>
<li>Erik Huelsmann</li>
<li>Mariano Montone</li>
</ul>
<h3>Previous maintainers</h3>
<ul>
<li>Erik Enge</li>
<li>Drew Crampsie</li>
<li>Hans H&uuml;bner</li>
<li>Cheryl Yang</li>
<li>Mario S. Mommer</li>
</ul>
(in-package :cl-site-content)
(add-content
:headers-plist (list :|title| "Common-Lisp.net | About")
:html-string
(with-cl-who-string (:indent t)
(:h1 ((:i :class "far fa-question-circle")) " About Common-Lisp.net")
(wmd "
Common-Lisp.net provides hosting for projects and user groups related to the programming language Common Lisp.
The site is run under the governance of the [Common Lisp
Foundation](http://www.cl-foundation.org) and maintained mostly by a
committee of volunteers. [Please consider donating](/contribute).
Its source is hosted on
[gitlab.common-lisp.net](https://gitlab.common-lisp.net/clo/cl-site).
If you want to request a project, read [this
document](/project-intro).
If you have questions, suggestions or comments about this site or you
simply wish to reach the current maintainers, email [this mailing
list](http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/clo-devel).
The documentation, procedures, feature requests etc are located in our
Trac instance: [clo's Trac](http://trac.common-lisp.net/clo).")
(:h2 "Maintainance")
(wmd "
Since many years [Common-Lisp.net](/) has been run by a number of
volunteers.")
(:h3 "Currently active maintainers")
(wmd "
* Mark Evenson
* Erik Huelsmann
* Mariano Montone")
(:h3 "Previous maintainers")
(wmd "
* Erik Enge
* Drew Crampsie
* Hans H&uuml;bner
* Cheryl Yang
* Mario S. Mommer")))
......@@ -2,17 +2,19 @@
<h1><i class="fa fa-users"></i> The Lisp Community</h1>
<div class="row">
<div class="col-lg-4 col-md-6">
<h2><i class="far fa-comments"></i> IRC</h2>
<p>There are several Lisp related <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a> channels at <a href="http://freenode.net">Freenode</a>:</p>
<div class="community-box col-lg-4 col-md-6">
<h2><i class="far fa-comments"></i> IRC and Chats</h2>
<p>There are several Lisp related <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a> channels at <a href="http://freenode.net">Freenode</a>:
<ul>
<li><a href="http://log.irc.tymoon.eu/freenode/lisp">#lisp</a> - Main Common Lisp channel</li>
<li><a href="#">##lisp</a> - To discuss general lisp dialects of all shapes and forms</li>
<li><a href="#">#lispcafe</a> - A less formal channel for lisp-oriented discussion</li>
</ul>
<p><a href="https://www.cliki.net/IRC">Read more</a></p>
</p>
<p><a href="https://www.cliki.net/IRC">More IRC channels</a></p>
<p>There is also a <a href="https://discord.gg/T5D2EAJ">Lisp Discord server</a></p>
</div>
<div class="col-lg-4 col-md-6">
<div class="community-box col-lg-4 col-md-6">
<h2><i class="far fa-envelope"></i> Mailing Lists</h2>
<p>You can subscribe to several Lisp related mailing lists:</p>
<ul>
......@@ -21,7 +23,7 @@
</ul>
<p><a href="https://mailman.common-lisp.net/listinfo">Read more</a></p>
</div>
<div class="col-lg-4 col-md-6">
<div class="community-box col-lg-4 col-md-6">
<h2><i class="far fa-newspaper"></i> News</h2>
<p>Follow the news at:</p>
<ul>
......@@ -30,7 +32,7 @@
<li><a href="http://groups.google.com/group/comp.lang.lisp">comp.lang-lisp</a> - Google newsgroup (not very active anymore)</li>
</ul>
</div>
<div class="col-lg-4 col-md-6">
<div class="community-box col-lg-4 col-md-6">
<h2><i class="fa fa-book"></i> Docs</h2>
<ul>
<li><a href="https://lispcookbook.github.io/cl-cookbook/">the Common Lisp Cookbook</a></li>
......@@ -40,14 +42,14 @@
</ul>
<p><a href="/documentation">Read more</a></p>
</div>
<div class="col-lg-4 col-md-6">
<div class="community-box col-lg-4 col-md-6">
<h2><i class="fa fa-users"></i> Conferences</h2>
<p>Attend the conferences:</p>
<ul>
<li><a href="https://european-lisp-symposium.org">European Lisp Symposium</a></li>
</ul>
</div>
<div class="col-lg-4 col-md-6">
<div class="community-box col-lg-4 col-md-6">
<h2><i class="fa fa-plus"></i> More</h2>
<ul>
<li><a href="http://www.alu.org">The Association of Lisp Users</a></li>
......
......@@ -2,7 +2,7 @@
<h1><i class="fa fa-book-open"></i> Documentation</h1>
<section style="padding-top: 25px;">
<section>
<h2><i class="fa fa-walking"></i> Getting Started</h2>
Check out <a href="/downloads">our guide</a> to get started.
......
<main>
<article>
<h1><i class="far fa-question-circle"></i>&nbsp;FAQ - Common-Lisp.net Frequently Asked Questions</h1>
<div class="tocbox">
<h4 class="bg-primary" style="color:white;">Table of contents</h4>
<ul>
<li><a href="#faq-email-on-push">GitLab: configure e-mail on push</a></li>
</ul>
</div>
<section id="faq-email-on-push">
<h3>GitLab: configure e-mail on push</h3>
<p>
GitLab supports sending an e-mail upon pushing
commits by project members. In order to use the functionality,
please follow the steps outlined in <a href="/faq/emailonpush/"
>our configuration guide</a>.
</p>
</section>
</article>
</main>
---
title: FAQ - E-mail on push
---
<!-- <div class="sideBox LHS">
<div>This Page</div>
<a href="#introduction">Introduction</a>
<a href="#news">News</a>
<a href="#description">What is it</a>
<a href="#services">Services</a>
<a href="#about">About this site</a>
</div> -->
<!--
<div class="sideBox RHS">
<div>Recent projects
</div>
<table><tbody>
<tr><td colspan="2">
<a href="projects.shtml">More projects...</a>
</td></tr>
<tr><td colspan="2">
<a href="recent-projects.xml" class='rss-icon'>RSS</a>
</td></tr>
</tbody></table>
</div>
-->
<main>
<article>
<h2>Common-Lisp.net FAQ: E-mail on push</h2>
......
title: Frequently asked questions
---
# FAQ - Common-Lisp.Net Frequently asked questions
{table-of-contents :depth 3 :start 2 :label "Table of contents" }
## GitLab
### Configure e-mail on push
GitLab supports sending an e-mail upon pushing
commits by project members. In order to use the functionality,
please follow the steps outlined in
[configuration guide](/faq/emailonpush).
### Deploy project pages
Use GitLab Pages to deploy your project pages
to `https://common-lisp.net/project/<project>/`
using our [deployment instructions](/faq/using-gitlab-deploy-project-pages).
title: Using GitLab to deploy project pages -- Common-Lisp.net FAQ
---
{table-of-contents :depth 2 :start 2 :label "Table of contents" }
# Using GitLab to deploy project pages
This page contains instructions on how to deploy your project pages
(those hosted on 'https://common-lisp.net/project/<your-project>`).
Using deployment through GitLab, you can use your preferred site
generator in your preferred setup: from "simply copy the repository
content" to builds depending on specialized Docker images, all these
are supported by our common-lisp.net setup.
## Step 1: Create a repository for your project pages
In order to deploy your project pages to
`https://common-lisp.net/project/<project>`, you need a
project in GitLab named `<project>-site` in the group named
`<project>`. That is, the resulting repository will be viewable
at the URL `https://gitlab.common-lisp.net/<project>/<project>-site`.
## Step 2: Add content to the repository
After the repository has been created, the site content can be
added. Take into account that any content that needs to be deployed
should end up in a subdirectory called `public/`.
A very simple example of deploying content straight from the repository
is the [cl-couch-site](https://gitlab.common-lisp.net/cl-couch/cl-couch-site/)
project. It holds the content to be deployed in a `src/` subdirectory
which can simply be renamed to `public/`. No further processing is
required.
More complex build steps can be found in the [clo/
cl-site](https://gitlab.common-lisp.net/clo/cl-site/) and [quickref/
quickref](https://gitlab.common-lisp.net/quickref/quickref/) projects
respectively.
## Step 3: Add continuous integration through `.gitlab-ci.yml`
Once a repository has been set up and seeded with content, deployment
instructions have to be added through GitLab's CI (Continuous Integration)
platform. The example below is the simplest deployment CI instruction,
deploying static site content without processing.
pages:
stage: deploy
script: mv src public
artifacts:
paths:
- public
tags:
- site-gen
only:
- master
The above defines the special purpose `pages` build job known to
GitLab to be associated with GitLab Pages deployment. GitLab CI
jobs can be tied to various "stages". The `pages` job should be
tied to the "deploy" stage. And last but not least, the job creates
artifacts in the `public` path which GitLab Pages uses to deploy
the site.
To prevent every intermediate result on every branch from being
deployed to your project site, the job is restricted to building
from the `master` branch only, using the
only:
- master
fragment.
The `tags` fragment mentioned below, links the job to CI builders
("runners"). Builders can only build jobs for which the job at
least one of the tags the builder has as well. On the common-lisp.net
infrastructure, this means that a job with the tag `site-gen` can
only be built with the builder tagged with the `site-gen` tag too.
tags:
- site-gen
Then, last but not least, the fragment `script: mv src public`
instructs the CI system to perform the "build" for this repository
(i.e. nothing more than to rename `src` to `public`).
As mentioned in the previous section, other, more complex, setups
and build instructions are possible. See for examples the [clo/
cl-site](https://gitlab.common-lisp.net/clo/cl-site/) and [quickref/
quickref](https://gitlab.common-lisp.net/quickref/quickref/) projects.
Note however, that these projects don't deploy to a `/project/<project>`
page (but to `https://common-lisp.net` and `https://quickref.common-lisp.net`
instead).
## Step 4: Deploy and test your new project pages
If the syntax of your `.gitlab-ci.yml` file is correct, a new build
will run on every push or merge to the master branch. With each successful
build, a new deployment will take place.
Note that if you want to check that your `.gitlab-ci.yml` file has
valid syntax, you can use GitLab's "CI Lint" application. This application
is available in every project on the "Pipelines" page. For the "clo/cl-site"
project, it's located at https://gitlab.common-lisp.net/clo/cl-site/-/ci/lint
Please note that if you're migrating existing project pages from
`/project/<project>/public_html` to GitLab based deployments that
your new site won't show up until the `public_html` directory has
been removed (or renamed).
For more information on how to use GitLab Pages and GitLab CI,
please see https://docs.gitlab.com/ce/user/project/pages/#overview .
title: GitLab migration
---
<main id="bodyText">
<header id="summary">
<h2>Introduction</h2>
......
title: Migration to GitLab
---
<main>
<article>
<h2>Common-Lisp.net migration to GitLab: status</h2>
......
......@@ -29,18 +29,34 @@
<h3>Clasp</h3>
<p><a href="https://github.com/clasp-developers/clasp">Clasp</a> is a new Common Lisp implementation that seamlessly interoperates with C++ libraries and programs using LLVM for compilation to native code. This allows Clasp to take advantage of a vast array of preexisting libraries and programs, such as out of the scientific computing ecosystem. Embedding them in a Common Lisp environment allows you to make use of rapid prototyping, incremental development, and other capabilities that make it a powerful language.</p>
</div>
<div class="col-lg-4 col-md-6">
<h3>CLISP</h3>
<p><a href="https://clisp.sourceforge.io/">CLISP</a> is a Common Lisp implementation by Bruno Haible, then of Karlsruhe University, and Michael Stoll, then of Munich University, both in Germany. It implements the language described in the ANSI Common Lisp standard with many extensions.</p>
</div>
</div>
<h2 style="margin-bottom: 20px;">Commercial</h2>
<div class="row">
<div class="col-lg-4 col-md-6">
<div class="col-lg-6 col-md-6">
<img src="/static/imgs/acl-128.png" class="float-right">
<h3>Allegro CL</h3>
<p>
<a href="https://franz.com/products/allegro-common-lisp/">Allegro CL ®</a> is a powerful dynamic object-oriented development, especially suited to enterprise-wide, complex application development. Complex applications with billions of objects are made easy with Allegro CL. The complexity of today's software applications and the explosion of data size are pervasive in all fields ranging from Life Sciences to Manufacturing to Financial Analytics. Allegro CL is the most effective system for developing and deploying applications to solve these complex problems in the real world.
</p>
</div>
<div class="col-lg-6 col-md-6">
<h3>LispWorks</h3>
<p>
<a href="http://www.lispworks.com/products/lispworks.html"> LispWorks ® </a> is an implementation of ANSI Common Lisp running on Windows, x86_64 Linux, ARM Linux, Mac OS X, FreeBSD, AIX, x86/x64 Solaris and SPARC/Solaris.
LispWorks is source code compatible across all supported platforms.
LispWorks offers many features including an advanced Common Lisp compiler, interpreter, runtime system, language extensions, CAPI portable GUI toolkit and the LispWorks IDE.
</p>
</div>
</div>
<p>
......
title: Independent Mailing Lists
---
<div id="bodyText">
<h1>Independent Mailing Lists</h1>
<h2 id="apply">How to apply</h2>
......
title: Welcome to Common-Lisp.net!
depends-on:
- news.md
---
<main id="bodyText">
<a class="btn btn-primary float-right" href="/downloads"><i class="fa fa-arrow-right"></i>&nbsp;&nbsp;Get started</a>
<h1>Welcome to Common-Lisp.net</h1>
<section id="introduction">
<img src="/static/imgs/lisplogo_flag2_128.png" style="float:right;">
<h2>Introduction</h2>
<p>Welcome to the amazing world of <b>Common Lisp</b>, the
programmable programming language.</p>
<p>This site is one among many gateways to <b>Common Lisp</b>. Its
goal is to provide the <b>Common Lisp</b> community with development
resources and to work as a starting point for new
programmers.</p>
</section>
<article id="news">
<h2>Latest Lisp news<i class="fa fa-rss float-right"></i></h2>
<div id="widgetmain" style="text-align:left;overflow-y:auto;overflow-x:hidden;width:331px;background-color:#transparent; border:1px solid #333333;padding: 8px;"><div id="rsswidget" style="height:300px;">
<script src="//rss.bloople.net/?url=https%3A%2F%2Fplanet.lisp.org%2Frss20.xml&detail=-1&limit=5&type=js"></script>
<!-- <iframe src="http://us1.rssfeedwidget.com/getrss.php?time=1526156555722&amp;x=http%3A%2F%2Fplanet.lisp.org%2Frss20.xml&amp;w=331&amp;h=300&amp;bc=333333&amp;bw=1&amp;bgc=transparent&amp;m=20&amp;it=true&amp;t=Planet Lisp&amp;tc=333333&amp;ts=16&amp;tb=transparent&amp;il=true&amp;lc=D9230F&amp;ls=14&amp;lb=false&amp;id=false&amp;dc=333333&amp;ds=14&amp;idt=true&amp;dtc=284F2D&amp;dts=12" border="0" hspace="0" vspace="0" marginwidth="0" marginheight="0" style="border:0; padding:0; margin:0; width:331px; height:300px;" id="rssOutput" frameborder="no">Reading RSS Feed ...</iframe> -->
</div></div>
<!-- <a class="twitter-timeline" data-height="300" data-chrome="nofooter noborders noheader" href="https://twitter.com/planet_lisp?ref_src=twsrc%5Etfw">Tweets by planet_lisp</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> -->
<div style="padding-top: 10px;"></div>
<script src="https://www.reddit.com/r/lisp/.embed?limit=5&t=all" type="text/javascript"></script>
<h2 style="padding-top: 10px;">Latest Common-Lisp.net news</h2>
{{> newsbox}}
<p><a href="/news" style="font-size: 80%"
>Read more...</a></p>
</article>
<article id="description">
<h2>What is Common Lisp?</h2>
<p><b>Common Lisp</b> is the <a href="/features">modern</a>, <a href="/features">multi-paradigm</a>, <a href="/features">high-performance</a>,
<a href="/features">compiled</a>, <a href="/features">ANSI-standardized</a>, most prominent (along with <a href="http://www.schemers.org/">Scheme</a>) descendant of the long-running family of Lisp programming languages.</p>
</p>
<p><b>Common Lisp</b> is known for being extremely flexible, having
excellent support for object oriented programming, and fast
prototyping capabilities. It also sports an extremely powerful
macro system that allows you to tailor the language to your
application, and a flexible run-time environment that allows
modification and debugging of running applications (excellent
for server-side development and long-running critical
software). It is a multi-paradigm programming language that
allows you to to choose the approach and paradigm according to
your application domain.</p>
<!-- <p><a href="/features" class="emphasize"> Read more about <b>Common Lisp</b> features here.</a></p> -->
<p>Curious? &nbsp;&nbsp; <a class="btn btn-primary" href="/downloads"> Get started!</a>
<!-- <p>Read about the <a class="emphasize" href="http://www.paulgraham.com/lisphistory.html">language history here.</a></p> -->
</article>
<section id="services">
<h2>Services</h2>
<ul>
<li><a href="/project-intro">Project hosting</a> for open
source / free software <b>Common Lisp</b> projects.</li>
<li><a href="/independent-lists">Mailing lists</a> for
<b>Common Lisp</b> related topics.</li>
</ul>
</section>
<section id="support">
<h2>Support</h2>
<p>If you need technical support, please contact <a
href="http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/clo-devel">our
admins</a>.</p>
</section>
<section id="about">
<h2>About this site</h2>
<p>Check out our <a href="/about">about page</a>.</p>
</section>
<a class="btn btn-primary float-right" href="/downloads"><i class="fa fa-arrow-right"></i>&nbsp;&nbsp;Get started</a>
<h1>Welcome to Common-Lisp.net</h1>
<section id="introduction">
<img src="/static/imgs/lisplogo_flag2_128.png" style="float:right;">
<h2>Introduction</h2>
<p>Welcome to the amazing world of <b>Common Lisp</b>, the
programmable programming language.</p>
<p>This site is one among many gateways to <b>Common Lisp</b>. Its
goal is to provide the <b>Common Lisp</b> community with development
resources and to work as a starting point for new
programmers.</p>
</section>
<article id="news">
<div id="clnet-news">
<h2><a href="/news">Latest Common-Lisp.net news</a></h2>
{{{newsbox}}}
<p><a href="/news" style="font-size: 80%">Read more...</a></p>
</div>
<h2 style="padding-top: 10px;">Latest Lisp news</h2>
<div id="widgetmain" style="text-align:left;overflow-y:auto;overflow-x:hidden;width:331px;background-color:#transparent; border:1px solid #333333;padding: 8px;">
<div id="rsswidget" style="height:300px;">
<script src="//rss.bloople.net/?url=https%3A%2F%2Fplanet.lisp.org%2Frss20.xml&detail=-1&limit=6&type=js"></script>
</div>
</div>
<div style="padding-top: 10px;"></div>
<script src="https://www.reddit.com/r/lisp/.embed?limit=5&t=all" type="text/javascript"></script>
</article>
<article id="description">
<h2>What is Common Lisp?</h2>
<p><b>Common Lisp</b> is the <a href="/features">modern</a>, <a href="/features">multi-paradigm</a>, <a href="/features">high-performance</a>,
<a href="/features">compiled</a>, <a href="/features">ANSI-standardized</a>, most prominent (along with <a href="http://www.schemers.org/">Scheme</a>) descendant of the long-running family of Lisp programming languages.</p>
</p>
<p><b>Common Lisp</b> is known for being extremely flexible, having
excellent support for object oriented programming, and fast
prototyping capabilities. It also sports an extremely powerful
macro system that allows you to tailor the language to your
application, and a flexible run-time environment that allows
modification and debugging of running applications (excellent
for server-side development and long-running critical
software). It is a multi-paradigm programming language that
allows you to choose the approach and paradigm according to
your application domain.</p>
<!-- <p><a href="/features" class="emphasize"> Read more about <b>Common Lisp</b> features here.</a></p> -->
<p>Curious? &nbsp;&nbsp; <a class="btn btn-primary" href="/downloads"> Get started!</a>
<!-- <p>Read about the <a class="emphasize" href="http://www.paulgraham.com/lisphistory.html">language history here.</a></p> -->
</article>
<section id="services">
<h2>Services</h2>
<ul>
<li><a href="/project-intro">Project hosting</a> for open
source / free software <b>Common Lisp</b> projects.</li>
<li><a href="/independent-lists">Mailing lists</a> for
<b>Common Lisp</b> related topics.</li>
</ul>
</section>
<section id="support">
<h2>Support</h2>
<p>If you need technical support, please contact <a
href="http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/clo-devel">our
admins</a>.</p>
</section>
<section id="about">
<h2>About this site</h2>
<p>Check out our <a href="/about">about page</a>.</p>
</section>
</main>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Awesome Lisp Company
![Lisp logo](https://github.com/azzamsa/lisp-logo/blob/master/logos/lisp-lizard-with-text.svg)
Awesome Lisp Company is the curated lisp for companies that use Lisp Extensively in their stack.
*This list intended only for company with Common Lisp and Scheme usage*
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->
**Table of Contents**
- [Awesome Lisp Company](#awesome-lisp-company)
- [North America](#north-america)
- [United States](#united-states)
- [Canada](#canada)
- [Europe](#europe)
- [Belgium](#belgium)
- [Denmark](#denmark)
- [Finland](#finland)
- [Germany](#germany)
- [Netherlands](#netherlands)
- [Norway](#norway)
- [Poland](#poland)
- [Portugal](#portugal)
- [Spain](#spain)
- [Sweden](#sweden)
- [Switzerland](#switzerland)
- [Asia](#asia)
- [India](#india)
- [Japan](#japan)
- [Australia](#australia)
- [Virtual or Unsure of Location](#virtual-or-unsure-of-location)
- [Other Resources](#other-resources)
- [Note](#note)
- [Contributors](#contributors)
- [Guidelines to contribute](#guidelines-to-contribute)
- [Credit](#credit)
- [License](#license)
<!-- markdown-toc end -->
title: Companies using Lisp
---
# Companies using Lisp
{table-of-contents :depth 3 :start 2 :label "Table of contents" }
## North America
......@@ -259,7 +225,7 @@ Awesome Lisp Company is the curated lisp for companies that use Lisp Extensively
- [Untyped](https://untyped.com/)
- web applications, custom software development, training. Virtual Office (5 people). [PLT Scheme](http://www.untyped.com/untyping/archives/2007/11/custom_dispatch.html), very good [blog](http://www.untyped.com/untyping//archives.html)
## Other Resources
# Other Resources
- [Allegro Common Lisp Success Stories ](https://franz.com/success/) - by Franc Inc
- [Customer Application List](https://franz.com/success/all_customer_apps.lhtml)
......@@ -268,14 +234,12 @@ Awesome Lisp Company is the curated lisp for companies that use Lisp Extensively
- ALU Wiki – Industry applications
- LispJobs archives
## Note
# Note
- &#128124; : Dead Companies.
## Contributors
## Guidelines to contribute
# Guidelines to contribute
Please follow this format of the list, if you want to make a contribution.
......@@ -287,13 +251,8 @@ Please follow this format of the list, if you want to make a contribution.
- If the company doesn't fit in any **existing location**, make a **new one** for it.
- Ensure everything is **alphabetically sorted**.
## Credit
# Credit
- This list derived from [Peter Christensen](http://pchristensen.com/blog/lisp-companies/) work with his kind permission.
## License
[![Creative Commons License](http://i.creativecommons.org/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0/)
This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).
- This list was extracted from [Awesome Lisp Companies](https://github.com/azzamsa/awesome-lisp-companies) project under
[Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).
This diff is collapsed.
title: common-lisp.net News
---
# Latest Common-Lisp.net news
### 2018-11-18
There was a short period of down time today in order to support an
off-line reorganization of our file systems required to simplify and
strengthen our backups and system maintenance tasks.
### 2018-11-09
Our GitLab instance now has a more open account policy: users with a
social login will be able to create an account without approval by
an admin.
In order to support this openness, a more strict login policy has
been put into place, requiring all users to log in using 2FA.
For those users who don't have a smartphone to install a 2FA
app on, [here's a c|net article how to do
2FA anyway](https://www.cnet.com/how-to/how-to-use-two-factor-authentication-without-a-phone/)
### 2018-11-03
There's now infrastructure available to projects to [deploy their project pages
through GitLab](https://common-lisp.net/faq/using-gitlab-deploy-project-pages).
This infrastructure is now being used to [migrate those project pages
to GitLab Pages
deployment](https://mailman.common-lisp.net/pipermail/clo-devel/2018-November/001294.html)
for which there are no OS-level users anymore to update them.
### 2018-10-26
As announced on October 12, empty projects have been removed (archived) from the system. After
further cleaning, the updated list consists of these 23 projects:
* cl-amqp
* cl-cactus-kev
* cl-captcha
* cl-gdbm
* clint
* cl-lazy-list
* cl-lexer
* clotnet
* cl-player
* cl-rundown
* cltl3
* decl
* defmud
* docutrack
* israel-lisp
* lisp-interface-library
* mk-defsystem
* movies
* objective-cl
* phorplay
* same
* trivial-features
* umpa-lumpa
### 2018-10-12 *Intent to remove unused projects*
As per [the announcement](https://mailman.common-lisp.net/pipermail/clo-devel/2018-October/001253.html),
the site admins plan to remove the following list of projects which have been determined to neither
have a project page nor a code repository. Please contact the site admins before October 26, 2018 to
cancel project cleanup in case your project is wrongfully listed.
* arxana
* asdf-install
* asdf-packaging
* boston-lisp
* chemboy
* cl-amqp
* cl-buchberger
* cl-cactus-kev
* cl-captcha
* cl-clickatell
* cl-gdbm
* cl-gtk2
* clint
* cl-lazy-list
* cl-lexer
* cl-match
* cl-ode
* clotnet
* cl-peg
* cl-player
* cl-rundown
* cltl3
* cl-yacc-ebnf
* decl
* defmud
* docutrack
* innen
* israel-lisp
* jess-parse
* lisp-interface-library
* mk-defsystem
* movies
* objective-cl
* phorplay
* same
* sqlisp
* tioga
* trivial-features
* trivial-shell
* ucs-sort
* umpa-lumpa
* xml-psychiatrist
### 2018-10-12
Today I found some time to enable GitLab's 'reply by e-mail' functionality.
When you receive a notification e-mail from our GitLab instance, you can now send a reply to that notification. If the notification was from an issue being updated, then your reply will update the issue with a follow-up commont.
### 2018-10-10
A new version of Common-Lisp.net has been launched!
......
title: Orphaned mailing lists
---
<div id="bodyText">
<h2 id="intro">Introduction</h2>
......
title: Orphaned projects
---
<h1>Orphaned Projects</h1>
<div id="bodyText">
<h2 id="intro">Introduction</h2>
......
title: Projects
---
<a style="clear:both;" class="btn btn-primary float-right" href="/project-intro"><i class="fa fa-arrow-right"></i>&nbsp;&nbsp;Projects Hosting</a>
<div id="bodyText">
<h1 style="padding-bottom: 30px;"><i class="fa fa-project-diagram"></i>&nbsp;Common-Lisp.net projects</h1>
......@@ -50,7 +52,6 @@
<a href="/project/chtml-matcher">chtml-matcher</a><br/>
<a href="/project/cinline">cinline</a><br/>
<a href="/project/cl+j">cl+j</a><br/>
<a href="/project/cl-amqp">cl-amqp</a><br/>
<a href="/project/cl-api">cl-api</a><br/>
<a href="/project/cl-applescript">cl-applescript</a><br/>
<a href="/project/cl-bench">cl-bench</a><br/>
......@@ -59,9 +60,7 @@
<a href="/project/cl-blog">cl-blog</a><br/>
<a href="/project/cl-buchberger">cl-buchberger</a><br/>
<a href="/project/cl-bzip2">cl-bzip2</a><br/>
<a href="/project/cl-cactus-kev">cl-cactus-kev</a><br/>
<a href="/project/cl-cairo2">cl-cairo2</a><br/>
<a href="/project/cl-captcha">cl-captcha</a><br/>
<a href="/project/cl-carbon">cl-carbon</a><br/>
<a href="/project/cl-cli-parser">cl-cli-parser</a><br/>
<a href="/project/cl-clickatell">cl-clickatell</a><br/>
......@@ -85,7 +84,6 @@
<a href="/project/cl-fltk">cl-fltk</a><br/>
<a href="/project/cl-fuse">cl-fuse</a><br/>
<a href="/project/cl-gd">cl-gd</a><br/>
<a href="/project/cl-gdbm">cl-gdbm</a><br/>
<a href="/project/cl-glpk">cl-glpk</a><br/>
<a href="/project/cl-godb">cl-godb</a><br/>
<a href="/project/cl-graph">cl-graph</a><br/>
......@@ -103,8 +101,6 @@
<a href="/project/cl-kanren-trs">cl-kanren-trs</a><br/>
<a href="/project/cl-l10n">cl-l10n</a><br/>
<a href="/project/cl-launchpad">cl-launchpad</a><br/>
<a href="/project/cl-lazy-list">cl-lazy-list</a><br/>
<a href="/project/cl-lexer">cl-lexer</a><br/>
<a href="/project/cl-librarian">cl-librarian</a><br/>
<a href="/project/cl-libtai">cl-libtai</a><br/>
<a href="/project/cl-machine-learning">cl-machine-learning</a><br/>
......@@ -142,7 +138,6 @@
<a href="/project/cl-quasi-quote">cl-quasi-quote</a><br/>
<a href="/project/cl-rdbms">cl-rdbms</a><br/>
<a href="/project/cl-rope">cl-rope</a><br/>
<a href="/project/cl-rundown">cl-rundown</a><br/>
<a href="/project/cl-sbml">cl-sbml</a><br/>
<a href="/project/cl-screen">cl-screen</a><br/>
<a href="/project/cl-selenium">cl-selenium</a><br/>
......@@ -204,16 +199,13 @@
<a href="/project/clonsigna">clonsigna</a><br/>
<a href="/project/closer">closer</a><br/>
<a href="/project/closure">closure</a><br/>
<a href="/project/clotnet">clotnet</a><br/>
<a href="/project/clouchdb">clouchdb</a><br/>
<a href="/project/cloud">cloud</a><br/>
<a href="/project/clpython">clpython</a><br/>
<a href="/project/clsql-fluid">clsql-fluid</a><br/>
<a href="/project/clsql-mysql-introspect">clsql-mysql-introspect</a><br/>
<a href="/project/cltl3">cltl3</a><br/>
<a href="/project/cmucl">cmucl</a><br/>
<a href="/project/common-lisp-beginner">common-lisp-beginner</a><br/>
<a href="/project/common-math">common-math</a><br/>
<a href="/project/commonqt">commonqt</a><br/>
<a href="/project/computed-class">computed-class</a><br/>
<a href="/project/core-services">core-services</a><br/>
......@@ -225,16 +217,13 @@
<a href="/project/de-setf-amqp">de-setf-amqp</a><br/>
<a href="/project/de-setf-graphics">de-setf-graphics</a><br/>
<a href="/project/de.setf.amqp">de.setf.amqp</a><br/>
<a href="/project/decl">decl</a><br/>
<a href="/project/defclass-star">defclass-star</a><br/>
<a href="/project/defdoc">defdoc</a><br/>
<a href="/project/defeditor">defeditor</a><br/>
<a href="/project/definer">definer</a><br/>
<a href="/project/defmud">defmud</a><br/>
<a href="/project/defplayer">defplayer</a><br/>
<a href="/project/defwm">defwm</a><br/>
<a href="/project/docudown">docudown</a><br/>
<a href="/project/docutrack">docutrack</a><br/>
<a href="/project/drakma">drakma</a><br/>
<a href="/project/dynamic-classes">dynamic-classes</a><br/>
<a href="/project/dyslexia">dyslexia</a><br/>
......@@ -288,7 +277,6 @@
<a href="/project/ip-interfaces">ip-interfaces</a><br/>
<a href="/project/isidorus">isidorus</a><br/>
<a href="/project/iso8601-date">iso8601-date</a><br/>
<a href="/project/israel-lisp">israel-lisp</a><br/>
<a href="/project/iterate">iterate</a><br/>
<a href="/project/iterate-clsql">iterate-clsql</a><br/>
<a href="/project/jess-parse">jess-parse</a><br/>
......@@ -304,7 +292,6 @@
<a href="/project/limp">limp</a><br/>
<a href="/project/lineal">lineal</a><br/>
<a href="/project/linedit">linedit</a><br/>
<a href="/project/lisp-interface-library">lisp-interface-library</a><br/>
<a href="/project/lisp-matrix">lisp-matrix</a><br/>
<a href="/project/lisp-on-lines">lisp-on-lines</a><br/>
<a href="/project/lisp-res-kit">lisp-res-kit</a><br/>
......@@ -318,7 +305,6 @@
<a href="/project/local-time">local-time</a><br/>
<a href="/project/log4cl">log4cl</a><br/>
<a href="/project/log5">log5</a><br/>
<a href="/project/lost+found">lost+found</a><br/>
<a href="/project/lw-vim-mode">lw-vim-mode</a><br/>
<a href="/project/macho">macho</a><br/>
<a href="/project/macondoolap">macondoolap</a><br/>
......@@ -333,14 +319,11 @@
<a href="/project/mirror">mirror</a><br/>
<a href="/project/misc-extensions">misc-extensions</a><br/>
<a href="/project/misrouted">misrouted</a><br/>
<a href="/project/mit-cadr">mit-cadr</a><br/>
<a href="/project/mk-defsystem">mk-defsystem</a><br/>
<a href="/project/mkcl">mkcl</a><br/>
<a href="/project/mod-lisp">mod-lisp</a><br/>
<a href="/project/modisc">modisc</a><br/>
<a href="/project/moptilities">moptilities</a><br/>
<a href="/project/morphologie">morphologie</a><br/>
<a href="/project/movies">movies</a><br/>
<a href="/project/movitz">movitz</a><br/>
<a href="/project/named-readtables">named-readtables</a><br/>
<a href="/project/names-and-paths">names-and-paths</a><br/>
......@@ -350,19 +333,16 @@
<a href="/project/noctool">noctool</a><br/>
<a href="/project/nrw-xmcl">nrw-xmcl</a><br/>
<a href="/project/nxtlisp">nxtlisp</a><br/>
<a href="/project/objective-cl">objective-cl</a><br/>
<a href="/project/oct">oct</a><br/>
<a href="/project/okra">okra</a><br/>
<a href="/project/openair">openair</a><br/>
<a href="/project/osicat">osicat</a><br/>
<a href="/project/pal">pal</a><br/>
<a href="/project/parenscript">parenscript</a><br/>
<a href="/project/parse-declarations">parse-declarations</a><br/>
<a href="/project/patty">patty</a><br/>
<a href="/project/pg">pg</a><br/>
<a href="/project/pg-introspect">pg-introspect</a><br/>
<a href="/project/phemlock">phemlock</a><br/>
<a href="/project/phorplay">phorplay</a><br/>
<a href="/project/plain-odbc">plain-odbc</a><br/>
<a href="/project/plexippus-xpath">plexippus-xpath</a><br/>
<a href="/project/ply">ply</a><br/>
......@@ -384,7 +364,6 @@
<a href="/project/rucksack">rucksack</a><br/>
<a href="/project/s-xml">s-xml</a><br/>
<a href="/project/s-xml-rpc">s-xml-rpc</a><br/>
<a href="/project/same">same</a><br/>
<a href="/project/sapaclisp">sapaclisp</a><br/>
<a href="/project/sb-simd">sb-simd</a><br/>
<a href="/project/sequence-iterators">sequence-iterators</a><br/>
......@@ -413,7 +392,6 @@
<a href="/project/tinaa">tinaa</a><br/>
<a href="/project/tioga">tioga</a><br/>
<a href="/project/trivial-backtrace">trivial-backtrace</a><br/>
<a href="/project/trivial-features">trivial-features</a><br/>
<a href="/project/trivial-freeimage">trivial-freeimage</a><br/>
<a href="/project/trivial-garbage">trivial-garbage</a><br/>
<a href="/project/trivial-gray-streams">trivial-gray-streams</a><br/>
......@@ -426,7 +404,6 @@
<a href="/project/ucs-sort">ucs-sort</a><br/>
<a href="/project/ucw">ucw</a><br/>
<a href="/project/ucw-extras">ucw-extras</a><br/>
<a href="/project/umpa-lumpa">umpa-lumpa</a><br/>
<a href="/project/unetwork">unetwork</a><br/>
<a href="/project/uri-template">uri-template</a><br/>
<a href="/project/usocket">usocket</a><br/>
......
title: Project Hosting
---
<a style="clear:both;" class="btn btn-primary float-right" href="/phub"><i class="fa fa-arrow-right"></i>&nbsp;&nbsp;Common-Lisp.net projects</a>
<div style="clear:both;margin-top: 20px;" class="tocbox">
<div style="clear:both;margin-top: 20px;" class="table-of-contents">
<h4 class="bg-primary" style="color:white;">Table of contents</h4>
<ul>
<li><a href="#whatyouget">What you get</a></li>
......
$(document).ready(function(){
$("span.menu-link").click(function(event){
var nextMenu = $(this).next(".menu");
console.log(nextMenu.siblings(".menu").slideUp());
nextMenu.siblings(".menu").slideUp();
nextMenu.slideToggle();
});
/* Random Lisp quote in footer */
var $quotes = $('#quotes > div');
var $quote = $($quotes[Math.floor(Math.random() * $quotes.length)]);
$('#lisp-quote').html($quote.html());
});
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
(in-package :cl-site)
(defparameter *LAYOUT-DIR* (asdf:system-relative-pathname :cl-site "layout/templates/")
"Pathname for location of template files.")
(defparameter *OUTPUT-DIR* (asdf:system-relative-pathname :cl-site "output/")
"Pathname where the generated output should be written to.")
;; @TO-DO: store layout name as global, generate js/css pathnames from it.
;; (More template-related variables may go here in the future)
(defparameter *DEFAULT-PAGE-TEMPLATE* "layout_2018.html"
"Default template to use unless another is explicitly specified.")
;; @TO-DO: replace this with better css preprocessing.
(defparameter *STYLES-DIR* (asdf:system-relative-pathname :cl-site "layout/css/")
"Pathname for location and list of styles.")
(defparameter *STYLES*
(list "layout_2018.css")
"A list of strings representing relative filenames.")
;; JS files - separate from static files, because they are processed differently
;; within the template.
(defparameter *SCRIPTS-DIR* (asdf:system-relative-pathname :cl-site "layout/js/")
"Pathname for location and list of scripts.")
(defparameter *SCRIPTS*
(list "scripts.js")
"A list of strings representing relative filenames.")
;; General static files - images etc
(defparameter *STATIC-DIR* (asdf:system-relative-pathname :cl-site "layout/static/")
"Pathname for location of static files.")
;; The only REQUIRED field is :content which must be the filename of the page content
;; The :content field will NOT be sent to the template.
;; @TO-DO: store fields within content files and parse them out.
(defparameter *PAGES-DIR* (asdf:system-relative-pathname :cl-site "content/")
"Pathname for location of page content.")
(defparameter *PRIVATE-KEYS* '(:slug :content))
;; Extra context for pages
(defparameter *PAGE-CONTEXT*
`(("about.html" ((:title . "Common-Lisp.net | About")))
("index.html" ((:title . "Welcome to Common-Lisp.net!")))
("faq.html" ((:title . "Frequently asked questions")))
("gitlab-migration-repository-mapping.html" ((:title . "GitLab migration")))
("gitlab-migration-status.html" ((:title . "Migration to GitLab")))
("independent-lists.html" ((:title . "Independent Mailing Lists")))
("orphaned-mailing-lists.html" ((:title . "Orphaned mailing lists")))
("orphaned-projects.html" ((:title . "Orphaned projects")))
("phub.html" ((:title . "Projects")))
("project-intro.html" ((:title . "Project Hosting")))))
(defun page-context (filename)
(cadr (assoc filename *page-context* :test 'equalp)))
(defun page-title (filename)
(or (cdr (assoc :title (page-context filename)))
(format nil "Common-Lisp.net | ~a"
(string-capitalize
(pathname-name (pathname filename))))))
(defparameter *PAGES*
(mapcar (lambda (p)
(let ((context
(append (list (cons :content (file-namestring p)))
(page-context (file-namestring p)))))
(when (not (assoc :title context))
(push (cons :title (page-title (file-namestring p)))
context))
context))
(directory (make-pathname :defaults *PAGES-DIR*
:name :wild
:type "html")))
"Each page is an alist containing info to be sent to the template via the context.")
;; Initialize global context (will be appended to all individual page contexts)
;; Used to store things like stylesheets, etc...
(defparameter *GLOBAL-CONTEXT* ())
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
(in-package :cl-site)
(defparameter *LAYOUT-DIR* (asdf:system-relative-pathname :cl-site "layout/")
"Pathname for location of all layout files (including templates).")
(defparameter *templates-dir* (merge-pathnames #P"templates/" *layout-dir*)
"Pathname for location of template files.")
(defparameter *OUTPUT-DIR* (asdf:system-relative-pathname :cl-site "output/")
"Pathname where the generated output should be written to.")
;; @TO-DO: store layout name as global, generate js/css pathnames from it.
;; (More template-related variables may go here in the future)
(defparameter *DEFAULT-PAGE-TEMPLATE* "layout_2018.html"
"Default template to use unless another is explicitly specified.")
;; General static files - images etc
(defparameter *STATIC-DIR* (asdf:system-relative-pathname :cl-site "content/static/")
"Pathname for location of static files.")
;; The only REQUIRED field is :content which must be the filename of the page content
;; The :content field will NOT be sent to the template.
;; @TO-DO: store fields within content files and parse them out.
(defparameter *PAGES-DIR* (asdf:system-relative-pathname :cl-site "content/")
"Pathname for location of page content.")
(defparameter *PRIVATE-KEYS* '(:slug :content))
;; Initialize global context (will be appended to all individual page contexts)
;; Used to store things like stylesheets, etc...
(defparameter *GLOBAL-CONTEXT* ())
(defparameter *computed-page-content* nil
"Used as dynamically bound variable in preprocess-lisp-pages, to
capture output when compile/loading any lispy html content files
wrapped with calls to add-content. Global value should always be
nil.")
(defvar *paserve-port* 8008)
;; FLAG add different ports for other webservers when activated
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
(in-package :cl-site)
; Makes pathname from prefix + page object
(defun make-path (prefix suffix &optional page)
"Constructs a pathname from `prefix` and `suffix`.
`suffix` can be one of
1. a context (an alist) with a ':content' element
2. a pathname
3. a string identifying a path
`prefix` can be one of
1. a pathname
2. a string identifying a path
"
(let ((path (if page (cdr (assoc :content suffix)) suffix)))
(if (pathnamep prefix)
(merge-pathnames path prefix)
(pathname (concatenate 'string
prefix path)))))
; Slurps file from a string
(defun file-to-string (filepath)
"Reads the file designated by pathname `filepath` into memory,
returning the string with the sequence read from the file"