Typedown is a markdown dialect optimized for fast typing on mobile devices. The typedown is basically a preprocessor that translates typedown to markdown, for further processing by a markdown parser.
At the moment the typedown syntax is mainly tested with the iPod touch/iPhone iOS 4.0.1 keyboard. It takes into account looks at how easy it is to get to important characters on the keyboard, as well as features like auto-capitalizing.
A typical typedown document will look like this:
! Heading Exclamation mark is chosen because the first word after it is auto-capitalized. And it is easier to get to than the hash (#) in the iPhone/iPod touch keyboard layout. //. This is a bold paragraph that might run through several lines before ending in a double line break. The dot ensuers the first word is auto-capitalized. /. This paragraph is italic. Single words may be /italic/ or //bold//. Or you may use standard _markdown italic_ and __bold__ for more flexibility. The slash syntax only works for single words and whole words, because the slash may have other uses. !! Subheading As typedown is a preprocessor, one is free to use standard markdown. There is one exception though. The dash will no longer create bullet-lists. - Why? you ask. - It is used for dialogue instead. - Why? - I want typedown to be a tool for journalists and writers. In some countries, including mine, this is a usual style for writing dialogue both in newspapers, magazines and fiction. - Ah! you say. - I get it. The dash does not auto-capitalize, though. Because of this there is an alternative syntax: -. You may add dialogue like this. -. That dot is ugly. -. Yeah, I agree. But this actually is faster to type. Saves a lot of shifting. -. On the iPod again, I guess. -. How did you know? I ask. You grin. !! Link The bracket is not very accessible on mobile keyboards. You can create links in textile fashion instead. "Textile inspired links":http://example.com/ !! Image And you can use the following cross between textile and markdown syntax for images. Typedown will produce an image caption under the image instead of an alt tag. !"Image caption":http://example.com/image.jpg
The preprocessor at present is not aware of CODE blocks or similar, and will not leave your regexps alone.
Typedown is presently using bluecloth as its markdown parser.
require 'typedown' doc = Typedown::Document.new content doc << "! More content\n" puts doc.to_markdown puts doc.to_html
Section.sectionize might be nice for extracting headlines or TOCs.
require 'typedown' root = Typedown::Section.sectionize content puts root.title puts root.body.to_markdown root.subsections.each do |s| puts root.title s.subsections.each do |t| puts s.title # puts s.body.to_markdown # puts s.body.to_html end end
(The MIT License)
Copyright © 2010 Rune Myrland
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.