[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/sonnet-multilang/kdecore
From:       Jakub Stachowski <qbast () go2 ! pl>
Date:       2009-03-25 19:00:05
Message-ID: 1238007605.833704.2029.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 944571 by qbast:

Use language from last token as fallback too.



 M  +9 -5      languagefilter.cpp  


--- branches/work/sonnet-multilang/kdecore/languagefilter.cpp #944570:944571
@@ -38,7 +38,7 @@
     LanguageFilterPrivate(AbstractTokenizer* s) : source(s) { gl.setLimits(3, 0.1); \
}  ~LanguageFilterPrivate() { delete source; }
     
-    QString doIdentify(const QString& text, const QString& fallback) const;
+    QString doIdentify(const QString& text, const QStringList& fallbacks) const;
     QString mainLanguage() const;
     
     AbstractTokenizer* source;
@@ -46,12 +46,13 @@
     
     mutable QString lastLanguage;
     mutable QString cachedMainLanguage;
+    QString prevLanguage;
     
     GuessLanguage gl;
     Speller sp;
 };
 
-QString LanguageFilterPrivate::doIdentify(const QString& text, const QString& \
fallback) const +QString LanguageFilterPrivate::doIdentify(const QString& text, const \
QStringList& fallbacks) const  {
     QStringList candidates=gl.identify(text);
     
@@ -60,7 +61,7 @@
     if (candidates.size() == 1) return candidates.front();
     
     // let's sort it out with dictionary-based guesser
-    candidates += fallback;
+    candidates += fallbacks;
     candidates.removeDuplicates();
     QString ret=detectLanguage(text, candidates);
     kDebug() << "Dict got " << ret << " using " << candidates;
@@ -69,7 +70,7 @@
 
 QString LanguageFilterPrivate::mainLanguage() const
 {
-    if (cachedMainLanguage.isNull())  \
cachedMainLanguage=doIdentify(source->buffer(), Speller().defaultLanguage()); +    if \
(cachedMainLanguage.isNull())  cachedMainLanguage=doIdentify(source->buffer(), \
QStringList(Speller().defaultLanguage()));  return cachedMainLanguage;
 }
 
@@ -78,6 +79,7 @@
 
 LanguageFilter::LanguageFilter(AbstractTokenizer* source) : d(new \
LanguageFilterPrivate(source))  {
+    d->prevLanguage=Speller().defaultLanguage();
 }
 
 bool LanguageFilter::hasNext() const
@@ -94,13 +96,15 @@
 QStringRef LanguageFilter::next() 
 {
     d->lastToken=d->source->next();
+    d->prevLanguage=d->lastLanguage;
     d->lastLanguage=QString();
     return d->lastToken;
 }
 
 QString LanguageFilter::language() const
 {
-    if (d->lastLanguage.isNull()) \
d->lastLanguage=d->doIdentify(d->lastToken.toString(), d->mainLanguage()); +    if \
(d->lastLanguage.isNull())  +        \
d->lastLanguage=d->doIdentify(d->lastToken.toString(), QStringList() << \
d->mainLanguage() << d->prevLanguage);  return d->lastLanguage;
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic