Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/luavixen/cktjs

JSON-style CKT config language parsing/stringification.
https://github.com/luavixen/cktjs

javascript javascript-library parser typescript

Last synced: 3 months ago
JSON representation

JSON-style CKT config language parsing/stringification.

Awesome Lists containing this project

README

        























# cktjs
cktjs is an implementation of a decoder and encoder for the [CKT config language](https://cricket.piapiac.org/software/ckt/).
It aims to be a drop-in replacement for JavaScripts's built in [JSON library](https://tc39.es/ecma262/#sec-json-object) minus support for `reviver` and `replacer`.

For syntax highlighting try the [cktvs extension](https://github.com/luavixen/cktvs) for Visual Studio Code.

## Installation
The cktjs npm package provides the original ES module source plus CommonJS and browser IIFE builds.
It can be installed with:
```sh
npm install cktjs
```

For [Deno](https://deno.land/) users, you can get the module from [deno.land/x/cktjs](https://deno.land/x/cktjs):
```typescript
import * as CKT from "https://deno.land/x/[email protected]/mod.ts";
```

If you're working with a browser, you can use the IIFE build directly from a CDN.
Currently, cktjs officially supports [unpkg](https://www.unpkg.com/) and [jsdelivr](https://www.jsdelivr.com/):
```html

```

## Usage

### Import cktjs
```javascript
// CommonJS
const CKT = require("cktjs");
// ESModules
import * as CKT from "cktjs";
```

### Parse a CKT document
```javascript
const config = CKT.parse(`
rate limits = [
/* = [
request limit = 100
window length = 2s
]
/api/upload = [
size limit = 100mb
request limit = 6
window length = 5s
]
]
`);
```
```javascript
{
"rate limits": {
"/*": {
"request limit": 100,
"window length": "2s"
},
"/api/upload": {
"size limit": "100mb",
"request limit": 6,
"window length": "5s"
}
}
}
```

### Encode an object as a CKT document
```javascript
const menu = {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{ "value": "New" , "onclick": "CreateNewDoc()" },
{ "value": "Open" , "onclick": "OpenDoc()" },
{ "value": "Close", "onclick": "CloseDoc()" },
],
},
};
const text = CKT.stringify(menu, 2);
```
```lua
id = file
value = File
popup = [
menuitem = [
[
value = New
onclick = "CreateNewDoc()"
]
[
value = Open
onclick = "OpenDoc()"
]
[
value = Close
onclick = "CloseDoc()"
]
]
]
```

## Authors
Made with ❤ by Lua MacDougall ([foxgirl.dev](https://foxgirl.dev/))

## License
This project is licensed under the [MIT license](LICENSE).