Literate programming/Bird conversion via sed

From HaskellWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
# bird2code.sed
/^>/ !p
/^>/ {
  i\
\\begin{code}

  :loop
  N
  /\n>[^\n]*$/{
    b loop
  }
  s/^> //
  s/\(\n\)> /\1/g
  s/\n$//
  a\
\\end{code}\

  p
}

should be run as:

sed -nf bird2code.sed < code.lhs > code.tex

Note that the above sed script does not handle all input well. For example, if the last line of an input file is a line of bird-style code and there is no newline before end-of-file, than the last "/end{code}" is omitted. You are advised to consider using the alternative awk script.