emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Lieterate Programming for configuration settings
@ 2012-03-05  8:09 Vladimir Lomov
  2012-03-05 14:58 ` Eric Schulte
  0 siblings, 1 reply; 3+ messages in thread
From: Vladimir Lomov @ 2012-03-05  8:09 UTC (permalink / raw)
  To: emacs-orgmode

Hello,

--------------------------------- 8< ---------------------------------

#+TITLE: Literate Programming for configuration settings
#+AUTHOR: Vladimir Lomov
#+OPTIONS: toc:nil

* Literate Programming

I'm trying to use the Literate Programming to describe my set up of
Openbox and my workflow with Linux.

The main problem is with Openbox. I set up convenient (for me)
keybindings, like "W-x f k" to launch Krusader file manager, and now I
want to describe all my keybindings.

I see this as follow: from one source I get Org table (keybind and
description) and xml code (to be included into ~rc.xml~ using noweb).

At first, I thought about table in org file with three columns:

| Keybind | Code | Description |
|---------+------+-------------|

but I don't know how to exclude second column in html export and how
to generate xml code excluding the third column.

So I decided to use plain txt files with the same information.

My question is: how to get table in html export and xml file with
code?

I wrote two shell scripts, first gives org table from txt file, the
second generates xml code from the same txt file, but can't figure out
how to use them with org.

(My next step would be to put both: plain txt file content and shell
script code into one org file, if my idea would work.)

** Example

Below is example of plain text file. I don't need ~example.txt~
except for shell script to generate org table and xml code, if it is
possible to get both without extracting text file it would be great.

#+name: example.txt
#+begin_src text :exports none :tangle example.txt
"Alt-F2"	'<action name="execute"><command>gmrun</command></action>'	"Run gmrun, very useful tool"
"Alt-F4"	'<action name="Close"/>'	"Close application window"
"Alt-F9"	'<action name="Iconify"/>'	"Iconify to task bar"
"Alt-Tab"	'<action name="NextWindow"/>'	"Switch focus to next window"
"Alt-S-Tab"	'<action name="PreviousWindow"/>'	"Switch focus to previous window"
"Alt-space"	'<action><menu>client-menu</menu></action>'	"Show application window menu"
#+end_src

This shell script used standalone gives correct org table. I also
don't need it except it generates org table.

#+name: txt2org-table
#+begin_src sh :exports none
#!/bin/bash

###
# Read a txt file and write to stdout it as Org table.
###

_data="$1"

###
# Each line has three fields: keystroke, xml code and description. For table the 1 and 3 are needed.
###

echo "|  Keybind   |     Description      |"
echo "+------------+----------------------|"
while IFS='	' read -r kb code descr
do
  [[ ${kb} = \#* ]] && continue
  echo "| ${kb//\"/~} | ${descr//\"} |"
done < "${_data}"
echo "+------------+----------------------|"

exit 0
#+end_src

** My real goal

Ideally I want to have a table (like <<example.txt>>) in org file, when
I export org file to html there must be table with "Keybind" and
"Description" and the same org file should generate ~rc.xml~ (I assume
it is possible to insert results of script run in place of <<NOWEB>>).

---
Thanks in advance, Vladimir Lomov

P.S. Sorry if I description were to obscure.

P.P.S. Side note: why then 'tangled' example.txt the first line is empty one?

-- 
<kceee^> I hate users
<knghtbrd> you sound like a sysadmin already!

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-03-06 23:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-05  8:09 Lieterate Programming for configuration settings Vladimir Lomov
2012-03-05 14:58 ` Eric Schulte
2012-03-06 23:57   ` Vladimir Lomov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).