Skip to content

Commit 5cd44bd

Browse files
committed
refactor: time report supports minutes
1 parent 59fe95d commit 5cd44bd

File tree

2 files changed

+33
-8
lines changed

2 files changed

+33
-8
lines changed

src/lib/Support/Chrono.hpp

+31-7
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,46 @@
2020
namespace clang {
2121
namespace mrdocs {
2222

23+
/** Formats a duration into a human-readable string.
24+
25+
This function takes a `std::chrono::duration` object and formats it into a
26+
string that represents the duration in a human-readable format. The format
27+
includes hours, minutes, seconds, and milliseconds as appropriate.
28+
29+
@param delta The duration to format.
30+
@return A string representing the formatted duration.
31+
*/
2332
template <class Rep, class Period>
2433
std::string
2534
format_duration(
2635
std::chrono::duration<Rep, Period> delta)
2736
{
28-
auto delta_ms = std::chrono::duration_cast<
29-
std::chrono::milliseconds>(delta).count();
30-
if (delta_ms < 1000)
37+
auto delta_ms = std::chrono::duration_cast<std::chrono::milliseconds>(delta);
38+
if (delta < std::chrono::seconds(1))
3139
{
32-
return fmt::format("{} ms", delta_ms);
40+
return fmt::format("{}ms", delta_ms.count());
3341
}
34-
else
42+
43+
auto delta_s = std::chrono::duration_cast<std::chrono::seconds>(delta);
44+
if (delta < std::chrono::minutes(1))
3545
{
36-
double const delta_s = static_cast<double>(delta_ms) / 1000.0;
37-
return fmt::format("{:.02f} s", delta_s);
46+
delta_ms -= delta_s;
47+
return fmt::format("{}s {}ms", delta_s.count(), delta_ms.count());
3848
}
49+
50+
auto delta_min = std::chrono::duration_cast<std::chrono::minutes>(delta);
51+
if (delta < std::chrono::hours(1))
52+
{
53+
delta_ms -= delta_s;
54+
delta_s -= delta_min;
55+
return fmt::format("{}min {}s {}ms", delta_min.count(), delta_s.count(), delta_ms.count());
56+
}
57+
58+
auto delta_h = std::chrono::duration_cast<std::chrono::hours>(delta);
59+
delta_ms -= delta_s;
60+
delta_s -= delta_min;
61+
delta_min -= delta_h;
62+
return fmt::format("{}h {}min {}s {}ms", delta_h.count(), delta_min.count(), delta_s.count(), delta_ms.count());
3963
}
4064

4165
} // mrdocs

src/lib/Support/Generator.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ build(Corpus const& corpus) const
6767
corpus.config->configDir));
6868
MRDOCS_TRY(build(absOutput, corpus));
6969
report::info(
70-
"Generated documentation in {}",
70+
"Generated {} documentation in {}",
71+
this->displayName(),
7172
format_duration(clock_type::now() - start_time));
7273
return {};
7374
}

0 commit comments

Comments
 (0)