hunspell 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +16 -16
- data/hunspell.c +49 -5
- data/test/test_hunspell.rb +5 -2
- metadata +3 -4
- data/TODO +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c6a59940f13e88d0c5955c9511a371b3b6eb763
|
4
|
+
data.tar.gz: a0ba6b29475923fdd26596a0bf6fb9ffffb27ef7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 802bf32e5a8b2a062d6197d38ec1e90bfc109d11e0a33e302de88ba3f55f953a8415222e5a478bd2d840e4bebf60260326123762188fd2baef7f85a37ce0af6e
|
7
|
+
data.tar.gz: 2fc4ee9fe06af891992768b1de15edc5e6987dd6a7ad26f4187efc5b9dcd374a1b8451be0af7d5352bd307b63499d30caf71a4c680b2447af0392ccb7b9e9fd1
|
data/README.md
CHANGED
@@ -19,28 +19,28 @@ Before installing Hunspell ensure you have the following components already inst
|
|
19
19
|
## INSTALLATION
|
20
20
|
|
21
21
|
The best way to get Hunspell is to use gem package manager
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
```sh
|
23
|
+
gem install hunspell
|
24
|
+
```
|
25
25
|
NOTE: if install fails on newer OSX versions, try this command
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
```sh
|
27
|
+
sudo ARCHFLAGS="-arch x86_64" gem install hunspell
|
28
|
+
```
|
29
29
|
If you want to build Hunspell from scratch grab the source from [here](https://github.com/segabor/Hunspell) and execute the
|
30
30
|
following command
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
```sh
|
32
|
+
ruby extconf.rb && make
|
33
|
+
```
|
34
34
|
|
35
35
|
FreeBSD gotcha: hunspell spell checker package does not deploy its header
|
36
36
|
files. Run gem or ruby command with an extra option:
|
37
|
-
|
38
|
-
|
39
|
-
|
37
|
+
```sh
|
38
|
+
gem install hunspell -- --with-include-dir=<incdir>
|
39
|
+
```
|
40
40
|
or
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
```sh
|
42
|
+
ruby extconf.rb --with-include-dir=<incdir> && make
|
43
|
+
```
|
44
44
|
Replace _incdir_ with the path pointing to hunspell includes.
|
45
45
|
|
46
46
|
## FIRST STEPS
|
@@ -49,7 +49,7 @@ Here's a basic example how to use Hunspell. Cut it and run in ruby.
|
|
49
49
|
|
50
50
|
### example.rb
|
51
51
|
|
52
|
-
```
|
52
|
+
```rb
|
53
53
|
require "rubygems" # import gem package manager
|
54
54
|
gem "hunspell" # load Hunspell module
|
55
55
|
require "Hunspell" # inject Hunspell class to Ruby namespace
|
data/hunspell.c
CHANGED
@@ -75,7 +75,7 @@ static VALUE mHunspellInitialize(VALUE self, VALUE affPath, VALUE dictPath) {
|
|
75
75
|
|
76
76
|
Hunhandle **ptr;
|
77
77
|
Data_Get_Struct(self, Hunhandle *, ptr);
|
78
|
-
|
78
|
+
|
79
79
|
if (!handler) {
|
80
80
|
// crash!
|
81
81
|
rb_raise(rb_eRuntimeError, "Failed to initialize Hunspell.");
|
@@ -103,7 +103,7 @@ static VALUE mHunspellInitialize(VALUE self, VALUE affPath, VALUE dictPath) {
|
|
103
103
|
*/
|
104
104
|
static VALUE mHunspellSpell(VALUE self, VALUE str) {
|
105
105
|
int result;
|
106
|
-
|
106
|
+
|
107
107
|
Hunhandle **ptr;
|
108
108
|
Data_Get_Struct(self, Hunhandle *, ptr);
|
109
109
|
|
@@ -130,7 +130,7 @@ static VALUE mHunspellSuggest(VALUE self, VALUE str) {
|
|
130
130
|
int n, i;
|
131
131
|
char **lst;
|
132
132
|
VALUE ret;
|
133
|
-
|
133
|
+
|
134
134
|
Hunhandle **ptr;
|
135
135
|
Data_Get_Struct(self, Hunhandle *, ptr);
|
136
136
|
|
@@ -159,6 +159,49 @@ static VALUE mHunspellSuggest(VALUE self, VALUE str) {
|
|
159
159
|
|
160
160
|
|
161
161
|
|
162
|
+
/*
|
163
|
+
* Get Morphological analysis of the word
|
164
|
+
*
|
165
|
+
* Input: word (String)
|
166
|
+
* Output: list of analysis results (Array of Strings)
|
167
|
+
*
|
168
|
+
* Example:
|
169
|
+
* sp.analyze("paprika") => [' st:paprika po:noun ts:NOM']
|
170
|
+
*
|
171
|
+
*/
|
172
|
+
static VALUE mHunspellAnalyze(VALUE self, VALUE str) {
|
173
|
+
int n, i;
|
174
|
+
char **lst;
|
175
|
+
VALUE ret;
|
176
|
+
|
177
|
+
Hunhandle **ptr;
|
178
|
+
Data_Get_Struct(self, Hunhandle *, ptr);
|
179
|
+
|
180
|
+
n = Hunspell_analyze(*ptr, &lst, (const char *)StringValueCStr(str));
|
181
|
+
if (n > 0) {
|
182
|
+
const char *enc = Hunspell_get_dic_encoding(*ptr);
|
183
|
+
|
184
|
+
// allocate enough space in new array
|
185
|
+
ret = rb_ary_new2(n);
|
186
|
+
for (i=0; i<n; i++) {
|
187
|
+
// add string to list
|
188
|
+
VALUE rb_str = ENCODED_STR_NEW2(lst[i], enc);
|
189
|
+
rb_ary_push(ret, rb_str);
|
190
|
+
}
|
191
|
+
} else {
|
192
|
+
// create empty array
|
193
|
+
ret = rb_ary_new();
|
194
|
+
}
|
195
|
+
|
196
|
+
#ifdef DEBUG
|
197
|
+
printf("mHunspellSuggest %s -> %d\n", StringValueCStr(str), n);
|
198
|
+
#endif
|
199
|
+
|
200
|
+
return ret;
|
201
|
+
}
|
202
|
+
|
203
|
+
|
204
|
+
|
162
205
|
/*
|
163
206
|
* Returns dictionary encoding
|
164
207
|
*
|
@@ -184,16 +227,17 @@ static VALUE mHunspellEncoding(VALUE self) {
|
|
184
227
|
*/
|
185
228
|
void Init_Hunspell() {
|
186
229
|
VALUE rb_cHunspell;
|
187
|
-
|
230
|
+
|
188
231
|
// create Hunspell class
|
189
232
|
rb_cHunspell = rb_define_class("Hunspell", rb_cObject);
|
190
233
|
|
191
234
|
// register own allocator
|
192
235
|
rb_define_alloc_func(rb_cHunspell, cHunspellAllocate);
|
193
|
-
|
236
|
+
|
194
237
|
// register instance methods
|
195
238
|
rb_define_method(rb_cHunspell, "initialize", mHunspellInitialize, 2);
|
196
239
|
rb_define_method(rb_cHunspell, "spellcheck", mHunspellSpell, 1);
|
197
240
|
rb_define_method(rb_cHunspell, "suggest", mHunspellSuggest, 1);
|
241
|
+
rb_define_method(rb_cHunspell, "analyze", mHunspellAnalyze, 1);
|
198
242
|
rb_define_method(rb_cHunspell, "encoding", mHunspellEncoding, 0);
|
199
243
|
}
|
data/test/test_hunspell.rb
CHANGED
@@ -3,7 +3,7 @@ require "Hunspell"
|
|
3
3
|
|
4
4
|
class HunspellTest < Test::Unit::TestCase
|
5
5
|
def setup
|
6
|
-
@sp = Hunspell.new("test/dict/hu_HU.aff", "test/dict/hu_HU.dic")
|
6
|
+
@sp = Hunspell.new("test/dict/hu_HU.aff", "test/dict/hu_HU.dic")
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_spellcheck
|
@@ -21,5 +21,8 @@ class HunspellTest < Test::Unit::TestCase
|
|
21
21
|
assert !suggestions.include?('paprica')
|
22
22
|
assert suggestions.include?('paprika')
|
23
23
|
end
|
24
|
-
end
|
25
24
|
|
25
|
+
def test_analyze
|
26
|
+
assert @sp.analyze('paprika') == [" st:paprika po:noun ts:NOM"]
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hunspell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gábor SEBESTYÉN
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Hunspell is an easy native Ruby interface to the famous Hunspell spell checker
|
@@ -23,7 +23,6 @@ extra_rdoc_files: []
|
|
23
23
|
files:
|
24
24
|
- LGPL_LICENSE
|
25
25
|
- README.md
|
26
|
-
- TODO
|
27
26
|
- example.rb
|
28
27
|
- extconf.rb
|
29
28
|
- hunspell.c
|
@@ -51,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
50
|
requirements:
|
52
51
|
- hunspell 1.3 or newer
|
53
52
|
rubyforge_project:
|
54
|
-
rubygems_version: 2.
|
53
|
+
rubygems_version: 2.6.11
|
55
54
|
signing_key:
|
56
55
|
specification_version: 4
|
57
56
|
summary: Ruby interface to hunspell spell checker
|
data/TODO
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
- Hunspell tested only with utf8 encoded dictionaries. No idea what will be
|
2
|
-
happening if I use dictionary having other encoding like ISO-8859-2.
|
3
|
-
|
4
|
-
- Native binding actually uses the C API of hunspell library which provides a
|
5
|
-
very basic set of functions. Basically it is enough for my original purposes
|
6
|
-
but likely to change to the much richer C++ API.
|
7
|
-
|
8
|
-
- rdoc
|