TDB2 parsing

- TDB2::load_lines was splitting the text on \n, but because the last
  line contains \n, there was an additional blank line.  This is what
  split_minimal is for.
- split_minimal contained a copy/paste bug that added the extra line
  if the input was non-trivial, instead of if the remainder was non-
  trivial.
- Fixed incorrect unit test accordingly.
This commit is contained in:
Paul Beckingham 2011-08-13 23:19:11 -04:00
parent 587f2a002f
commit fb9e82ed0e
3 changed files with 4 additions and 8 deletions

View file

@ -25,6 +25,7 @@
//
////////////////////////////////////////////////////////////////////////////////
//#include <iostream> // TODO Remove.
#include <Context.h>
#include <text.h>
#include <TDB2.h>
@ -287,13 +288,8 @@ void TF2::load_lines ()
if (! _loaded_contents)
load_contents ();
split (_lines, _contents, '\n');
split_minimal (_lines, _contents, '\n');
_loaded_lines = true;
/*
if (_lines.back () == "")
_lines.pop_back ();
*/
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -143,7 +143,7 @@ void split_minimal (
start = i + 1;
}
if (input.length ())
if (start < input.length ())
results.push_back (input.substr (start));
}

View file

@ -112,7 +112,7 @@ int main (int argc, char** argv)
t.is (items[1], "", "split '-' '-' -> [1] ''");
split_minimal (items, unsplit, '-');
t.is (items.size (), (size_t) 1, "split '-' '-' -> '-'");
t.is (items.size (), (size_t) 0, "split '-' '-' ->");
unsplit = "-a-bc-def";
split (items, unsplit, '-');