Skip to content

Commit

Permalink
Added org-mode support.
Browse files Browse the repository at this point in the history
  • Loading branch information
bdewey committed Dec 31, 2009
1 parent 606fc9a commit c9aa511
Show file tree
Hide file tree
Showing 4 changed files with 224 additions and 0 deletions.
6 changes: 6 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@ rescue LoadError
puts "sdoc support not enabled. Please gem install sdoc-helpers."
end

begin
require 'org-ruby'
rescue LoadError
puts "org-mode support not enabled. Please gem install org-ruby."
end

desc "Build a gem"
task :gem => [ :gemspec, :build ]

Expand Down
4 changes: 4 additions & 0 deletions lib/github/markups.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
GitHub::Markup::RDoc.new(content).to_html
end

markup('org-ruby', /org/) do |content|
Orgmode::Parser.new(content).to_html
end

command(:rest2html, /rest|rst/)

command('asciidoc -s --backend=xhtml11 -o - -', /asciidoc/)
Expand Down
115 changes: 115 additions & 0 deletions test/markups/README.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
#+TITLE: org-ruby
#+AUTHOR: Brian Dewey
#+EMAIL: bdewey@gmail.com
#+DATE: 2009-12-21
#+DESCRIPTION:
#+KEYWORDS:
#+LANGUAGE: en
#+OPTIONS: H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS: TeX:t LaTeX:nil skip:nil d:nil todo:nil pri:nil tags:not-in-toc
#+EXPORT_EXCLUDE_TAGS: exclude
#+STARTUP: showall

