From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: emacs-orgmode@gnu.org
Subject: Re: the "right way" to build OMPL export and import
Date: Fri, 26 Apr 2013 14:30:58 -0700 [thread overview]
Message-ID: <87y5c5ou7h.fsf@ericabrahamsen.net> (raw)
In-Reply-To: C57D9882-D3FC-4E8E-B211-17303E8A69F7@alexisgallagher.com
Alexis Gallagher <alexis@alexisgallagher.com> writes:
> Hi,
>
> I would love to be able to export org documents to opal, so that I can
> read them with the various commercial outlining apps on platforms
> without emacs -- e.g, iOS. The ideal thing would be if I could import
> OPML as well.
>
> Is anyone working on this already?
>
> If not, does anyone have any pointers on the "right way" to go about
> this, so that the work would go smoothly and be acceptable upstream?
> This seems like a good time to ask given the recent consolidation of
> export facilities around the internal parser org-element.el.
>
> I presume any OPML exporter should be based on that, correct? Is any one of the existing exporters a particularly clean example to work from?
>
> For OPML import, is org-element-interpret-data the best starting point?
>
> Alexis
Hi Alexis,
I guess the first step to making an OPML exporter would be figuring out
how to export correctly to XML, which happens to be something I've spent
a whole fourteen minutes thinking about. I'm not sure the general export
engine is going to be of much use, since XML is so completely flexible,
but you'll definitely want to build it on top of the internal parser.
Luckily, the parser turns an org subtree into a parse tree, and the
function `xml-print' turns a parse tree into XML. They're not quite the
same parse tree, but I guess you'll want to do something like this:
#+BEGIN_SRC org
,* My Great Playlist
,** The Cold Cold Ground.mp3
:PROPERTIES:
:OPML_TYPE: song
:OPML_F: Tom Waits - The Cold Cold Ground
:END:
,** Don't Eat the Yellow Snow.mp3
:PROPERTIES:
:OPML_TYPE: song
:OPML_F: Frank Zappa - Don't Eat the Yellow Snow
:END:
#+END_SRC
|
|
org-element--parse-elements
|
|
#+BEGIN_SRC emacs-lisp
(org-data
(headline "My Great Playlist"
(etc, snipped because printing this makes a huge mess)
#+END_SRC
|
|
magic-happens-here
|
|
#+BEGIN_SRC emacs-lisp
(outline
((text . "My Great Playlist"))
(outline
((text . "The Cold Cold Ground.mp3")
(type . "song")
(f . "Tom Waits - The Cold Cold Ground")))
(outline
((text . "Don't Eat the Yellow Snow.mp3")
(type . "song")
(f . "Frank Zappa - Don't Eat the Yellow Snow"))))
#+END_SRC
|
|
xml-print
|
|
#+BEGIN_SRC xml
<outline text="My Great Playlist">
<outline text="The Cold Cold Ground.mp3" type="song" f="Tom Waits - The Cold Cold Ground"/>
<outline text="Don't Eat the Yellow Snow.mp3" type="song" f="Frank Zappa - Don't Eat the Yellow Snow"/>
</outline>
#+END_SRC
It's the magic that will take some doing, though!
Eric
next prev parent reply other threads:[~2013-04-26 21:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-24 20:25 the "right way" to build OMPL export and import Alexis Gallagher
2013-04-26 21:30 ` Eric Abrahamsen [this message]
2013-04-26 21:49 ` Nicolas Goaziou
2013-04-26 22:23 ` Eric Abrahamsen
2013-04-26 22:36 ` Nicolas Goaziou
2013-04-27 4:51 ` Eric Abrahamsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y5c5ou7h.fsf@ericabrahamsen.net \
--to=eric@ericabrahamsen.net \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.