Migrate from GitHub to Forgejo
All checks were successful
CI / test (sbcl-bin) (push) Successful in 24s

This commit is contained in:
paku 2025-01-11 09:52:57 +00:00
parent a73af8d936
commit 31a825b033
Signed by: paku
GPG key ID: 5B4E8402BCC50607
5 changed files with 105 additions and 28 deletions

70
.forgejo/workflows/ci.yml Normal file
View file

@ -0,0 +1,70 @@
name: 'CI'
on:
push:
branches:
- 'master'
pull_request:
jobs:
test:
runs-on: docker
strategy:
matrix:
lisp:
- sbcl-bin
steps:
- uses: actions/checkout@v4
- name: Restore cache
id: restore-cache
uses: actions/cache/restore@v4
with:
path: |
~/.roswell
/usr/local/bin/ros
/usr/local/etc/roswell/
qlfile
qlfile.lock
.qlot
~/.cache/common-lisp/
key: roswell-${{ runner.os }}-${{ matrix.lisp }}-${{ hashFiles('qlfile', 'qlfile.lock', '*.asd') }}
- name: Install Roswell
if: steps.restore-cache.outputs.cache-hit != 'true'
env:
LISP: ${{ matrix.lisp }}
run: |
curl -L https://raw.githubusercontent.com/roswell/roswell/master/scripts/install-for-ci.sh | sh
- name: Install Qlot
if: steps.restore-cache.outputs.cache-hit != 'true'
run: |
ros install fukamachi/qlot
- name: Install dependencies
if: steps.restore-cache.outputs.cache-hit != 'true'
run: |
PATH="~/.roswell/bin:$PATH"
qlot install
qlot exec ros install hsx
- name: Save cache
id: save-cache
uses: actions/cache/save@v4
if: steps.restore-cache.outputs.cache-hit != 'true'
with:
path: |
~/.roswell
/usr/local/bin/ros
/usr/local/etc/roswell/
qlfile
qlfile.lock
.qlot
~/.cache/common-lisp/
key: ${{ steps.restore-cache.outputs.cache-primary-key }}
- name: Run tests
run: .qlot/bin/rove hsx.asd

View file

@ -1,4 +1,4 @@
name: 'test' name: 'CI'
on: on:
push: push:
@ -7,15 +7,15 @@ on:
pull_request: pull_request:
jobs: jobs:
tests: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
lisp: lisp:
- sbcl-bin - sbcl-bin
- ccl-bin - ccl-bin
env: env:
LISP: ${{ matrix.lisp }} LISP: ${{ matrix.lisp }}

View file

