org-ruby is a Ruby gem that can be used to parse
org-mode files. It’s not as robust as using Emacs itself, but sometimes a quick script is all that’s needed to extract a couple of bits of data
The following code will read an
org-mode file and list all major headlines:
require 'org-ruby' document = Orgmode::Parser.new(File.read('TODO.org')) document.headlines.each do |headline| puts headline.headline_text end
Here’s a more advanced example. This will read all headlines that are marked as “DONE” along with any list items they contain.
require 'org-ruby' document = Orgmode::Parser.new(File.read('TODO.org')) doc.headlines.each do |headline| next unless headline.keyword == 'DONE' puts headline.headline_text headline.body_lines.each do |line| next if line.nil? next unless line.paragraph_type == :list_item task_line = line.output_text.strip puts ' -> ' + task_line[4..-1] end end
Using this file:
#+TITLE: TODO.org DONE Top Level Task 1 - [X] Checkbox one - [X] Checkbox two TODO Top Level Task 2 - [ ] Checkbox three
Top Level Task 1 -> Checkbox one -> Checkbox two
The Mini Shinobi development page is a good example of what this can be used to create. The “daily activity” and “milestones” sections are both built entirely using org data.