Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/luavixen/cktjs
- Owner: luavixen
- License: mit
- Created: 2021-08-16T06:45:08.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-03T21:48:10.000Z (almost 3 years ago)
- Last Synced: 2024-10-01T10:19:18.876Z (3 months ago)
- Topics: javascript, javascript-library, parser, typescript
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/cktjs
- Size: 174 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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).