mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-11 23:58:18 +00:00
util: Add function FormatParagraph to format paragraph to fixed-width
This is to be used for the `-version` and `-help` messages.
This commit is contained in:
parent
96b733e996
commit
97789d374c
@ -351,4 +351,15 @@ BOOST_AUTO_TEST_CASE(test_ParseInt32)
|
|||||||
BOOST_CHECK(!ParseInt32("32482348723847471234", NULL));
|
BOOST_CHECK(!ParseInt32("32482348723847471234", NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(test_FormatParagraph)
|
||||||
|
{
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph("", 79, 0), "");
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph("test", 79, 0), "test");
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph(" test", 79, 0), "test");
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph("test test", 79, 0), "test test");
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph("test test", 4, 0), "test\ntest");
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph("testerde test ", 4, 0), "testerde\ntest");
|
||||||
|
BOOST_CHECK_EQUAL(FormatParagraph("test test", 4, 4), "test\n test");
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
35
src/util.cpp
35
src/util.cpp
@ -1407,3 +1407,38 @@ std::string DateTimeStrFormat(const char* pszFormat, int64_t nTime)
|
|||||||
ss << boost::posix_time::from_time_t(nTime);
|
ss << boost::posix_time::from_time_t(nTime);
|
||||||
return ss.str();
|
return ss.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string FormatParagraph(const std::string in, size_t width, size_t indent)
|
||||||
|
{
|
||||||
|
std::stringstream out;
|
||||||
|
size_t col = 0;
|
||||||
|
size_t ptr = 0;
|
||||||
|
while(ptr < in.size())
|
||||||
|
{
|
||||||
|
// Find beginning of next word
|
||||||
|
ptr = in.find_first_not_of(' ', ptr);
|
||||||
|
if (ptr == std::string::npos)
|
||||||
|
break;
|
||||||
|
// Find end of next word
|
||||||
|
size_t endword = in.find_first_of(' ', ptr);
|
||||||
|
if (endword == std::string::npos)
|
||||||
|
endword = in.size();
|
||||||
|
// Add newline and indentation if this wraps over the allowed width
|
||||||
|
if (col > 0)
|
||||||
|
{
|
||||||
|
if ((col + endword - ptr) > width)
|
||||||
|
{
|
||||||
|
out << '\n';
|
||||||
|
for(size_t i=0; i<indent; ++i)
|
||||||
|
out << ' ';
|
||||||
|
col = 0;
|
||||||
|
} else
|
||||||
|
out << ' ';
|
||||||
|
}
|
||||||
|
// Append word
|
||||||
|
out << in.substr(ptr, endword - ptr);
|
||||||
|
col += endword - ptr;
|
||||||
|
ptr = endword;
|
||||||
|
}
|
||||||
|
return out.str();
|
||||||
|
}
|
||||||
|
@ -286,6 +286,11 @@ inline std::string HexStr(const T& vch, bool fSpaces=false)
|
|||||||
return HexStr(vch.begin(), vch.end(), fSpaces);
|
return HexStr(vch.begin(), vch.end(), fSpaces);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Format a paragraph of text to a fixed width, adding spaces for
|
||||||
|
* indentation to any added line.
|
||||||
|
*/
|
||||||
|
std::string FormatParagraph(const std::string in, size_t width=79, size_t indent=0);
|
||||||
|
|
||||||
inline int64_t GetPerformanceCounter()
|
inline int64_t GetPerformanceCounter()
|
||||||
{
|
{
|
||||||
int64_t nCounter = 0;
|
int64_t nCounter = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user