Create markdown formatted text
Project description
Markdown_strings package
Markdown is a markup language with plain text formatting syntax. This package allows the creation of markdown-compliant strings. The following is a summary of features with usage examples.
Note: asterisk and underscores are escaped for all functions that do not format
to code (inline_code
and code_block
).
Installation
To install from pypi run
pip install markdown_strings
Standard markdown features
Header
Return a header of specified level.
Keyword arguments:
- style -- Specifies the header style (default atx). The "atx" style uses hash signs, and has 6 levels. The "setext" style uses dashes or equals signs for headers of levels 1 and 2 respectively, and is limited to those two levels. The number of dashes or equals signs is either the length of the text, or 3.
Specifying a level outside of the style's range results in a ValueError.
>>> header("Main Title", 1)
'# Main Title'
>>> header("Smaller subtitle", 4)
'#### Smaller subtitle'
>>> header("Setext style", 2, "setext")
'Setext style\n---'
Italics
Return italics formatted text.
>>> italics("This text is italics")
'_This text is italics_'
Bold
Return bold formatted text.
>>> bold("This text is bold")
'**This text is bold**'
Inline code
Return formatted inline code.
>>> inline_code("This text is code")
'`This text is code`'
Code block
Return a code block.
If a language is specified a fenced code block is produced, otherwise the block is indented by four spaces.
Keyword arguments:
- language -- Specifies the language to fence the code in (default blank).
>>> code_block("This is a simple codeblock.")
' This is a simple codeblock.'
>>> code_block("This is a simple codeblock.\\nBut it has a linebreak!")
' This is a simple codeblock.\\n But it has a linebreak!'
>>> code_block("This block of code has a specified language.", "python")
'```python\\nThis block of code has a specified language.\\n```'
>>> code_block("So\\nmany\\nlinebreaks.", "python")
'```python\\nSo\\nmany\\nlinebreaks.\\n```'
Link
Return an inline link.
>>> link ("This is a link", "https://github.com/awesmubarak/markdown_strings")
'[This is a link](https://github.com/awesmubarak/markdown_strings)'
Image
Return an inline image.
Keyword arguments:
- title -- Specify the title of the image, as seen when hovering over it.
>>> image("This is an image", "https://avatars3.githubusercontent.com/u/24862378")
'![This is an image](https://avatars3.githubusercontent.com/u/24862378)'
>>> image("This is an image", "https://avatars3.githubusercontent.com/u/24862378", "awes")
'![This is an image](https://avatars3.githubusercontent.com/u/24862378) "awes"'
Unordered list
Return an unordered list from an list.
>>> unordered_list(["first", "second", "third", "fourth"])
'- first\\n- second\\n- third\\n- fourth'
>>> unordered_list([1, 2, 3, 4, 5])
'- 1\\n- 2\\n- 3\\n- 4\\n- 5'
Ordered list
Return an ordered list from an list.
>>> ordered_list(["first", "second", "third", "fourth"])
'1. first\\n2. second\\n3. third\\n4. fourth'
Blockquote
Return a blockquote.
>>> blockquote("A simple blockquote")
'> A simple blockquote'
Horizontal rule
Return a horizontal rule.
Keyword arguments:
- length -- Specifies the length of the rule (default 79, minimum 3).
- style -- Character used for the rule (may be either "_" or "*").
If the length is too low, or the style is invalid, a ValueError is raised.
>>> horizontal_rule()
'_______________________________________________________________________________'
>>> horizontal_rule(length=5, style="*")
'*****'
Non-standard markdown
Strikethrough
Return text with strike-through formatting.
>>> strikethrough("This is a lie")
'~This is a lie~'
Task list
Return a task list.
The task_list should be a 2-dimensional iterable; the first item should be the task text and the second the boolean completion state.
>>> task_list([["Be born", True], ["Be dead", False]])
'- [X] Be born\\n- [ ] Be dead'
Table row
Return a single table row.
Keyword arguments:
- pad -- The pad should be an list of the same size as the input text list. It will be used to format the row's padding.
>>> table_row(["First column", "Second", "Third"])
'| First column | Second | Third |'
>>> table_row(["First column", "Second", "Third"], [10, 10, 10])
'| First column | Second | Third |'
Delimiter row
Return a delimiter row for use in a table.
Keyword arguments:
- column_lengths -- An iterable that specifies the length of each column.
>>> table_delimiter_row(3)
'| --- | --- | --- |'
>>> table_delimiter_row(3, column_lengths=[4,5,6])
'| ---- | ----- | ------ |'
Table
Return a formatted table, generated from lists representing columns.
The function requires a 2-dimensional list, where each list is a column of the table. This will be used to generate a formatted table in string format.
>>> table([["1","2","3"], ["4","5","6"], ["7","8","9"]])
'| 1 | 4 | 7 |\\n| --- | --- | --- |\\n| 2 | 5 | 8 |\\n| 3 | 6 | 9 |'
>>> table([["Name", "Awes", "Bob"], ["User", "mub123", ""]])
'| Name | User |\\n| ---- | ------ |\\n| Awes | mub123 |\\n| Bob | |'
This table, when parsed, will look like this:
Name | User |
---|---|
Awes | mub123 |
Bob |
Table from rows
Return a formatted table, using each list as the list. The specifics are the same as those for the table function.
>>> table_from_rows([["1","2","3"],["4","5","6"],["7","8","9"]])
'| 1 | 2 | 3 |\\n| --- | --- | --- |\\n| 4 | 5 | 6 |\\n| 7 | 8 | 9 |'
Helper functions
Return text with formatting escaped
Markdown requires a backslash before literal underscores or asterisk, to avoid formatting to bold or italics.
>>> esc_format("Normal text")
'Normal text'
>>> esc_format("Text with **bold**")
'Text with \*\*bold\*\*'
>>> esc_format("Text with _italics_")
'Text with \_italics\_'
>>> esc_format("Text with _**complicated** formatting_")
'Text with \_\*\*complicated\*\* formatting\_'
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file markdown_strings-3.3.0-py2.py3-none-any.whl
.
File metadata
- Download URL: markdown_strings-3.3.0-py2.py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.36.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dec9c315feeb8458fc5e0f17db203781e0a5cedaad83da0b3eda5388c4f69207 |
|
MD5 | 11ea1b0c8ef15e6584482da0b31a55b6 |
|
BLAKE2b-256 | 255f2582c93abe18c89a0b3691f7e178b9ab713a4bfe7918230b2e410c27452c |