From 179ed1917da957b322434a451148cbe32767aee9 Mon Sep 17 00:00:00 2001 From: kelson42 Date: Mon, 16 Apr 2012 19:32:24 +0000 Subject: [PATCH] + Book.getHumanReadableIdFromPath() --- src/common/kiwix/library.cpp | 8 ++++++++ src/common/kiwix/library.h | 4 ++++ src/common/kiwix/manager.cpp | 13 ++++--------- src/common/kiwix/manager.h | 1 + src/common/regexTools.cpp | 13 +++++++++++++ src/common/regexTools.h | 1 + 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/common/kiwix/library.cpp b/src/common/kiwix/library.cpp index 562226e36..080b5e6ce 100644 --- a/src/common/kiwix/library.cpp +++ b/src/common/kiwix/library.cpp @@ -59,6 +59,14 @@ namespace kiwix { return strcmp(a.language.c_str(), b.language.c_str()) < 0; } + std::string Book::getHumanReadableIdFromPath() { + std::string id = removeAccents(path); + replaceRegex(id, "", "^.*/"); + replaceRegex(id, "", "\\.zim[a-z]*$"); + replaceRegex(id, "_", " "); + return id; + } + /* Constructor */ Library::Library(): version(KIWIX_LIBRARY_VERSION) { diff --git a/src/common/kiwix/library.h b/src/common/kiwix/library.h index 8f3493fad..8523bc4b1 100644 --- a/src/common/kiwix/library.h +++ b/src/common/kiwix/library.h @@ -27,6 +27,9 @@ #include #include +#include +#include + #define KIWIX_LIBRARY_VERSION "20110515" using namespace std; @@ -48,6 +51,7 @@ namespace kiwix { static bool sortByCreator(const Book &a, const Book &b); static bool sortByPublisher(const Book &a, const Book &b); static bool sortByLanguage(const Book &a, const Book &b); + string getHumanReadableIdFromPath(); string id; string path; diff --git a/src/common/kiwix/manager.cpp b/src/common/kiwix/manager.cpp index 2474186ea..a90cc01a4 100644 --- a/src/common/kiwix/manager.cpp +++ b/src/common/kiwix/manager.cpp @@ -311,20 +311,15 @@ namespace kiwix { return booksLanguages; } - vector Manager::getBooksCreators() { - std::vector booksCreators; + vector Manager::getBooksIds() { + std::vector booksIds; std::vector::iterator itr; - std::map booksCreatorsMap; - std::sort(library.books.begin(), library.books.end(), kiwix::Book::sortByCreator); for ( itr = library.books.begin(); itr != library.books.end(); ++itr ) { - if (booksCreatorsMap.find(itr->creator) == booksCreatorsMap.end()) { - booksCreatorsMap[itr->creator] = true; - booksCreators.push_back(itr->creator); - } + booksIds.push_back(itr->id); } - return booksCreators; + return booksIds; } vector Manager::getBooksPublishers() { diff --git a/src/common/kiwix/manager.h b/src/common/kiwix/manager.h index 9d415808c..0891f5782 100644 --- a/src/common/kiwix/manager.h +++ b/src/common/kiwix/manager.h @@ -69,6 +69,7 @@ namespace kiwix { vector getBooksLanguages(); vector getBooksCreators(); vector getBooksPublishers(); + vector getBooksIds(); string writableLibraryPath; diff --git a/src/common/regexTools.cpp b/src/common/regexTools.cpp index 225a1d392..70f9f929f 100644 --- a/src/common/regexTools.cpp +++ b/src/common/regexTools.cpp @@ -53,6 +53,19 @@ bool matchRegex(const std::string &content, const std::string ®ex) { return matcher->find(); } +void replaceRegex(std::string &content, const std::string &replacement, const std::string ®ex) { + ucnv_setDefaultName("UTF-8"); + UnicodeString ucontent = UnicodeString(content.c_str()); + UnicodeString ureplacement = UnicodeString(replacement.c_str()); + RegexMatcher *matcher = buildRegex(regex); + matcher->reset(ucontent); + UErrorCode status = U_ZERO_ERROR; + UnicodeString uresult = matcher->replaceAll(ureplacement, status); + std::string tmp; + uresult.toUTF8String(tmp); + content=tmp; +} + void appendToFirstOccurence(std::string &content, const std::string regex, const std::string &replacement) { ucnv_setDefaultName("UTF-8"); UnicodeString ucontent = UnicodeString(content.c_str()); diff --git a/src/common/regexTools.h b/src/common/regexTools.h index 0ef7297e8..cacac0626 100644 --- a/src/common/regexTools.h +++ b/src/common/regexTools.h @@ -26,6 +26,7 @@ #include bool matchRegex(const std::string &content, const std::string ®ex); +void replaceRegex(std::string &content, const std::string &replacement, const std::string ®ex); void appendToFirstOccurence(std::string &content, const std::string regex, const std::string &replacement); #endif