* [babel] Problem with tangling and newlines
@ 2011-07-13 22:31 Sebastien Vauban
2011-07-15 15:34 ` Eric Schulte
0 siblings, 1 reply; 2+ messages in thread
From: Sebastien Vauban @ 2011-07-13 22:31 UTC (permalink / raw)
To: emacs-orgmode-mXXj517/zsQ
Hi,
Tangling this:
#+begin_src sh :tangle my-csv2ledger-wrapper.sh :noweb yes
#!/bin/bash
# my-csv2ledger-wrapper.sh -- Convert CSV files to Ledger data
<<load-data>> |\
<<americanize-date>> |\
<<americanize-csv>>
exit 0
#+end_src
now gives:
--8<---------------cut here---------------start------------->8---
#!/bin/bash
# my-csv2ledger-wrapper.sh -- Convert CSV files to Ledger data
cat
|\
sed -r 's/^([[:digit:]]{2})\/([[:digit:]]{2})\/([[:digit:]]{2})/\2\/\1\/20\3/g' |\
sed -r 's/^([[:digit:]]{2})-([[:digit:]]{2})-([[:digit:]]{4})/\2\/\1\/\3/g'
|\
sed -r 's/([[:digit:]])\.([[:digit:]]{3})/\1\2/g' |\
sed -r 's/([[:digit:]]),([[:digit:]]{2})/\1.\2/g' |\
sed -r 's/,/./g' |\
sed -r 's/;/,/g'
exit 0
--8<---------------cut here---------------end--------------->8---
which is not executable anymore because the pipe is not ending the line of
commands.
This is quite recent (v7.6?).
Best regards,
Seb
--
Sebastien Vauban
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [babel] Problem with tangling and newlines
2011-07-13 22:31 [babel] Problem with tangling and newlines Sebastien Vauban
@ 2011-07-15 15:34 ` Eric Schulte
0 siblings, 0 replies; 2+ messages in thread
From: Eric Schulte @ 2011-07-15 15:34 UTC (permalink / raw)
To: Sebastien Vauban; +Cc: emacs-orgmode
Hi Seb,
This is tricky because in some languages (e.g., Haskell and Python)
whitespace needs to be respected, and the newlines are treated as part
of the code block.
We used to trim all whitespace padding from the edges of code blocks
during tangling, however that caused problems, so now we do no trimming,
which is causing problems for your use case. Perhaps the best
compromise would be to trim only the last trailing newline from the body
of the code block (given that it is not optional and could be considered
part of the block syntax rather than part of the code body). I believe
that behavior would support all use cases...
OK, I've just made this change and pushed it up to the repository, all
Babel tests are still passing to it shouldn't be overly destructive.
The following behavior now works.
** including noweb refs w/o last newline
#+begin_src sh :noweb yes
<<my-name>> |\
<<capitalize-name>>
#+end_src
#+source: my-name
#+begin_src sh
echo "eric schulte"
#+end_src
#+source: capitalize-name
#+begin_src sh
sed 's/^e/E/;s/ s/ S/'
#+end_src
and (from the test suite), the following
#+begin_src sh :tangle yes :noweb yes :shebang #!/bin/sh
<<fullest-disk>>
#+end_src
** query all mounted disks
#+begin_src sh :noweb-ref fullest-disk
df
#+end_src
** strip the header row
#+begin_src sh :noweb-ref fullest-disk
|sed '1d'
#+end_src
** sort by the percent full
#+begin_src sh :noweb-ref fullest-disk
|awk '{print $5 " " $6}'|sort -n |tail -1
#+end_src
** extract the mount point
#+begin_src sh :noweb-ref fullest-disk
|awk '{print $2}'
#+end_src
now tangles to
df|sed '1d'|awk '{print $5 " " $6}'|sort -n |tail -1|awk '{print $2}'
which is pretty nice.
Thanks for bringing this up -- Eric
"Sebastien Vauban" <wxhgmqzgwmuf@spammotel.com> writes:
> Hi,
>
> Tangling this:
>
> #+begin_src sh :tangle my-csv2ledger-wrapper.sh :noweb yes
> #!/bin/bash
> # my-csv2ledger-wrapper.sh -- Convert CSV files to Ledger data
>
> <<load-data>> |\
> <<americanize-date>> |\
> <<americanize-csv>>
>
> exit 0
> #+end_src
>
> now gives:
>
> #!/bin/bash
> # my-csv2ledger-wrapper.sh -- Convert CSV files to Ledger data
>
> cat
> |\
> sed -r 's/^([[:digit:]]{2})\/([[:digit:]]{2})\/([[:digit:]]{2})/\2\/\1\/20\3/g' |\
> sed -r 's/^([[:digit:]]{2})-([[:digit:]]{2})-([[:digit:]]{4})/\2\/\1\/\3/g'
> |\
> sed -r 's/([[:digit:]])\.([[:digit:]]{3})/\1\2/g' |\
> sed -r 's/([[:digit:]]),([[:digit:]]{2})/\1.\2/g' |\
> sed -r 's/,/./g' |\
> sed -r 's/;/,/g'
>
> exit 0
>
> which is not executable anymore because the pipe is not ending the line of
> commands.
>
> This is quite recent (v7.6?).
>
> Best regards,
> Seb
--
Eric Schulte
http://cs.unm.edu/~eschulte/
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-07-15 15:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-13 22:31 [babel] Problem with tangling and newlines Sebastien Vauban
2011-07-15 15:34 ` Eric Schulte
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).