# Jotdown
Jotdown is a structured document language. It is an opinionated, augmented
subset of Markdown with features inspired by plain-text organizational tools
like org-mode. The main purpose of Jotdown is to centralize personal and
project organization into a set of plain-text documents that can be easily
edited, parsed, and manipulated both by scripts and humans alike.
Jotdown is offered simultaneously as a header-only C++ library and a compiled
Python module sharing the same code. The Python bindings are enabled via
pybind11. It is released under an MIT license, see LICENSE for more info.
See [DOCUMENTATION.md] for a detailed explanation of the language and its
features.
See [API_CXX.md] for documentation regarding the header-only C++ library.
See [API_PY.md] for documentation regarding the Python module, including how to
build and install it.
## Goals
These are the primary goals of the Jotdown language and project:
- Support the creation, analysis, and modification of plain-text structured
documents.
- Support the hypertext linkage of documents within a document-set, and to
outside resources on the web or elsewhere.
- First-class support for loading, querying, modifying, saving, and creating
documents in C++ and Python.
## Q/A
### Why not just use Markdown for this?
While Markdown is great as a text formatting language, it doesn't work as an
easily parsable structured document language. It's main focus has always been
generating HTML, and as such many of the existing parsers don't even bother
creating an intermediate AST. I also feel that Markdown, though it is formally
defined in the CommonMark and Github Flavored Markdown specs, has hugely complex
rules for parsing to support features that aren't often used or don't need to
exist.
### Why is Jotdown offered in C++ and Python?
I wanted to be able to support the runtime power and expressiveness of C++ while
also extending support into Python where scripts and plugins can be easily built
around Jotdown document structures.
### Why is my language not supported?
I'm sorry! I'm really happy you're interested in Jotdown though. Feel free to
submit an issue to add support for your language. I can't guarantee I'll ever
get around to writing bindings myself, but someone in the community might step
up and help out!
### What are you planning to do with Jotdown in the future?
Some things I'm planning on building around Jotdown include:
- A Vim plugin which will support advanced editing features and highlighting.
- Command line productivity tools built around the concept of a Jotdown document set.
- A web wiki built around the concept of a Jotdown document set.
# Change Log
### 01/24/2021: v2.0.0
- Removed support for custom '@' style links, replaced with Markdown style
links and link indexes.
### 07/24/2020: v1.3.0
- Added support for document front-matter.
- New features for the Python interface:
- Collections are now callable. With no arguments, calling them will return
their contents as a list. With arguments, they will return themselves with
all of the arguments being added in sequence.
- Section can now be constructed with a string or a TextContent for the header.
- TextContent can now be initialized with a string.
### 07/17/2020: v1.2.0
- Refactored `objects.h` to do runtime validation of insertion types rather than
limiting via the C++ type system to reduce code duplication.
- Added `Container::insert_before` and `Container::insert_after`.
Raw data
{
"_id": null,
"home_page": "https://github.com/lainproliant/jotdown",
"name": "jotdown",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "document structure parser query language",
"author": "Lain Musgrove (lainproliant)",
"author_email": "lainproliant@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/43/ed/c899ddcc55d27f9ed61c45efde2ce6976b2399572d4bbcf57b46b7118054/jotdown-2.1.3.tar.gz",
"platform": null,
"description": "# Jotdown\nJotdown is a structured document language. It is an opinionated, augmented\nsubset of Markdown with features inspired by plain-text organizational tools\nlike org-mode. The main purpose of Jotdown is to centralize personal and\nproject organization into a set of plain-text documents that can be easily\nedited, parsed, and manipulated both by scripts and humans alike.\n\nJotdown is offered simultaneously as a header-only C++ library and a compiled\nPython module sharing the same code. The Python bindings are enabled via\npybind11. It is released under an MIT license, see LICENSE for more info.\n\nSee [DOCUMENTATION.md] for a detailed explanation of the language and its\nfeatures.\n\nSee [API_CXX.md] for documentation regarding the header-only C++ library.\n\nSee [API_PY.md] for documentation regarding the Python module, including how to\nbuild and install it.\n\n## Goals\nThese are the primary goals of the Jotdown language and project:\n\n- Support the creation, analysis, and modification of plain-text structured\n documents.\n- Support the hypertext linkage of documents within a document-set, and to\n outside resources on the web or elsewhere.\n- First-class support for loading, querying, modifying, saving, and creating\n documents in C++ and Python.\n\n## Q/A\n### Why not just use Markdown for this?\nWhile Markdown is great as a text formatting language, it doesn't work as an\neasily parsable structured document language. It's main focus has always been \ngenerating HTML, and as such many of the existing parsers don't even bother\ncreating an intermediate AST. I also feel that Markdown, though it is formally\ndefined in the CommonMark and Github Flavored Markdown specs, has hugely complex\nrules for parsing to support features that aren't often used or don't need to\nexist.\n\n### Why is Jotdown offered in C++ and Python?\nI wanted to be able to support the runtime power and expressiveness of C++ while\nalso extending support into Python where scripts and plugins can be easily built\naround Jotdown document structures.\n\n### Why is my language not supported?\nI'm sorry! I'm really happy you're interested in Jotdown though. Feel free to\nsubmit an issue to add support for your language. I can't guarantee I'll ever\nget around to writing bindings myself, but someone in the community might step\nup and help out!\n\n### What are you planning to do with Jotdown in the future?\nSome things I'm planning on building around Jotdown include:\n\n- A Vim plugin which will support advanced editing features and highlighting.\n- Command line productivity tools built around the concept of a Jotdown document set.\n- A web wiki built around the concept of a Jotdown document set.\n\n# Change Log\n### 01/24/2021: v2.0.0\n- Removed support for custom '@' style links, replaced with Markdown style\n links and link indexes.\n\n### 07/24/2020: v1.3.0\n- Added support for document front-matter.\n- New features for the Python interface:\n - Collections are now callable. With no arguments, calling them will return\n their contents as a list. With arguments, they will return themselves with\n all of the arguments being added in sequence.\n - Section can now be constructed with a string or a TextContent for the header.\n - TextContent can now be initialized with a string.\n\n### 07/17/2020: v1.2.0\n- Refactored `objects.h` to do runtime validation of insertion types rather than\n limiting via the C++ type system to reduce code duplication.\n- Added `Container::insert_before` and `Container::insert_after`.\n\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "Jotdown structrured document language, C++ to python wrapper module.",
"version": "2.1.3",
"project_urls": {
"Homepage": "https://github.com/lainproliant/jotdown"
},
"split_keywords": [
"document",
"structure",
"parser",
"query",
"language"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "43edc899ddcc55d27f9ed61c45efde2ce6976b2399572d4bbcf57b46b7118054",
"md5": "91c71608d32c70f19e5089557bd428c3",
"sha256": "d7575daf810eb81affdc9f54bee3eac0e004a293d4784e4746027fb950308ed5"
},
"downloads": -1,
"filename": "jotdown-2.1.3.tar.gz",
"has_sig": false,
"md5_digest": "91c71608d32c70f19e5089557bd428c3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 349468,
"upload_time": "2023-05-03T06:21:43",
"upload_time_iso_8601": "2023-05-03T06:21:43.792709Z",
"url": "https://files.pythonhosted.org/packages/43/ed/c899ddcc55d27f9ed61c45efde2ce6976b2399572d4bbcf57b46b7118054/jotdown-2.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-03 06:21:43",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lainproliant",
"github_project": "jotdown",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "jotdown"
}