[![PyPI version](https://badge.fury.io/py/arclight.svg)](https://badge.fury.io/py/arclight)
# Arclight.py
These are tools related to the Arclight project
## Installation
Ideally, create and activate a Python venv.
```
pip install arclight
```
To uninstall delete the venv created above.
## 2dilate - v0.5
2dilate is a 2da merger and xlsx<->2da/x converter. It adds a new file type, 2dx (specification below), to simplify and ease the 2da merging process.
### Goals:
* A merger that did not require using directories to separate multiple merge files.
* A file format that is simple, compact, and familiar. Something that could ideally be distributed with custom content to ease merging or
shared by community members. And also trivially implementable in any programming language/environment.
* A simple straight forward interface, that does not require a PhD to learn.
### 2dx file format version 2.1
* Header: **2DX V2.1**
* YAML Metadata: The following is optional . The YAML metadata is enclosed within two lines containing
"---". If you are not familiar with YAML visit [yaml.org](http://www.yaml.org/).
Please note that you can put _anything_ in the metadata so long as it
conforms to the YAML specification. Anything that 2dx doesn't understand, it ignores.
**Note**: YAML does not like tabs, you should always uses spaces for indentation.
* Column Labels: As 2da, note however that a 2dx file needn't have all
the columns of it's parent 2da. Only the columns that are being
merged need to be included. Also, new columns can be added.
* Rows: As 2da with a couple exceptions:
* Row numbers are significant, this is how 2dilate decides where to
merge the 2dx file. Row numbers are not expected to start from 0, they should be start
wherever you want to merge. They need not be contiguous or even
ordered.
* Row numbers can be unspecified by '****' in which case the `row` entry in the YAML metadata is used to calculate
new row = 2dx row number + `row`. They can also be unspecified by '####' in which case the row numbers are calculated by appending rows to the
2da we are merging in to. I.e.: new row = base 2da last row + 2dx row number + 1.
* **####** is a new entry type that tells 2dilate to ignore the row
entry as far as merging goes. This is very handy when you want to
merge changes from a few different columns but only change some
values on certain rows.
Reserved YAML Metadata Entries:
* `tlk` - A table of column names and integer offsets.
* `row` - Starting row for row numbers that are unspecified i.e. instead of '1', '****'.
All non-reserved YAML metadata entries are ignored. Example:
```yaml
---
description: | # Custom metadata entry.
This renames some columns and modifies some TLK entries. It's ignored by the parser.
Exists only for user edification
tlk:
SomeColumn: 1000 # For all non-empty column entries the TLK entry will be calculated
Column2: 1500 # offset + column entry + 0x01000000 (Custom TLK starting point).
row: 1000 # Any unspecified row number ('****') is replaced with 1000 + 2dx row number.
date: 2015-07-04 # Custom metadata entry. Note that 2dilate and the 2dx reader will simply
# ignore this.
---
```
### Usage - `2dilate merge`
```
usage: 2dilate merge [-h] [-o OUTPUT] [--force] input files [files ...]
positional arguments:
input Directory containing 2dx files to be merged.
files 2da file(s).
options:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
Output directory.
--force Force merges non-default row entries.
```
### Usage - `2dilate convert`
```
usage: 2dilate convert [-h] files [files ...]
positional arguments:
files File(s) to convert.
options:
-h, --help show this help message and exit
```
## [nwscriptd](arclight/nwscriptd/README.md)
A language server for nwscript. See the [README](arclight/nwscriptd/README.md).
## nwscript-lint
A wrapper around the script parser and resolver
### Usage
```
usage: nwscript-lint [-h] [-I INCLUDE] [--no-install] [--no-user] scripts [scripts ...]
A linter for nwscript.
positional arguments:
scripts List of scripts to lint.
options:
-h, --help show this help message and exit
-I INCLUDE, --include INCLUDE
Include path(s).
--no-install Disable loading game install files.
--no-user Disable user install files.
```
### Sample
![output](screenshots/nwscript-lint-2024-10-21.png)
Raw data
{
"_id": null,
"home_page": "https://github.com/jd28/arclight-py",
"name": "arclight",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "nwscript, Neverwinter Nights, completion, lsp, language-server-protocol",
"author": "jmd",
"author_email": "joshua.m.dean@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/a7/65/11a9c4c69cbad0fbb6dd7f339f2d8ba11311303555f066a254039acdd7d0/arclight-0.15.dev0.tar.gz",
"platform": null,
"description": "[![PyPI version](https://badge.fury.io/py/arclight.svg)](https://badge.fury.io/py/arclight)\n\n# Arclight.py\n\nThese are tools related to the Arclight project\n\n## Installation\n\nIdeally, create and activate a Python venv.\n\n```\npip install arclight\n```\n\nTo uninstall delete the venv created above.\n\n## 2dilate - v0.5\n\n2dilate is a 2da merger and xlsx<->2da/x converter. It adds a new file type, 2dx (specification below), to simplify and ease the 2da merging process.\n\n### Goals:\n* A merger that did not require using directories to separate multiple merge files.\n* A file format that is simple, compact, and familiar. Something that could ideally be distributed with custom content to ease merging or\n shared by community members. And also trivially implementable in any programming language/environment.\n* A simple straight forward interface, that does not require a PhD to learn.\n\n### 2dx file format version 2.1\n\n* Header: **2DX V2.1**\n* YAML Metadata: The following is optional . The YAML metadata is enclosed within two lines containing\n \"---\". If you are not familiar with YAML visit [yaml.org](http://www.yaml.org/).\n Please note that you can put _anything_ in the metadata so long as it\n conforms to the YAML specification. Anything that 2dx doesn't understand, it ignores.\n **Note**: YAML does not like tabs, you should always uses spaces for indentation.\n* Column Labels: As 2da, note however that a 2dx file needn't have all\n the columns of it's parent 2da. Only the columns that are being\n merged need to be included. Also, new columns can be added.\n* Rows: As 2da with a couple exceptions:\n * Row numbers are significant, this is how 2dilate decides where to\n merge the 2dx file. Row numbers are not expected to start from 0, they should be start\n wherever you want to merge. They need not be contiguous or even\n ordered.\n * Row numbers can be unspecified by '****' in which case the `row` entry in the YAML metadata is used to calculate\n new row = 2dx row number + `row`. They can also be unspecified by '####' in which case the row numbers are calculated by appending rows to the\n 2da we are merging in to. I.e.: new row = base 2da last row + 2dx row number + 1.\n * **####** is a new entry type that tells 2dilate to ignore the row\n entry as far as merging goes. This is very handy when you want to\n merge changes from a few different columns but only change some\n values on certain rows.\n\nReserved YAML Metadata Entries:\n\n* `tlk` - A table of column names and integer offsets.\n* `row` - Starting row for row numbers that are unspecified i.e. instead of '1', '****'.\n\nAll non-reserved YAML metadata entries are ignored. Example:\n\n```yaml\n---\ndescription: | # Custom metadata entry.\n This renames some columns and modifies some TLK entries. It's ignored by the parser.\n Exists only for user edification\n\ntlk:\n SomeColumn: 1000 # For all non-empty column entries the TLK entry will be calculated\n Column2: 1500 # offset + column entry + 0x01000000 (Custom TLK starting point).\n\nrow: 1000 # Any unspecified row number ('****') is replaced with 1000 + 2dx row number.\n\ndate: 2015-07-04 # Custom metadata entry. Note that 2dilate and the 2dx reader will simply\n # ignore this.\n---\n```\n\n### Usage - `2dilate merge`\n\n```\nusage: 2dilate merge [-h] [-o OUTPUT] [--force] input files [files ...]\n\npositional arguments:\n input Directory containing 2dx files to be merged.\n files 2da file(s).\n\noptions:\n -h, --help show this help message and exit\n -o OUTPUT, --output OUTPUT\n Output directory.\n --force Force merges non-default row entries.\n\n```\n\n### Usage - `2dilate convert`\n\n```\nusage: 2dilate convert [-h] files [files ...]\n\npositional arguments:\n files File(s) to convert.\n\noptions:\n -h, --help show this help message and exit\n```\n\n## [nwscriptd](arclight/nwscriptd/README.md)\n\nA language server for nwscript. See the [README](arclight/nwscriptd/README.md).\n\n## nwscript-lint\n\nA wrapper around the script parser and resolver\n\n### Usage\n\n```\nusage: nwscript-lint [-h] [-I INCLUDE] [--no-install] [--no-user] scripts [scripts ...]\n\nA linter for nwscript.\n\npositional arguments:\n scripts List of scripts to lint.\n\noptions:\n -h, --help show this help message and exit\n -I INCLUDE, --include INCLUDE\n Include path(s).\n --no-install Disable loading game install files.\n --no-user Disable user install files.\n```\n\n### Sample\n\n![output](screenshots/nwscript-lint-2024-10-21.png)\n",
"bugtrack_url": null,
"license": null,
"summary": "A language server for Bioware's nwscript and more!",
"version": "0.15.dev0",
"project_urls": {
"Homepage": "https://github.com/jd28/arclight-py",
"Repository": "https://github.com/jd28/arclight-py"
},
"split_keywords": [
"nwscript",
" neverwinter nights",
" completion",
" lsp",
" language-server-protocol"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f2673fb4b6c64d7e8f6c632b4916f9dd68082d4ba6dc3df80e1805196a3b4202",
"md5": "511b350a303d797894abf6226fbe330e",
"sha256": "0f2642f915f3bc8f17e70bc6e275de7b974f67157bbe52a492377bf10d150baa"
},
"downloads": -1,
"filename": "arclight-0.15.dev0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "511b350a303d797894abf6226fbe330e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 775371,
"upload_time": "2024-10-29T00:01:42",
"upload_time_iso_8601": "2024-10-29T00:01:42.297313Z",
"url": "https://files.pythonhosted.org/packages/f2/67/3fb4b6c64d7e8f6c632b4916f9dd68082d4ba6dc3df80e1805196a3b4202/arclight-0.15.dev0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a76511a9c4c69cbad0fbb6dd7f339f2d8ba11311303555f066a254039acdd7d0",
"md5": "79a807d6e1bf298081be616cccb62270",
"sha256": "a4fc18c481f04ce12d4a49ef6c397f820b014b97b3a81fc2d1a34502380a3228"
},
"downloads": -1,
"filename": "arclight-0.15.dev0.tar.gz",
"has_sig": false,
"md5_digest": "79a807d6e1bf298081be616cccb62270",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 766751,
"upload_time": "2024-10-29T00:01:43",
"upload_time_iso_8601": "2024-10-29T00:01:43.539138Z",
"url": "https://files.pythonhosted.org/packages/a7/65/11a9c4c69cbad0fbb6dd7f339f2d8ba11311303555f066a254039acdd7d0/arclight-0.15.dev0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-29 00:01:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jd28",
"github_project": "arclight-py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "arclight"
}