diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-09-13 21:59:36 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-09-13 22:00:34 -0400 |
commit | 32ca2cb020b35b85ff3ddd5fe5bac9af9f1eebcc (patch) | |
tree | e0eb5ad7885bc9a563d6a8a70c0da14ac537c2ce /sc/inc | |
parent | 689bde97d1a249c679a16f084043256868cd4978 (diff) |
Updated csv_parser from orcus.
Diffstat (limited to 'sc/inc')
-rw-r--r-- | sc/inc/orcus/csv_parser.hpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/sc/inc/orcus/csv_parser.hpp b/sc/inc/orcus/csv_parser.hpp index 828a8b6cd035..c5adc175c410 100644 --- a/sc/inc/orcus/csv_parser.hpp +++ b/sc/inc/orcus/csv_parser.hpp @@ -86,6 +86,8 @@ private: void cell(); void quoted_cell(); + void skip_blanks(); + /** * Push cell value to the handler. */ @@ -179,6 +181,7 @@ void csv_parser<_Handler>::row() assert(is_delim(c)); next(); + skip_blanks(); } } @@ -228,8 +231,9 @@ void csv_parser<_Handler>::quoted_cell() assert(is_text_qualifier(c)); next(); // Skip the closing quote. + skip_blanks(); c = cur_char(); - if (!is_delim(c)) + if (!is_delim(c) && c != '\n') { std::ostringstream os; os << "A quoted cell value must be immediately followed by a delimiter. "; @@ -244,6 +248,16 @@ void csv_parser<_Handler>::quoted_cell() } template<typename _Handler> +void csv_parser<_Handler>::skip_blanks() +{ + for (; has_char(); next()) + { + if (!is_blank(*mp_char)) + break; + } +} + +template<typename _Handler> void csv_parser<_Handler>::push_cell_value(const char* p, size_t n) { size_t len = n; |