| Status: | Under Development |
| Location: | [[http://github.com/bdewey/org-ruby]] |
| Version: | 0.5.1 |

* Description

Helpful Ruby routines for parsing orgmode files. The most
significant thing this library does today is convert orgmode files
to textile. Currently, you cannot do much to customize the
conversion. The supplied textile conversion is optimized for
extracting "content" from the orgfile as opposed to "metadata."


* History

** 2009-12-30: Version 0.5.1

- Minor enhancement: Recognize lines starting with ":" as examples.
- Minor enhancement: Recognize #+BEGIN_SRC as source blocks
- Minor enhancement: Add "src" and "example" classes to <pre> blocks.


** 2009-12-30: Version 0.5.0

- Parse (but not necessarily *use*) in-buffer settings. The following
in-buffer settings *are* used:
- Understand the #+TITLE: directive.
- Exporting todo keywords (option todo:t)
- Numbering headlines (option num:t)
- Skipping text before the first headline (option skip:t)
- Skipping tables (option |:nil)
- Custom todo keywords
- EXPORT_SELECT_TAGS and EXPORT_EXLUDE_TAGS for controlling parts of
the tree to export
- Rewrite "file:(blah).org" links to "http:(blah).html" links. This
makes the inter-links to other org-mode files work.
- Uses <th> tags inside table rows that precede table separators.
- Bugfixes:
- Headings now have HTML escaped.

** 2009-12-29: Version 0.4.2

- Got rid of the extraneous newline at the start of code blocks.
- Everything now shows up in code blocks, even org-mode metadata.
- Fixed bugs:
- Regressed smart double quotes with HTML escaping. Added a test
case and fixed the regression.

** 2009-12-29: Version 0.4.1
- HTML is now escaped by default
- org-mode comments will show up in a code block.

** 2009-12-29: Version 0.4

- The first thing output in HTML gets the class "title"
- HTML output is now indented
- Proper support for multi-paragraph list items.

See? This paragraph is part of the last bullet.

- Fixed bugs:
- "rake spec" wouldn't work on Linux. Needed "require 'rubygems'".

** 2009-12-27: Version 0.3

- Uses rubypants to get better typography (smart quotes, elipses, etc...).
- Fixed bugs:
- Tables and lists did not get properly closed at the end of file
- You couldn't do inline formatting inside table cells
- Characters in PRE blocks were not HTML escaped.

** 2009-12-26: Version 0.2

- Added =to_html= output on the parser.
- Added support for the full range of inline markup: *bold*,
/italic/, =code=, ~verbatim~, _underline_, +strikethrough+.
- Lots of refactoring to make the code more maintainable.

** 2009-12-23: Version 0.1

- Added support for block code, like this:

#+BEGIN_EXAMPLE
def flush!
@logger.debug "FLUSH ==========> #{@output_type}"
if (@output_type == :blank) then
@output << "\n"
elsif (@buffer.length > 0) then
if @cancel_modifier then
@output << "p. " if @output_type == :paragraph
@cancel_modifier = false
end
@output << @paragraph_modifier if (@paragraph_modifier and not sticky_modifier?)
@output << @buffer.textile_substitution << "\n"
end
@buffer = ""
end
#+END_EXAMPLE

- Major code cleanup: Created the =OutputBuffer= class that
greatly simplified a lot of the messiness of =textile=
conversion.
- Added support for line breaks within list items.
99 changes: 99 additions & 0 deletions test/markups/README.org.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<p class="title">org-ruby</p>
<table>
<tr><td>Status:</td><td>Under Development</td></tr>
<tr><td>Location:</td><td><a href="http://github.com/bdewey/org-ruby">http://github.com/bdewey/org-ruby</a></td></tr>
<tr><td>Version:</td><td>0.5.1</td></tr>
</table>
<h1><span class="heading-number heading-number-1">1 </span>Description</h1>
<p>Helpful Ruby routines for parsing orgmode files. The most significant thing this library does today is convert orgmode files to textile. Currently, you cannot do much to customize the conversion. The supplied textile conversion is optimized for extracting &#8220;content&#8221; from the orgfile as opposed to &#8220;metadata.&#8221;</p>
<h1><span class="heading-number heading-number-1">2 </span>History</h1>
<h2><span class="heading-number heading-number-2">2.1 </span>2009-12-30: Version 0.5.1</h2>
<ul>
<li>Minor enhancement: Recognize lines starting with &#8220;:&#8221; as examples.</li>
<li>Minor enhancement: Recognize #+BEGIN_SRC as source blocks</li>
<li>Minor enhancement: Add &#8220;src&#8221; and &#8220;example&#8221; classes to &lt;pre&gt; blocks.</li>
</ul>
<h2><span class="heading-number heading-number-2">2.2 </span>2009-12-30: Version 0.5.0</h2>
<ul>
<li>Parse (but not necessarily <b>use</b>) in-buffer settings. The following in-buffer settings <b>are</b> used:</li>
<ul>
<li>Understand the #+TITLE: directive.</li>
<li>Exporting todo keywords (option todo:t)</li>
<li>Numbering headlines (option num:t)</li>
<li>Skipping text before the first headline (option skip:t)</li>
<li>Skipping tables (option |:nil)</li>
<li>Custom todo keywords</li>
<li>EXPORT_SELECT_TAGS and EXPORT_EXLUDE_TAGS for controlling parts of the tree to export</li>
</ul>
<li>Rewrite &#8220;file:(blah).org&#8221; links to &#8220;http:(blah).html&#8221; links. This makes the inter-links to other org-mode files work.</li>
<li>Uses &lt;th&gt; tags inside table rows that precede table separators.</li>
<li>Bugfixes:</li>
<ul>
<li>Headings now have HTML escaped.</li>
</ul>
</ul>
<h2><span class="heading-number heading-number-2">2.3 </span>2009-12-29: Version 0.4.2</h2>
<ul>
<li>Got rid of the extraneous newline at the start of code blocks.</li>
<li>Everything now shows up in code blocks, even org-mode metadata.</li>
<li>Fixed bugs:</li>
<ul>
<li>Regressed smart double quotes with HTML escaping. Added a test case and fixed the regression.</li>
</ul>
</ul>
<h2><span class="heading-number heading-number-2">2.4 </span>2009-12-29: Version 0.4.1</h2>
<ul>
<li>HTML is now escaped by default</li>
<li>org-mode comments will show up in a code block.</li>
</ul>
<h2><span class="heading-number heading-number-2">2.5 </span>2009-12-29: Version 0.4</h2>
<ul>
<li>The first thing output in HTML gets the class &#8220;title&#8221;</li>
<li>HTML output is now indented</li>
<li>Proper support for multi-paragraph list items.</li>
<p>See? This paragraph is part of the last bullet.</p>
<li>Fixed bugs:</li>
<ul>
<li>&#8220;rake spec&#8221; wouldn&#8217;t work on Linux. Needed &#8220;require &#8216;rubygems&#8217;&#8221;.</li>
</ul>
</ul>
<h2><span class="heading-number heading-number-2">2.6 </span>2009-12-27: Version 0.3</h2>
<ul>
<li>Uses rubypants to get better typography (smart quotes, elipses, etc&#8230;).</li>
<li>Fixed bugs:</li>
<ul>
<li>Tables and lists did not get properly closed at the end of file</li>
<li>You couldn&#8217;t do inline formatting inside table cells</li>
<li>Characters in PRE blocks were not HTML escaped.</li>
</ul>
</ul>
<h2><span class="heading-number heading-number-2">2.7 </span>2009-12-26: Version 0.2</h2>
<ul>
<li>Added <code>to_html</code> output on the parser.</li>
<li>Added support for the full range of inline markup: <b>bold</b>, <i>italic</i>, <code>code</code>, <code>verbatim</code>, <span style="text-decoration:underline;">underline</span>, <del>strikethrough</del>.</li>
<li>Lots of refactoring to make the code more maintainable.</li>
</ul>
<h2><span class="heading-number heading-number-2">2.8 </span>2009-12-23: Version 0.1</h2>
<ul>
<li>Added support for block code, like this:</li>
</ul>
<pre class="example">
def flush!
@logger.debug "FLUSH ==========&gt; #{@output_type}"
if (@output_type == :blank) then
@output &lt;&lt; "\n"
elsif (@buffer.length &gt; 0) then
if @cancel_modifier then
@output &lt;&lt; "p. " if @output_type == :paragraph
@cancel_modifier = false
end
@output &lt;&lt; @paragraph_modifier if (@paragraph_modifier and not sticky_modifier?)
@output &lt;&lt; @buffer.textile_substitution &lt;&lt; "\n"
end
@buffer = ""
end
</pre>
<ul>
<li>Major code cleanup: Created the <code>OutputBuffer</code> class that greatly simplified a lot of the messiness of <code>textile</code> conversion.</li>
<li>Added support for line breaks within list items.</li>
</ul>

1 comment on commit c9aa511

@GallFox99
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

отель

Please sign in to comment.