Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    025329b6
    Add LLStringUtil::getTokens() overload handling quoted substrings. · 025329b6
    Nat Goodspeed authored
    We didn't have any tokenizer suitable for scanning something like a bash
    command line. We do have a couple hacks, e.g. LLExternalEditor::tokenize() and
    LLCommandLineParser::parseCommandLineString(). Both try to work around
    boost::tokenizer limitations; but existing boost::tokenizer support just
    doesn't address this case. Neither of the above is available as a general
    scanner anyway, and parseCommandLineString() fails outright when passed "".
    New getTokens() also distinguishes between "drop delimiters" (e.g. space,
    return, newline) to be discarded from the token stream, versus "keep
    delimiters" (e.g. "+-*/") to be returned as tokens in their own right.
    There's an overload that honors escapes and a more efficient one that doesn't;
    each has a convenience overload that returns the scanned string vector rather
    than requiring a separate declaration.
    Tweak and comment older getTokens() implementation.
    Add unit tests for both old and new getTokens() implementations.
    Break out StringVec and std::ostream << StringVec from
    indra/llcommon/tests/listener.h to StringVec.h: that's coming in handy for a
    number of different TUT test sources.
    025329b6
    History
    Add LLStringUtil::getTokens() overload handling quoted substrings.
    Nat Goodspeed authored
    We didn't have any tokenizer suitable for scanning something like a bash
    command line. We do have a couple hacks, e.g. LLExternalEditor::tokenize() and
    LLCommandLineParser::parseCommandLineString(). Both try to work around
    boost::tokenizer limitations; but existing boost::tokenizer support just
    doesn't address this case. Neither of the above is available as a general
    scanner anyway, and parseCommandLineString() fails outright when passed "".
    New getTokens() also distinguishes between "drop delimiters" (e.g. space,
    return, newline) to be discarded from the token stream, versus "keep
    delimiters" (e.g. "+-*/") to be returned as tokens in their own right.
    There's an overload that honors escapes and a more efficient one that doesn't;
    each has a convenience overload that returns the scanned string vector rather
    than requiring a separate declaration.
    Tweak and comment older getTokens() implementation.
    Add unit tests for both old and new getTokens() implementations.
    Break out StringVec and std::ostream << StringVec from
    indra/llcommon/tests/listener.h to StringVec.h: that's coming in handy for a
    number of different TUT test sources.
Code owners