.husky | ||
bin | ||
scripts | ||
src | ||
.editorconfig | ||
.envrc | ||
.eslintrc.yml | ||
.gitignore | ||
.npmignore | ||
.woodpecker.yml | ||
CHANGELOG.md | ||
commitlint.config.js | ||
flake.lock | ||
flake.nix | ||
LICENSE.md | ||
package-lock.json | ||
package.json | ||
prettier.config.js | ||
README.md | ||
release.config.js | ||
tsconfig.json |
markdowny
A set of command-line utilities for working with Markdown + YAML files, specifically for novels and short stories.
Setup and usage
Install markdowny
using npm
as a utility:
npm install --global markdowny
Basic usage is:
markdown verb *.markdown
markdowny-wc *.markdown
Verbs
version
Retrieves the version of the command-line utility and prints it out to the console.
markdowny version
content
Extract the content from one or more files.
markdowny content *.markdown
count
Counts the number of words excluding the YAML header and displays it.
markdowny count *.markdown [options]
Options:
-t
,--total
: Add a total line to the bottom that combines.-s
,--separator
: Comma-separates the numbers in the total.
extract
Extract the metadata (front matter) from one or more files.
markdowny extract *.markdown [options]
Options:
--no-list
: Don't write out the extract data as a list/sequence of items (default).-y
,--yaml
: Extract the data as YAML instead of JSON (default).--content PROPERTY
: Extract the content as a property of the given name instead of just removing it. Defaults to not extracting the content.
list
Displays each file as a Markdown ordered list.
markdowny list *.markdown
Options:
-o
,--output
: Direct the output to a file or (default) standard out with-
.-s
,--trim-whitespace
: If included, then newlines between the fields will be collapsed down to a single space and the resulting string trimmed at both ends.-t
,--template
: The Handlebars template using the YAML metadata for each file in addition to a_number
which is the one-based number of the file. The default value is{{_number}}. {{{title}}}: {{{summary}}}
.- Some additional conditional operations are allowed such as
ge
,le
,gt
,ge
,eq
, andne
. They can be used like{{#if (lt _number 10)}}0{{/if}}
.
- Some additional conditional operations are allowed such as
sections
Displays each file as a heading 1 section with the title and contents provided.
Assuming that a file has a title
and summary
(which can be multiple lines) inside it, display a section for each file with the title as heading 1 and the contents of the summary
value as the text for that section.
markdowny sections *.markdown -t title -f summary
Options:
-t
,--title
: The name of the property to put in for the section. May be nested such asauthor.name.first
. Defaults totitle
.-f
,--field
: The name of the property used for the contents of the section. Defaults tosummary
.
table
Displays a table of one or more fields inside the summary.
To list every file, it's title, the number of words inside it, and the list of secondary characters inside a nested value. The :rs
makes the "Words" column right-aligned (r
) and comma-separated (s
).
markdowny table *.markdown -f _basename title _words characters.secondary -t File Title Words:rs "Secondary Characters"
Options:
-f
,--fields
: A parameter-separated list of YAML fields to list in the table, in the order they should be shown. Defaults to_basename title
. These may also have a format specifier, starting with:
(see below). This may be a nested value, such ascharacters.secondary
.-t
,--titles
: A parameter-separated list of titles for the columns. If there are more fields than titles, the field names will be used for the headers. These may have format specifiers.--table-start
: The characters to insert at the beginning of the row. Defaults to|
.--table-end
: The characters to insert at the end of each row. Defaults to|
.--table-delimiter
: The characters to insert between each field. Defaults to|
.--no-table-rule
: Do not put a dashed line between the header and the various files.--no-table-header
: Do not display the header titles. The format of the headers is still parsed and used.--list-delimiter
: The characters to put between list items when inserted into a field. Defaults to,
.--prefix
: The filename prefix that is trimmed from the_filename
propery.
There are a number of special properties that are included in all files.
_filename
: The full path of the filename, with the--prefix
removed._basename
: The name of the file without a directory._words
: The number of words in the file, excluding the YAML header.