X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Farticlenumber.cpp;h=d8028310daca1085b64da61a68b8b1debe25489d;hb=b860a56bd9bc8894311c02d7673f379beff3220b;hp=dd19eb5710e1ab0b7d1d719ef0969b1545cdd08f;hpb=92c6b7a632cb6f380802114abcb4739fd0029261;p=r2c2.git diff --git a/source/libr2c2/articlenumber.cpp b/source/libr2c2/articlenumber.cpp index dd19eb5..d802831 100644 --- a/source/libr2c2/articlenumber.cpp +++ b/source/libr2c2/articlenumber.cpp @@ -6,75 +6,44 @@ using namespace Msp; namespace R2C2 { -ArticleNumber::ArticleNumber(unsigned n) -{ - Part part; - part.number = n; - part.letter = 0; - parts.push_back(part); -} - -ArticleNumber::ArticleNumber(const string &s) -{ - vector sparts = split(s, '-'); - for(vector::iterator i=sparts.begin(); i!=sparts.end(); ++i) - { - if(i->empty()) - throw invalid_argument("ArticleNumber::ArticleNumber"); +ArticleNumber::ArticleNumber(const string &a): + article(a) +{ } - unsigned nondigit = i->size(); - for(unsigned j=0; jsize(); ++j) - if(!isdigit((*i)[j])) - { - nondigit = j; - break; - } - - if(!nondigit || nondigitsize()-1) - throw invalid_argument("ArticleNumber::ArticleNumber"); - - Part part; - part.number = lexical_cast(i->substr(0, nondigit)); - part.letter = nondigitsize() ? (*i)[nondigit] : 0; - parts.push_back(part); - } -} +ArticleNumber::ArticleNumber(const string &v, const string &a, const string &p): + vendor(v), + article(a), + part(p) +{ } string ArticleNumber::str() const { string result; - for(vector::const_iterator i=parts.begin(); i!=parts.end(); ++i) + if(!vendor.empty()) { - if(!result.empty()) - result += '-'; - - result += lexical_cast(i->number); - if(i->letter) - result += i->letter; + result += vendor; + result += ' '; + } + result += article; + if(!part.empty()) + { + result += '-'; + result += part; } return result; } -bool ArticleNumber::operator<(const ArticleNumber &other) const -{ - return parts(an) { - if(number!=other.number) - return number>(const LexicalConverter &conv, ArticleNumber &art_nr) -{ - art_nr = ArticleNumber(conv.get()); -} - void operator<<(LexicalConverter &conv, const ArticleNumber &art_nr) { conv.result(art_nr.str());