# HG changeset patch # User Thorsten Meyer # Date 1225318488 14400 # Node ID f3dbea0e8a1ddf2ac4fece92f8c00af048e78438 # Parent 6f2d952559110c532de4f3c8a91fadd7af7357ca Adapted munge-texi to expand @seealso commands to texinfo references diff -r 6f2d95255911 -r f3dbea0e8a1d doc/ChangeLog --- a/doc/ChangeLog Wed Oct 29 17:52:54 2008 -0400 +++ b/doc/ChangeLog Wed Oct 29 18:14:48 2008 -0400 @@ -8,6 +8,9 @@ interpreter/var.txi, interpreter/strings.txi: Add missing @DOCSTRING commands. + * interpreter/munge-texi.cc (extract_docstring): Expand arguments + of @seealso{} into Texinfo references. + 2008-10-22 David Bateman * interprter/plot.txi: Add documentation for error bar series. diff -r 6f2d95255911 -r f3dbea0e8a1d doc/interpreter/munge-texi.cc --- a/doc/interpreter/munge-texi.cc Wed Oct 29 17:52:54 2008 -0400 +++ b/doc/interpreter/munge-texi.cc Wed Oct 29 18:14:48 2008 -0400 @@ -70,8 +70,82 @@ int c; while ((c = is.get ()) != EOF && c != doc_delim) - doc += (char) c; + { + // Expand @seealso commands to Texinfo references. + if (c == '@') + { + char buf[16]; + int i = 0; + buf[i++] = (char) c; + + if (( buf[i++] = (char) is.get ()) == 's' + && (buf[i++] = (char) is.get ()) == 'e' + && (buf[i++] = (char) is.get ()) == 'e' + && (buf[i++] = (char) is.get ()) == 'a' + && (buf[i++] = (char) is.get ()) == 'l' + && (buf[i++] = (char) is.get ()) == 's' + && (buf[i++] = (char) is.get ()) == 'o' + && (buf[i++] = (char) is.get ()) == '{') + { + doc += "@seealso{"; + + bool first = true; + + // process @seealso parameters + while ((c = is.get ()) != EOF + && c != doc_delim + && c != '}') + { + // ignore whitespace and delimiters + while ( c == ' ' + || c == '\t' + || c == '\r' + || c == '\n' + || c == ',') + { + c = is.get (); + } + + // test for end of @seealso + if (c == '}') + break; + + // get function name + std::string function_name; + do + function_name += (char) c; + while ((c = is.get ()) != EOF + && c != doc_delim + && c != ' ' + && c != '\t' + && c != '\r' + && c != '\n' + && c != ',' + && c != '}'); + if (first) + first = false; + else + doc += ", "; + doc += "@ref{doc-" + function_name + ",," + + function_name + "}"; + + // test for end of @seealso + if (c == '}') + break; + } + if (c == '}') + doc += (char) c; + } + else + { + for (int j = 0; j < i; j++) + doc += buf[j]; + } + } + else + doc += (char) c; + } return doc; } @@ -149,9 +223,9 @@ char buf[16]; int i = 0; - buf[i++] = c; + buf[i++] = (char) c; - if ((buf[i++] = (char) is.get ()) == 'D' + if (( buf[i++] = (char) is.get ()) == 'D' && (buf[i++] = (char) is.get ()) == 'O' && (buf[i++] = (char) is.get ()) == 'C' && (buf[i++] = (char) is.get ()) == 'S'