Thank you, Kevin.
I attach a file of differences from 0.60.5, covering the three procedures to
which I made changes.
Regards,
Ciarán.
----- Original Message -----
From: "Kevin Atkinson" <[email protected]>
To: "Ciarán Ó Duibhín" <[email protected]>
Cc: <[email protected]>
Sent: Sunday, June 23, 2013 5:04 PM
Subject: Re: [aspell-devel] Tokenization of words containing hyphens
Hi Ciarán,
Thanks for looking into this. I am very busy with other things, but will
try to more carefully read your post sometime in the next couple of weeks
and offer feedback.
In order to do a full code review I need a more complete picture of the
changes you made. The best way to do this is to post a patch (preferably
in unified diff format) of your changes to the list.
Thanks Again,
(Aspell Author) Kevin
--- C:\deántús\córais\aspell-0.60.5\modules\tokenizer\basic.cpp 2004-04-13
08:13:40 +0100
+++ C:\deántús\córais\aspell-0.60.5-msvc\modules\tokenizer\basic.cpp
2013-06-23 21:58:57 +0100
@@ -41,6 +41,7 @@
if (is_begin(*cur) && is_word(cur[1]))
{
+ word.append(*cur);
cur_pos += cur->width;
++cur;
}
--- C:\deántús\córais\aspell-0.60.5\modules\speller\default\language.cpp
2005-02-20 21:47:08 +0000
+++ C:\deántús\córais\aspell-0.60.5-msvc\modules\speller\default\language.cpp
2013-06-23 22:01:18 +0100
@@ -441,7 +441,6 @@
}
while (*word && *inlist && *word == *inlist) ++word, ++inlist;
if (*inlist) goto try_upper;
- if (end && lang->special(*word).end) ++word;
if (*word) goto try_upper;
return true;
try_upper:
@@ -449,7 +448,6 @@
inlist = inlist0;
while (*word && *inlist && *word == lang->to_upper(*inlist)) ++word,
++inlist;
if (*inlist) goto fail;
- if (end && lang->special(*word).end) ++word;
if (*word) goto fail;
} else { // case_insensitive
@@ -457,14 +455,12 @@
while (*word && *inlist &&
lang->to_upper(*word) == lang->to_upper(*inlist)) ++word, ++inlist;
if (*inlist) goto fail;
- if (end && lang->special(*word).end) ++word;
if (*word) goto fail;
}
return true;
fail:
- if (begin && lang->special(*word0).begin) {++word0; goto try_again;}
return false;
}
--- C:\deántús\córais\aspell-0.60.5\modules\speller\default\speller_impl.cpp
2005-01-17 10:19:16 +0000
+++
C:\deántús\córais\aspell-0.60.5-msvc\modules\speller\default\speller_impl.cpp
2013-06-23 21:54:26 +0100
@@ -181,6 +181,39 @@
clear_check_info(*ci);
bool res = check2(word, try_uppercase, *ci, gi);
if (res) return true;
+ unsigned i=0;
+ while (*(word+i)!= 0) {
+ if ((i > 0) && (i < word_end-word-1) && (*(word+i)=='-')) {
+ if (lang_->special('-').end) { /* test up to hyphen as prefix, test
remainder recursively as word */
+ char t = *(word+i+1);
+ *(word+i+1) = (char) 0;
+ if (check2(word, try_uppercase, *ci, gi)) {
+ *(word+i+1) = t;
+ if (check(word+i+1, word_end, try_uppercase,
run_together_limit, ci, gi))
+ return true;
+ }
+ else
+ *(word+i+1) = t;
+ }
+ if (lang_->special('-').middle) { /* test up to hyphen as word, test
remainder recursively as word, then as suffix */
+ *(word+i) = (char) 0;
+ if (check2(word, try_uppercase, *ci, gi)) {
+ *(word+i) = '-';
+ if (check(word+i+1, word_end, try_uppercase,
run_together_limit, ci, gi))
+ return true;
+ else {
+ if (lang_->special('-').begin) {
+ if (check(word+i, word_end,
try_uppercase, run_together_limit, ci, gi))
+ return true;
+ }
+ }
+ }
+ else
+ *(word+i) = '-';
+ }
+ }
+ ++i;
+ }
if (run_together_limit <= 1) return false;
enum {Yes, No, Unknown} is_title = try_uppercase ? Yes : Unknown;
for (char * i = word + run_together_min_;
_______________________________________________
Aspell-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/aspell-devel