Both `ParserState` and `OrgParserState` keep track of the parser position at
which the last string ended. This patch introduces a new class
`HasLastStrPosition` and makes the above types instances of that class. This
enables the generalization of functions updating the state or checking if one
is right after a string.
Various cleanups:
- @pkg_info was never used. Removed.
- Simplified getting the list of files slightly.
- Used list form of system(). This prevents shell interpretation of command and arguments, preventing bugs. (And solves one.)
- Changed $! (OS_ERROR) to $? (CHILD_ERROR) after system() calls to get the error from the external program. (Note that $? is the numeric return code from the child program.)
- Allow script to continue after finding some of the files have been removed previously.
- Convert 'warn "…"; exit 1;' to 'die "…";', the more common equivalent idiom.
- Convert 'exit 0;' to 'exit;', to be more clear we are not exiting abnormally.
Signed-off-by: Daniel T. Staal <DStaal@usa.net>
The reader produced wrong results for block containing non-letter chars
in their parameter arguments. This patch relaxes constraints in that it
allows block header arguments to contain any non-space character (except
for ']' for inline blocks).
Thanks to Xiao Hanyu for noticing this.
The general form of source block headers
(`#+BEGIN_SRC <language> <switches> <header arguments>`) was not
recognized by the reader. This patch adds support for the above form,
adds header arguments to the block's key-value pairs and marks the block
as a rundoc block if header arguments are present.
This closes#1286.
(It seems clearer to put the whitespace parsing in the grouped
parser. This also uses stateLastStrPos to determine when the
border is adjacent to an alphanumeric.)
Org's inline code blocks take forms like `src_haskell(print "hi")` and
are frequently used to include results from computations called from
within the document. The blocks are read as inline code and marked with
the special class `rundoc-block`. Proper handling and execution of
these blocks is the subject of a separate library, rundoc, which is
work in progress.
This closes#1278.