yodlverbinsert(1) Generate verb-sections from parts of a file


yodlverbinsert [OPTIONS] [marker] file


Verbinsert is a simple C++ support program that can be used to generate verb()-sections in Yodl files from sections of existing files. The files from which sections are included are usually C or Cpp source files, accepting either // or /*-style comment. See the EXAMPLES section for illustrations.

Verbinsert offers the possibility to indent both the initial verb-statement and the inserted file contents. Furthermore, an additional empty line may be inserted before the first line that is actually inserted.

Blank lines at the beginning and end of files are ignored.

  • marker
    The argument marker must start in file's first column en must either start as a standard C or C++ comment: // or /* must be used. Following that, the remainder of the argument is used as a label, e.g., //label, /*label*/. Except for the first two characters and their locations, and the last two characters of a C-style marker, no special restrictions are imposed upon the label-names. A labeled section ends at the next //= (for labels starting with //) or at the next /**/ (for labels starting with /*). Like the markers, the end-markers must also start in the first columns of lines.
  • Alternatively, pairs of //+label, or /*+label*/ can be used. For such markers, copying starts at the first line following the first occurrence of the label, and ends when the label is encountered again. When these markers are used any additionally encountered marker-line is simply ignored, and not written to the output stream. This allowes labeled sections to be nested.
  • file
    The argument file must be an existing file.

Verbinsert writes its selected section to its standard output stream.

NOTE: Starting with Yodl version 3.00.0 Yodl's default file inclusion behavior has changed. The current working directory no longer remains fixed at the directory in which Yodl is called, but is volatile, changing to the directory in which a yodl-file is located. This has the advantage that Yodl's file inclusion behavior now matches the way C's #include directive operates; it has the disadvantage that it may break some current documents. Conversion, however is simple but can be avoided altogether if Yodl's -L (--legacy-include) option is used.


The default values of options are listed with each of the options between square brackets. The defaults were chosen so that yodlverbinsert performs the behavior of an earlier version of this program, which was not distributed with Yodl.
  • -a
    Process all lines of file (except initial and trailing blank lines). The argument marker must not be specified.
  • -A
    Same as the -a option, but ignoring all lines that can be considered yodlverbinsert (end) marker-lines.
  • -n
    Immediately following the indentation: lines are prefixed by numbers, occupying 2 columns, followed by a colon and a blank.
  • -N
    Do not write a newline immediately following verb-statement's open-parenthesis. By default it is written, causing an additional line to be inserted before the first line that's actually inserted from a file.
  • -s nSpaces [0]
    start each line that is written into the verb-section with nSpaces additional blanks.
  • -S nSpaces [8]
    prefix the verb of the verb-section by nSpaces additional blanks.
  • -t nTabs [0]
    start each line that is written into the verb-section with nTabs additional tab characters. If both -s and -t are specified, the tabs are inserted first.
  • -T nTabs [0]
    prefix the verb of the verb-section by nTabs additional tab characters. If both -S and -T are specified, the tabs are inserted first.


Assume the file demo contains the following text:

preceding text
one 1
trailing text

Then the following commands write the shown output to the program's standard output:

  • yodlverbinsert //one demo
    one 1
  • yodlverbinsert -N //one demo
            verb(one 1
  • yodlverbinsert -n -s4 '/*two*/' demo
            1: two

  • yodlverbinsert -n //+nest' demo
     1: one 1
     5:     two




Frank B. Brokken ([email protected]),