@ -1,6 +1,7 @@
# HSX # HSX
HSX (Hypertext S-expression) is a simple and powerful HTML (Living Standard) generation library for Common Lisp. HSX (Hypertext S-expression) is a simple and powerful HTML (Living Standard)
generation library for Common Lisp.
This project is a fork of [ailisp/flute](https://github.com/ailisp/flute/). This project is a fork of [ailisp/flute](https://github.com/ailisp/flute/).
@ -8,13 +9,16 @@ This project is a fork of [ailisp/flute](https://github.com/ailisp/flute/).
This software is still in ALPHA quality. The APIs are likely to change. This software is still in ALPHA quality. The APIs are likely to change.
Please check the [release notes](https://github.com/skyizwhite/hsx/releases) for updates. Please check the [release notes](https://code.skyizwhite.dev/paku/hsx/releases)
for updates.
## Getting Started ## Getting Started
### Basic Usage ### Basic Usage
Use the `hsx` macro to create HTML elements. Attributes are specified using a property list after the element name, and child elements are nested directly inside. Use the `hsx` macro to create HTML elements. Attributes are specified using a
property list after the element name, and child elements are nested directly
inside.
```lisp ```lisp
(hsx (hsx
@ -32,7 +36,8 @@ This generates:
</div> </div>
``` ```
To convert an HSX object into an HTML string, use the `render-to-string` function: To convert an HSX object into an HTML string, use the `render-to-string`
function:
```lisp ```lisp
(render-to-string (render-to-string
@ -43,7 +48,8 @@ To convert an HSX object into an HTML string, use the `render-to-string` functio
HSX allows you to embed Common Lisp forms directly within your HTML structure. HSX allows you to embed Common Lisp forms directly within your HTML structure.
When working with HSX elements inside embedded Lisp forms, you should use the `hsx` macro again. When working with HSX elements inside embedded Lisp forms, you should use the
`hsx` macro again.
```lisp ```lisp
(hsx (hsx
@ -76,7 +82,8 @@ This might generate:
### Using Fragments ### Using Fragments
To group multiple elements without adding an extra wrapper, use the fragment `<>`. To group multiple elements without adding an extra wrapper, use the fragment
`<>`.
```lisp ```lisp
(hsx (hsx
@ -96,7 +103,9 @@ This generates:
### Creating Components ### Creating Components
You can define reusable components using the `defcomp` macro. Component names must begin with a tilde (`~`). Properties should be declared using `&key`, `&rest`, or both. The body must return an HSX element. You can define reusable components using the `defcomp` macro. Component names
must begin with a tilde (`~`). Properties should be declared using `&key`,
`&rest`, or both. The body must return an HSX element.
```lisp ```lisp
(defcomp ~card (&key title children) (defcomp ~card (&key title children)
@ -140,5 +149,3 @@ This project is licensed under the MIT License.
© 2024 skyizwhite © 2024 skyizwhite
© 2018 Bo Yao © 2018 Bo Yao
Feel free to contribute to the project and report any issues or feature requests on the [GitHub repository](https://github.com/skyizwhite/hsx).

6
qlfile
View file

@ -1,6 +1,6 @@
ql alexandria ql alexandria
ql cl-str ql cl-str
github rove fukamachi/rove git rove https://github.com/fukamachi/rove
github dissect Shinmera/dissect ; workaround git dissect https://github.com/Shinmera/dissect ; workaround
ql mstrings git mstrings https://git.sr.ht/~shunter/mstrings

View file

@ -1,24 +1,24 @@
("quicklisp" . ("quicklisp" .
(:class qlot/source/dist:source-dist (:class qlot/source/dist:source-dist
:initargs (:distribution "https://beta.quicklisp.org/dist/quicklisp.txt" :%version :latest) :initargs (:distribution "https://beta.quicklisp.org/dist/quicklisp.txt" :%version :latest)
:version "2023-10-21")) :version "2024-10-12"))
("alexandria" . ("alexandria" .
(:class qlot/source/ql:source-ql (:class qlot/source/ql:source-ql
:initargs (:%version :latest) :initargs (:%version :latest)
:version "ql-2023-10-21")) :version "ql-2024-10-12"))
("cl-str" . ("cl-str" .
(:class qlot/source/ql:source-ql (:class qlot/source/ql:source-ql
:initargs (:%version :latest) :initargs (:%version :latest)
:version "ql-2023-10-21")) :version "ql-2024-10-12"))
("rove" . ("rove" .
(:class qlot/source/github:source-github (:class qlot/source/git:source-git
:initargs (:repos "fukamachi/rove" :ref nil :branch nil :tag nil) :initargs (:remote-url "https://github.com/fukamachi/rove")
:version "github-cacea7331c10fe9d8398d104b2dfd579bf7ea353")) :version "git-cacea7331c10fe9d8398d104b2dfd579bf7ea353"))
("dissect" . ("dissect" .
(:class qlot/source/github:source-github (:class qlot/source/git:source-git
:initargs (:repos "Shinmera/dissect" :ref nil :branch nil :tag nil) :initargs (:remote-url "https://github.com/Shinmera/dissect")
:version "github-a70cabcd748cf7c041196efd711e2dcca2bbbb2c")) :version "git-a70cabcd748cf7c041196efd711e2dcca2bbbb2c"))
("mstrings" . ("mstrings" .
(:class qlot/source/ql:source-ql (:class qlot/source/git:source-git
:initargs (:%version :latest) :initargs (:remote-url "https://git.sr.ht/~shunter/mstrings")
:version "ql-2023-10-21")) :version "git-7a94c070141c7cd03bbd3648b17724c3bf143393"))