Fixes incomplete pinyin

This commit is contained in:
Peng Wu 2013-01-28 13:43:58 +08:00
parent 29ada9f433
commit d32742eef0
2 changed files with 66 additions and 4 deletions

View File

@ -1,7 +1,7 @@
From f21bba5df05c174ff91bb89d86b0d383767f99dd Mon Sep 17 00:00:00 2001
From: Peng Wu <alexepico@gmail.com>
Date: Tue, 11 Dec 2012 14:15:49 +0800
Subject: [PATCH] a safe guard for chewing
Subject: [PATCH 1/2] a safe guard for chewing
---
src/storage/phrase_index.h | 15 +++++++--------
@ -36,5 +36,58 @@ index acc7c4a..bc6aad2 100644
}
--
1.7.11.7
1.8.1
From 095fbb86d0063dd22230c6aff879fd6eca745d2d Mon Sep 17 00:00:00 2001
From: Peng Wu <alexepico@gmail.com>
Date: Fri, 25 Jan 2013 12:16:19 +0800
Subject: [PATCH 2/2] fixes incomplete pinyin
---
src/storage/pinyin_phrase2.h | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/src/storage/pinyin_phrase2.h b/src/storage/pinyin_phrase2.h
index ba658f0..d5042aa 100644
--- a/src/storage/pinyin_phrase2.h
+++ b/src/storage/pinyin_phrase2.h
@@ -132,6 +132,10 @@ inline void compute_lower_value2(pinyin_option_t options,
* to check lower bound.
*/
+ /* as chewing zero middle is the first item, and its value is zero,
+ * no need to adjust it for incomplete pinyin.
+ */
+
/* compute lower final */
sel = aKey.m_final;
for (k = aKey.m_final - 1; k >= CHEWING_ZERO_FINAL; --k) {
@@ -183,10 +187,20 @@ inline void compute_upper_value2(pinyin_option_t options,
}
aKey.m_initial = (ChewingInitial)sel;
- /* compute upper middle, skipped as no fuzzy pinyin here.
- * if needed in future, still use pinyin_compare_middle_and_final2
- * to check upper bound.
- */
+ /* adjust it for incomplete pinyin. */
+
+ /* compute upper middle */
+ sel = aKey.m_middle;
+ for (k = aKey.m_middle + 1; k <= CHEWING_LAST_MIDDLE; ++k) {
+ if (0 != pinyin_compare_middle_and_final2
+ (options,
+ (ChewingMiddle)aKey.m_middle, (ChewingMiddle)k,
+ (ChewingFinal)aKey.m_final, (ChewingFinal)aKey.m_final))
+ break;
+ else
+ sel = k;
+ }
+ aKey.m_middle = (ChewingMiddle)sel;
/* compute upper final */
sel = aKey.m_final;
--
1.8.1

View File

@ -1,12 +1,16 @@
%global snapshot 1
Name: libpinyin
Version: 0.8.0
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Library to deal with pinyin
License: GPLv2+
URL: https://github.com/libpinyin/libpinyin
Source0: https://github.com/downloads/libpinyin/libpinyin/%{name}-%{version}.tar.gz
%if %snapshot
Patch0: libpinyin-0.8.x-head.patch
%endif
BuildRequires: libdb-devel, glib2-devel
Requires: %{name}-data = %{version}-%{release}
@ -43,8 +47,10 @@ The %{name}-tools package contains tools.
%prep
%setup -q
%patch0 -p1 -b .head
%if %snapshot
%patch0 -p1 -b .head
%endif
%build
%configure --disable-static
@ -86,6 +92,9 @@ find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
%{_mandir}/man1/*.1.*
%changelog
* Mon Jan 28 2013 Peng Wu <pwu@redhat.com> - 0.8.0-3
- Fixes incomplete pinyin
* Wed Dec 12 2012 Peng Wu <pwu@redhat.com> - 0.8.0-2
- Fixes chewing input