From d32742eef00d471e5cf934144d65df7f15896b1d Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Mon, 28 Jan 2013 13:43:58 +0800 Subject: [PATCH] Fixes incomplete pinyin --- libpinyin-0.8.x-head.patch | 57 ++++++++++++++++++++++++++++++++++++-- libpinyin.spec | 13 +++++++-- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/libpinyin-0.8.x-head.patch b/libpinyin-0.8.x-head.patch index d5eb9f8..12cde47 100644 --- a/libpinyin-0.8.x-head.patch +++ b/libpinyin-0.8.x-head.patch @@ -1,7 +1,7 @@ From f21bba5df05c174ff91bb89d86b0d383767f99dd Mon Sep 17 00:00:00 2001 From: Peng Wu 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 +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 diff --git a/libpinyin.spec b/libpinyin.spec index 6ac3d7b..0a75570 100644 --- a/libpinyin.spec +++ b/libpinyin.spec @@ -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 - 0.8.0-3 +- Fixes incomplete pinyin + * Wed Dec 12 2012 Peng Wu - 0.8.0-2 - Fixes chewing input