Changeset 786 for cpp/frams/util


Ignore:
Timestamp:
05/21/18 14:01:14 (6 years ago)
Author:
Maciej Komosinski
Message:

Improved shortening of long stringified values in error messages

Location:
cpp/frams/util
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/util/extvalue.cpp

    r785 r786  
    305305{
    306306        SString msg = typeDescription();
     307        SString delimit("'");
    307308        switch (type)
    308309        {
    309         case TInt: case TDouble: case TString: case TObj:
    310                 msg += " '";
    311                 msg += sstringShorten(getString(), 30);
    312                 msg += "'";
     310        case TString:
     311                delimit = "\"";
     312        case TInt: case TDouble: case TObj:
     313                msg += " ";
     314                msg += sstringDelimitAndShorten(getString(), 50, (type == TString), delimit, delimit);
    313315        default:;
    314316        }
  • cpp/frams/util/sstringutils.cpp

    r785 r786  
    157157}
    158158
    159 SString sstringShorten(const SString &in, int maxlen)
     159SString sstringDelimitAndShorten(const SString &in, int maxlen, bool show_length, const SString& before, const SString& after)
    160160{
    161161        SString out;
    162162        if (in.len() > maxlen)
    163                 out = in.substr(0, maxlen / 2) + "..." + in.substr(in.len() - maxlen + maxlen / 2) + SString::sprintf(" (length %d)", in.len());
     163                out = in.substr(0, maxlen / 2) + "..." + in.substr(in.len() - maxlen + maxlen / 2);
    164164        else
    165                 out = in;
     165        {
     166                out = in; show_length = false;
     167        }
    166168        sstringQuote(out);
     169        out = before + out + after;
     170        if (show_length)
     171                out += SString::sprintf(" (length %d)", in.len());
    167172        return out;
    168173}
  • cpp/frams/util/sstringutils.h

    r785 r786  
    1919bool strContainsOneOf(const char* str, const char* chars);
    2020bool sstringQuote(SString& target);
    21 SString sstringShorten(const SString &in, int maxlen);
     21SString sstringDelimitAndShorten(const SString &in, int maxlen, bool show_length, const SString& before, const SString& after);
    2222const char* skipQuoteString(const char* txt, const char* limit);
    2323int sstringUnquote(SString &target);
Note: See TracChangeset for help on using the changeset viewer.