diff --git a/src/bookmarks.cpp b/src/bookmarks.cpp index 505d272..f13cdbc 100644 --- a/src/bookmarks.cpp +++ b/src/bookmarks.cpp @@ -21,9 +21,9 @@ using std::chrono::system_clock; using std::chrono::duration_cast; using std::chrono::seconds; -void export_bookmarks(const vector &entries, ostream &out) +void Export::Bookmarks::print() const { - out << "\n" + _out << "\n" "\n" "Bookmarks from remwharead\n" @@ -31,22 +31,23 @@ void export_bookmarks(const vector &entries, ostream &out) "

\n" "

remwharead

\n" "

\n"; - for (const Database::entry & entry : entries) - { - string title = entry.title; - if (title.empty()) - { - title = entry.uri; - } - system_clock::time_point tp = entry.datetime; - system_clock::duration duration = tp.time_since_epoch(); - string time_seconds = - std::to_string(duration_cast(duration).count()); - out << "

" - << title << "\n"; + for (const Database::entry & entry : _entries) + { + string title = entry.title; + if (title.empty()) + { + title = entry.uri; } - out << "

\n" - << "

\n"; + system_clock::time_point tp = entry.datetime; + system_clock::duration duration = tp.time_since_epoch(); + string time_seconds = + std::to_string(duration_cast(duration).count()); + + _out << "

" + << title << "\n"; + } + _out << "

\n" + << "

\n"; } diff --git a/src/export.hpp b/src/export.hpp index 5a081c6..654439b 100644 --- a/src/export.hpp +++ b/src/export.hpp @@ -35,6 +35,8 @@ namespace Export explicit ExportBase(const vector &entries, ostream &out = cout); + virtual void print() const = 0; + protected: const vector &_entries; ostream &_out; @@ -45,19 +47,20 @@ namespace Export public: using ExportBase::ExportBase; - void print() const; + virtual void print() const override; private: //! replaces " with "". const string quote(string field) const; }; + class AsciiDoc : protected ExportBase { public: using ExportBase::ExportBase; - void print() const; + void print() const override; private: using tagmap = std::map>; @@ -72,12 +75,14 @@ namespace Export const string get_day(const Database::entry &entry) const; const string get_time(const Database::entry &entry) const; }; + + //! Export as Netscape bookmark file. + class Bookmarks : protected ExportBase + { + public: + using ExportBase::ExportBase; + virtual void print() const override; + }; } - - -//! Export as Netscape bookmark file. -void export_bookmarks(const vector &entries, - ostream &out = cout); - #endif // REMWHAREAD_EXPORT_HPP diff --git a/src/main.cpp b/src/main.cpp index ddd9a46..c21581a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -124,12 +124,12 @@ int main(const int argc, const char *argv[]) { if (file.is_open()) { - export_bookmarks(entries, file); + Export::Bookmarks(entries, file).print(); file.close(); } else { - export_bookmarks(entries); + Export::Bookmarks(entries).print(); } break; } diff --git a/tests/test_bookmarks.cpp b/tests/test_bookmarks.cpp index a12039f..4dff41e 100644 --- a/tests/test_bookmarks.cpp +++ b/tests/test_bookmarks.cpp @@ -46,7 +46,7 @@ SCENARIO ("The Bookmarks export works correctly") try { std::ostringstream output; - export_bookmarks({ entry }, output); + Export::Bookmarks({ entry }, output).print(); const string bookmarks = output.str(); const regex re_top(