From a1490c30968118b4c69f6837966b3986a47177fe Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 6 Jun 2016 19:52:42 +0200 Subject: [PATCH] Make split_tags a bit more generic so I can reuse it I need it in an upcoming commit where I want to split on ':' --- include/dindexer-common/split_tags.hpp | 1 + src/common/split_tags.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/include/dindexer-common/split_tags.hpp b/include/dindexer-common/split_tags.hpp index 149cc25..3005751 100644 --- a/include/dindexer-common/split_tags.hpp +++ b/include/dindexer-common/split_tags.hpp @@ -24,6 +24,7 @@ #include "helpers/compatibility.h" namespace dinlib { + std::vector split_and_trim ( const std::string& parList, char parSeparator ) a_pure; std::vector split_tags ( const std::string& parCommaSeparatedList ) a_pure; } //namespace dinlib diff --git a/src/common/split_tags.cpp b/src/common/split_tags.cpp index 4ba7275..931a8d5 100644 --- a/src/common/split_tags.cpp +++ b/src/common/split_tags.cpp @@ -26,6 +26,10 @@ namespace dinlib { std::vector split_tags (const std::string& parCommaSeparatedList) { + return split_and_trim(parCommaSeparatedList, ','); + } + + std::vector split_and_trim (const std::string& parList, char parSeparator) { using OutRange = boost::iterator_range; using boost::token_finder; using boost::adaptors::transformed; @@ -42,7 +46,7 @@ namespace dinlib { //http://www.boost.org/doc/libs/1_60_0/doc/html/boost/algorithm/token_finder.html //https://stackoverflow.com/questions/20781090/difference-between-boostsplit-vs-boostiter-split return boost::copy_range>( - iter_split(out_range, parCommaSeparatedList, token_finder([](char c){return ','==c;})) | + iter_split(out_range, parList, token_finder([parSeparator](char c){return parSeparator==c;})) | transformed([](const OutRange& r){return trim_copy(r);}) | transformed([](const OutRange& r){return string_ref(&*r.begin(), r.size());}) | filtered([](const string_ref& r){return not r.empty();})