https://github.com/lecheshirecat/agsjs
A modern and lightweight AGS file parser for JavaScript
https://github.com/lecheshirecat/agsjs
ags geotechnical geotechnical-engineering javascript-library javscript nodejs nodejs-library typescript typescript-library
Last synced: 4 months ago
JSON representation
A modern and lightweight AGS file parser for JavaScript
- Host: GitHub
- URL: https://github.com/lecheshirecat/agsjs
- Owner: lecheshirecat
- License: mit
- Created: 2020-08-10T15:05:37.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-10-10T17:10:20.000Z (8 months ago)
- Last Synced: 2025-01-16T09:53:06.262Z (4 months ago)
- Topics: ags, geotechnical, geotechnical-engineering, javascript-library, javscript, nodejs, nodejs-library, typescript, typescript-library
- Language: TypeScript
- Homepage: https://www.ags.org.uk
- Size: 110 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# agsjs
A modern and lightweight AGS file parser for JavaScript
## Installation
```javascript
npm install agsjs --save
```## How to use
Default use as ES6 module
```typescript
import { parse } from 'agsjs'async function parseContent(fileUrl: string) {
const res = await fetch(fileUrl)
const content = await res.text()
const results = parse(content)
return results
}
```The results are returned as a JavaScript Array parsed from the file content. It follows the tree-like structure of the file format.
Every entry of the array has three properties:
- *heading*, a non-empty string of the group name
- *columns* which contains an array of the group headings and group related informations
- *rows* which contains an array of the formatted data according to the group headings## Convenience functions
### find
Returns a JavaScript `object` or `null` if heading is not found
```typescript
import { parse, find } from 'agsjs'const groups = parse(content)
const projGroup = find('PROJ', groups)
console.log(projGroup)
// { "heading": "PROJ", columns: [...], rows: [...] } OR null
```### map
Returns an array
Match group headings and rows to a custom JavaScript object with named keys as parameters
```typescript
import { parse, find, map } from 'agsjs'const groups = parse(content)
const projGroup = find('PROJ', groups)
const keys = [{
name: 'reference',
header: 'PROJ_ID'
}, {
name: 'name',
header: 'PROJ_NAME',
required: true,
default: ''
}, {
name: 'location',
header: 'PROJ_LOC'
}, {
name: 'client',
header: 'PROJ_CLNT'
}]
const dataset = map(projGroup, keys)
```## License
[MIT License](https://opensource.org/licenses/MIT)