darkest-parser


Namedarkest-parser JSON
Version 1.1.1 PyPI version JSON
download
home_page
SummaryParser for .darkest file
upload_time2024-01-08 09:29:26
maintainer
docs_urlNone
authorsyrinka
requires_python>=3.12,<4.0
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # darkest-parser

**darkest-parser** is a module to parser `.darkest` file originally from [Darkest Dungeon](https://www.darkestdungeon.com/) programatically.

## Usage

```sh
pip install darkest-parser
```

```python
from darkest_parser import parse, unparse

text = '''
resistances: .stun 40% .poison 40% .bleed 40% .disease 30% .move 40% .debuff 30% .death_blow 67% .trap 40%
weapon: .name "houndmaster_weapon_0" .atk 0% .dmg 4 7 .crit 4% .spd 5
armour: .name "houndmaster_armour_0" .def 10% .prot 0 .hp 21 .spd 0
combat_skill: .id "hounds_rush" .level 0 .type "ranged" .atk 85% .dmg 0% .crit 5% .launch 432 .target 1234 .effect "Beast Killer 1"
combat_skill: .id "hounds_rush" .level 1 .type "ranged" .atk 90% .dmg 0% .crit 6% .launch 432 .target 1234 .effect "Beast Killer 2"
'''

dark = parse(text)

dark[0].tag == 'resistances'
dark[0].set('stun', '60%')
dark[0].poison = '40%'


weapon0 = dark.find('weapon', name='houndmaster_weapon_0')
weapon0.tag == 'weapon'
weapon0.dmg = [14, 17]
weapon0.spd = 25

for rush in dark.finditer('combat_skill', id='hounds_rush'):
    rush.type = 'meele'
    rush.set('ignore_guarded')

rush0 = dark.find(id='hounds_rush', level=0)
# x invalid:
# rush0.effect.append('Human Killer 1')
# √ use instead:
rush0.effect = [*rush0.effect, 'Human Killer 1']

rush1 = dark.find(id='hounds_rush', level=1)
rush1.has('target') == True
rush1.set('target', '~1234', 'literal')
# literal means that the value is unquoted, it's useful in some case,
# for example: launch, target, valid_modes, etc.

print(unparse(dark))
```

## API Reference

```python
def parse(str) -> Darkest:
    ...
def unparse(Darkest) -> str:
    ...

class Darkest:
    def __getitem__(int) -> Element:
        ...
    def finditer(str | None, **{str: Any}) -> Generator[Element, Any, Any]:
        ...
    def findall(str | None, **{str: Any}) -> List[Element]:
        ...
    def find(str | None, **{str: Any}) -> Element:
        ...

class Element:
    def get(str) -> List[Any]:
        ...
    def set(str, Any | List[Any] | None, Literal['number', 'bool', 'string', 'literal'] | None):
        ...
    def pop(str):
        ...
    def has(str) -> bool:
        ...
```
            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "darkest-parser",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.12,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "syrinka",
    "author_email": "syrinka@foxmail.com",
    "download_url": "https://files.pythonhosted.org/packages/29/c9/60645cb48e7bc62e0ec8774e638f65c04dca40b9bbed54e054532f711fa3/darkest_parser-1.1.1.tar.gz",
    "platform": null,
    "description": "# darkest-parser\n\n**darkest-parser** is a module to parser `.darkest` file originally from [Darkest Dungeon](https://www.darkestdungeon.com/) programatically.\n\n## Usage\n\n```sh\npip install darkest-parser\n```\n\n```python\nfrom darkest_parser import parse, unparse\n\ntext = '''\nresistances: .stun 40% .poison 40% .bleed 40% .disease 30% .move 40% .debuff 30% .death_blow 67% .trap 40%\nweapon: .name \"houndmaster_weapon_0\" .atk 0% .dmg 4 7 .crit 4% .spd 5\narmour: .name \"houndmaster_armour_0\" .def 10% .prot 0 .hp 21 .spd 0\ncombat_skill: .id \"hounds_rush\" .level 0 .type \"ranged\" .atk 85% .dmg 0% .crit 5% .launch 432 .target 1234 .effect \"Beast Killer 1\"\ncombat_skill: .id \"hounds_rush\" .level 1 .type \"ranged\" .atk 90% .dmg 0% .crit 6% .launch 432 .target 1234 .effect \"Beast Killer 2\"\n'''\n\ndark = parse(text)\n\ndark[0].tag == 'resistances'\ndark[0].set('stun', '60%')\ndark[0].poison = '40%'\n\n\nweapon0 = dark.find('weapon', name='houndmaster_weapon_0')\nweapon0.tag == 'weapon'\nweapon0.dmg = [14, 17]\nweapon0.spd = 25\n\nfor rush in dark.finditer('combat_skill', id='hounds_rush'):\n    rush.type = 'meele'\n    rush.set('ignore_guarded')\n\nrush0 = dark.find(id='hounds_rush', level=0)\n# x invalid:\n# rush0.effect.append('Human Killer 1')\n# \u221a use instead:\nrush0.effect = [*rush0.effect, 'Human Killer 1']\n\nrush1 = dark.find(id='hounds_rush', level=1)\nrush1.has('target') == True\nrush1.set('target', '~1234', 'literal')\n# literal means that the value is unquoted, it's useful in some case,\n# for example: launch, target, valid_modes, etc.\n\nprint(unparse(dark))\n```\n\n## API Reference\n\n```python\ndef parse(str) -> Darkest:\n    ...\ndef unparse(Darkest) -> str:\n    ...\n\nclass Darkest:\n    def __getitem__(int) -> Element:\n        ...\n    def finditer(str | None, **{str: Any}) -> Generator[Element, Any, Any]:\n        ...\n    def findall(str | None, **{str: Any}) -> List[Element]:\n        ...\n    def find(str | None, **{str: Any}) -> Element:\n        ...\n\nclass Element:\n    def get(str) -> List[Any]:\n        ...\n    def set(str, Any | List[Any] | None, Literal['number', 'bool', 'string', 'literal'] | None):\n        ...\n    def pop(str):\n        ...\n    def has(str) -> bool:\n        ...\n```",
    "bugtrack_url": null,
    "license": "",
    "summary": "Parser for .darkest file",
    "version": "1.1.1",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cff0210280696097b1f7e986bf9e37a05fd26ff2e45f2603dd9d2d09a75ea28f",
                "md5": "468124942b8bf0c001d88673891a47e2",
                "sha256": "364f73590370a88ddb331574580e60a3b58d9d6c7a72ce2102a343f302ababe8"
            },
            "downloads": -1,
            "filename": "darkest_parser-1.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "468124942b8bf0c001d88673891a47e2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12,<4.0",
            "size": 4053,
            "upload_time": "2024-01-08T09:29:25",
            "upload_time_iso_8601": "2024-01-08T09:29:25.433109Z",
            "url": "https://files.pythonhosted.org/packages/cf/f0/210280696097b1f7e986bf9e37a05fd26ff2e45f2603dd9d2d09a75ea28f/darkest_parser-1.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "29c960645cb48e7bc62e0ec8774e638f65c04dca40b9bbed54e054532f711fa3",
                "md5": "35f405493482ca2f051825073cbd7cd0",
                "sha256": "879865922565d8984e9b2fbc73602eebe270b0c9fbd6cd909333cc1f189c8e4c"
            },
            "downloads": -1,
            "filename": "darkest_parser-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "35f405493482ca2f051825073cbd7cd0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12,<4.0",
            "size": 3441,
            "upload_time": "2024-01-08T09:29:26",
            "upload_time_iso_8601": "2024-01-08T09:29:26.618187Z",
            "url": "https://files.pythonhosted.org/packages/29/c9/60645cb48e7bc62e0ec8774e638f65c04dca40b9bbed54e054532f711fa3/darkest_parser-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-08 09:29:26",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "darkest-parser"
}
        
Elapsed time: 0.49221s