summaryrefslogtreecommitdiff
path: root/src/backend/drivers/cswordlexiconmoduleinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/drivers/cswordlexiconmoduleinfo.cpp')
-rw-r--r--src/backend/drivers/cswordlexiconmoduleinfo.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/backend/drivers/cswordlexiconmoduleinfo.cpp b/src/backend/drivers/cswordlexiconmoduleinfo.cpp
index d523fa0..5b1e704 100644
--- a/src/backend/drivers/cswordlexiconmoduleinfo.cpp
+++ b/src/backend/drivers/cswordlexiconmoduleinfo.cpp
@@ -11,6 +11,7 @@
#include <QFile>
#include <QDataStream>
+#include <QRegExp>
#include <QTextCodec>
#include <QDebug>
@@ -113,3 +114,44 @@ const QStringList &CSwordLexiconModuleInfo::entries() const {
return m_entries;
}
+
+void CSwordLexiconModuleInfo::testForStrongsKeys() {
+ auto & m = module();
+ m.setPosition(sword::TOP);
+ m.increment();
+ QString key = QString::fromUtf8(m.getKeyText());
+ QRegExp rx1("[GH][0-9]+");
+ if (rx1.exactMatch(key)) {
+ m_hasStrongsKeys = true;
+ m_hasLeadingStrongsLetter = true;
+ m_strongsDigitsLength = key.length() - 1;
+ } else {
+ QRegExp rx2("[0-9]+");
+ if (rx2.exactMatch(key)) {
+ m_hasStrongsKeys = true;
+ m_strongsDigitsLength = key.length();
+ }
+ }
+ return;
+}
+
+bool CSwordLexiconModuleInfo:: hasStrongsKeys() const {
+ return m_hasStrongsKeys;
+}
+
+QString CSwordLexiconModuleInfo::normalizeStrongsKey(const QString &key) const {
+
+ QRegExp rx("([GH]*)([0-9]+)");
+ if (! rx.exactMatch(key))
+ return key;
+ QString StrongsChar = rx.cap(1);
+ QString digits = rx.cap(2);
+
+ while (digits.length() < m_strongsDigitsLength)
+ digits = "0" +digits;
+ QString newKey = digits;
+ if (m_hasLeadingStrongsLetter)
+ newKey = StrongsChar + digits;
+ return newKey;
+}
+