All Projects → miyakogi → M2r

miyakogi / M2r

Licence: mit
Markdown to reStructuredText converter

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to M2r

Format Readme
Формат файла README
Stars: ✭ 270 (+16.38%)
Mutual labels:  markdown, restructuredtext
Waliki
A wiki engine powered by Django and Git
Stars: ✭ 300 (+29.31%)
Mutual labels:  markdown, restructuredtext
Emacs Easy Hugo
Emacs major mode for managing hugo
Stars: ✭ 235 (+1.29%)
Mutual labels:  markdown, restructuredtext
Pytablewriter
pytablewriter is a Python library to write a table in various formats: CSV / Elasticsearch / HTML / JavaScript / JSON / LaTeX / LDJSON / LTSV / Markdown / MediaWiki / NumPy / Excel / Pandas / Python / reStructuredText / SQLite / TOML / TSV.
Stars: ✭ 422 (+81.9%)
Mutual labels:  markdown, restructuredtext
Retext
ReText: Simple but powerful editor for Markdown and reStructuredText
Stars: ✭ 1,500 (+546.55%)
Mutual labels:  markdown, restructuredtext
Badges
📝 Markdown code for lots of small badges 🎀 📌 (shields.io, forthebadge.com etc) 😎. Contributions are welcome! Please add yours!
Stars: ✭ 2,987 (+1187.5%)
Mutual labels:  markdown, restructuredtext
Pandoc Ruby
Ruby wrapper for Pandoc
Stars: ✭ 299 (+28.88%)
Mutual labels:  markdown, restructuredtext
Redpen
RedPen is an open source proofreading tool to check if your technical documents meet the writing standard. RedPen supports various markup text formats (Markdown, Textile, AsciiDoc, Re:VIEW, reStructuredText and LaTeX).
Stars: ✭ 466 (+100.86%)
Mutual labels:  markdown, restructuredtext
Readme styles
Minimal README.rst and README.md template for Github projects.
Stars: ✭ 60 (-74.14%)
Mutual labels:  markdown, restructuredtext
Awesome Scientific Writing
⌨️ A curated list of awesome tools, demos and resources to go beyond LaTeX
Stars: ✭ 162 (-30.17%)
Mutual labels:  markdown, restructuredtext
Django Markupfield
📑 a MarkupField for Django
Stars: ✭ 184 (-20.69%)
Mutual labels:  markdown, restructuredtext
Marp Core
The core of Marp converter
Stars: ✭ 224 (-3.45%)
Mutual labels:  markdown
Markdown
A Python implementation of John Gruber’s Markdown with Extension support.
Stars: ✭ 2,725 (+1074.57%)
Mutual labels:  markdown
Github Markdown Toc
Easy TOC creation for GitHub README.md
Stars: ✭ 2,734 (+1078.45%)
Mutual labels:  markdown
Docs
Repository of Twilio SendGrid's product documentation.
Stars: ✭ 221 (-4.74%)
Mutual labels:  markdown
Markdown
Markdown 基本语法。
Stars: ✭ 2,841 (+1124.57%)
Mutual labels:  markdown
Wisteria
Beautiful document tool for your project.
Stars: ✭ 226 (-2.59%)
Mutual labels:  markdown
Mindforger Repository
MindForger documentation repository.
Stars: ✭ 221 (-4.74%)
Mutual labels:  markdown
Typora Cobalt Theme
A dark theme for Typora with enhanced UI
Stars: ✭ 218 (-6.03%)
Mutual labels:  markdown
Gauge
Light weight cross-platform test automation
Stars: ✭ 2,622 (+1030.17%)
Mutual labels:  markdown

M2R

PyPI PyPI version Documentation Build Status codecov


M2R converts a markdown file including reStructuredText (rst) markups to a valid rst format.

Why another converter?

I wanted to write sphinx document in markdown, since it's widely used now and easy to write code blocks and lists. However, converters using pandoc or recommonmark do not support many rst markups and sphinx extensions. For example, rst's reference link like see `ref`_ (this is very convenient in long document in which same link appears multiple times) will be converted to a code block in HTML like see <code>ref</code>_, which is not expected.

Features

  • Basic markdown and some extensions (see below)
    • inline/block-level raw html
    • fenced-code block
    • tables
    • footnotes ([^1])
  • Inline- and Block-level rst markups
    • single- and multi-line directives (.. directive::)
    • inline-roles (:code:`print(1)` ...)
    • ref-link (see `ref`_)
    • footnotes ([#fn]_)
    • math extension inspired by recommonmark
  • Sphinx extension
    • add markdown support for sphinx
    • mdinclude directive to include markdown from md or rst files
    • option to parse relative links into ref and doc directives (m2r_parse_relative_links)
  • Pure python implementation
    • pandoc is not required

Installation

Python 2.7 or Python 3.4+ is required.

pip install m2r

Or,

python3 -m pip install m2r

Usage

Command Line

m2r command converts markdown file to rst format.

m2r your_document.md [your_document2.md ...]

Then you will find your_document.rst in the same directory.

Programmatic Use

Import m2r.convert function and call it with markdown text. Then it will return converted text.

from m2r import convert
rst = convert('# Title\n\nSentence.')
print(rst)
# Title
# =====
#
# Sentence.

Or, use parse_from_file function to load markdown file and obtain converted text.

from m2r import parse_from_file
output = parse_from_file('markdown_file.md')

This is an example of setup.py to write README in markdown, and publish it to PyPI as rst format.

readme_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'README.md')
try:
    from m2r import parse_from_file
    readme = parse_from_file(readme_file)
except ImportError:
    # m2r may not be installed in user environment
    with open(readme_file) as f:
        readme = f.read()
setup(
    ...,
    long_description=readme,
    ...,
)

Sphinx Integration

In your conf.py, add the following lines.

extensions = [
    ...,
    'm2r',
]

# source_suffix = '.rst'
source_suffix = ['.rst', '.md']

Write index.md and run make html.

When m2r extension is enabled on sphinx and .md file is loaded, m2r converts to rst and pass to sphinx, not making new .rst file.

mdinclude directive

Like .. include:: file directive, .. mdinclude:: file directive inserts markdown file at the line.

Note: do not use .. include:: file directive to include markdown file even if in the markdown file, please use .. mdinclude:: file instead.

Restrictions

  • In the rst's directives, markdown is not available. Please write in rst.
  • Column alignment of tables is not supported. (rst does not support this feature)
  • Heading with overline-and-underline is not supported.
    • Heading with underline is OK
  • Rst heading marks are currently hard-coded and unchangeable.
    • H1: =, H2: -, H3: ^, H4: ~, H5: ", H6: #

If you find any bug or unexpected behaviour, please report it to Issues.

Example

See example document and its source code.

I'm using m2r for writing user guide of WDOM. So you can see it as another example. Its HTML is here, and its source code is here.

Demo editor

Demo editor of m2r is available. If you are interested in m2r, please try it.

https://github.com/miyakogi/m2rdemo

Acknowledgement

m2r is written as an extension of mistune, which is highly extensible pure-python markdown parser. Without the mistune, I couldn't write this. Thank you!

Licence

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].