Coder Social home page Coder Social logo

mdtogh's Introduction

#Markdown to Github Html

##Motivation

Basically, You may want to convert md files into Html looks exactly like github does.

Maybe you would try pandoc, but html it generates looks not very well(Just my own opinion).

So, I start writing this small tool, inspired by grip

##Features

mdtogh can convert your md files into html files like github does with features belows:

  • toc support
  • custom toc(use one file to be toc)
  • index.html for your book
  • next/prev files link
  • file regexp to select your md files
  • fix relative link(ie. <a href="01.md"></a> => <a href="01.html"></a>)
  • custom template
  • offline renderer
  • proxy support(respect https_proxy environment variable)
  • cache support

##demo

I've generate a book written by julycoding: The-Art-Of-Programming-By-July.

Demo link: taop.marchtea.com

You can check on that.

##Installation

From pypi

$ pip install mdtogh 

Also, you can clone repo & install with setup.py.

$ git clone https://github.com/marchtea/md_to_github_html.git
$ cd md_to_github_html
$ python setup.py install

Maybe you will need add sudo

##Usage

Generate one or more files:

$ cd mdfiles
$ mdtogh 01.md 02.md 03.md

Generate all md files in current directory:

$ cd mdfiles
$ mdtogh

Generate md files in other directory:

$ mdtogh ../mdfiles

Generate files with file reg support:

$ cd mdfiles
$ mdtogh --file_reg='^\d.+\.md'

Generate files with toc & toc_depth support:

$ cd mdfiles
$ mdtogh --toc --toc_depth=2 --file_reg='^\d.+\.md'

Generate files with additional book info.

$ cd mdfiles
$ mdtogh --toc --book='book.json'

The format of book.json is given below.

Generate files with custom template:

$ cd mdfiles
$ mdtogh --templates=path_to_templates 01.md

The rules for templates is given below.

Generate files with custom toc file:

$ cd mdfiles
$ mdtogh --toc --toc_file=Readme.md --file_reg='^\d.+\.md'

Offline rendering:

$ cd mdfiles
$ mdtogh --offline 01.0.md

Recommanded options to generate book:

$ mdtogh --css --toc --book='book.json' --file_reg='your reg exp'

Recommanded options to generate several files:

$ mdtogh 01.md 02.md

For more options:

mdtogh -h

##Something You May Notice

As to generate files exactly like github does, the easiest way is to use api if offers. But it has its own limits.

  • 60 for anonymous requests an hour
  • 5000 for requests using Basic Authentication an hour

So, you may using --user & --pass options

$ mdtogh --user='your_github_username' --pass='your login password'

Your info is sent through https which is safe. mdtogh will not save any of it.

##book.json

{
	"title": "Demo book",
	"description": "This is a book.",
	"coverimage": "demo.jpg"
}

##Custom Templates Support

mdtogh now support custom templates. You can use --templates to specific where to locate templates. You should give at least three files belows:

  • content.html
  • toc.html
  • index.html

mdtogh use jinja2 as template engine.

For tutorial of template writing, please check this

###content.html

content.html is used for generate standalone html file with things like head, body after content of md file is rendered by github or offline renderer.

mdtogh will pass several parameters to content.html which you can use:

  • filetitle #booktitle in book.json`
  • content #contents after render by github or offline renderer
  • toc #not support yet
  • needtoc #whether toc is needed
  • prevfile #link to prevfile. only used when --toc is set
  • nextfile #link to nextfile. only used when --tocis set

###toc.html

toc.html is used for generate table of content which will be used later in index.html. So, you don't need add <html> or <body> tag.

Parameters passed to toc.html.

  • tocs
  • toc_depth

####tocs tocs is a list of headers. It's set like :

[
	['h1', 'top header', 'headerlink'],
	['h2', 'sub header', 'header link'],
	....
]

####toc_depth

toc_depth is set by user. It refers the maxium depth of header. It's an integer value. ie.

	2

###index.html

index.html is used for generate index.html for book.

Parameters passed to index.html:

  • booktitle #title in book.json
  • coverimage #coverimage in book.json
  • description #description in book.json
  • toc #toc rendered with toc.html
  • custom_toc #whether use custom_toc. custom_toc is rendered like normal md file

##TODO mdtogh is still on developing.

Features are developing or will be add later.

  • support recursive options.
  • add toc in content.html

##Contibuting Any help will be appreciated.

  • open issue if you find any questions
  • complete tasks in TODO list
  • add features you like
  • feel free to open pull request

##Links

##Change Log

  • 2014/4/30 0.0.9 add option: --timeout. set timeout for requests. add cache support. now it will skip file which is not changed.
  • 2014/3/12 0.0.8 add option: --offline. offline rendering is supported.
  • 2014/3/11 0.0.7 add option: --toc_file. user can specific one file as toc. relative link will be resolved automatically.
  • 2014/3/6 0.0.6 add option: --encoding for offline renderer, fix relative link, add support for custom template
  • 2014/3/5 0.0.5 add MANIFEST.in, fix pacakge wrapped by setup.py. Fix css link not include while rendering after first downloading css files
  • 2014/3/4 0.0.3 fix error leads by unicode filename
  • 2014/3/3 0.0.2 add --toc_depth support, fix get_html_name bug
  • 2014/3/1 0.0.1 first release

##Thanks Special thanks to grip. Without its excellent work, this tool can't be done.

mdtogh's People

Contributors

marchtea avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.