hunspell-ffi 0.1.2 → 0.1.3.alpha
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.
- data/lib/hunspell-ffi.rb +26 -4
- data/test/test_hunspell.rb +9 -0
- metadata +4 -3
data/lib/hunspell-ffi.rb
CHANGED
|
@@ -7,23 +7,45 @@ class Hunspell
|
|
|
7
7
|
attach_function :Hunspell_create, [:string, :string], :pointer
|
|
8
8
|
attach_function :Hunspell_spell, [:pointer, :string], :bool
|
|
9
9
|
attach_function :Hunspell_suggest, [:pointer, :pointer, :string], :int
|
|
10
|
+
attach_function :Hunspell_add, [:pointer, :string], :int
|
|
11
|
+
attach_function :Hunspell_add_with_affix, [:pointer, :string, :string], :int
|
|
12
|
+
attach_function :Hunspell_remove, [:pointer, :string], :int
|
|
10
13
|
end
|
|
11
14
|
|
|
12
|
-
# TODO RDoc
|
|
13
|
-
|
|
14
15
|
def initialize(affpath, dicpath)
|
|
16
|
+
warn("Hunspell could not find aff-file #{affpath}") unless File.exist?(affpath)
|
|
17
|
+
warn("Hunspell could not find dic-file #{affpath}") unless File.exist?(dicpath)
|
|
15
18
|
@handler = C.Hunspell_create(affpath, dicpath)
|
|
16
19
|
end
|
|
17
20
|
|
|
21
|
+
# Returns true for a known word or false.
|
|
18
22
|
def spell(word)
|
|
19
23
|
C.Hunspell_spell(@handler, word)
|
|
20
24
|
end
|
|
21
|
-
alias_method :check, :spell
|
|
25
|
+
alias_method :check, :spell
|
|
22
26
|
|
|
27
|
+
# Returns an array with suggested words or returns and empty array.
|
|
23
28
|
def suggest(word)
|
|
24
29
|
ptr = FFI::MemoryPointer.new(:pointer, 1)
|
|
25
30
|
len = Hunspell::C.Hunspell_suggest(@handler, ptr, word)
|
|
26
31
|
str_ptr = ptr.read_pointer
|
|
27
32
|
str_ptr.null? ? [] : str_ptr.get_array_of_string(0, len).compact
|
|
28
|
-
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Add word to the run-time dictionary
|
|
36
|
+
def add(word)
|
|
37
|
+
C.Hunspell_add(@handler, word)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Add word to the run-time dictionary with affix flags of
|
|
41
|
+
# the example (a dictionary word): Hunspell will recognize
|
|
42
|
+
# affixed forms of the new word, too.
|
|
43
|
+
def add_with_affix(word, example)
|
|
44
|
+
C.Hunspell_add_with_affix(@handler, word, example)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Remove word from the run-time dictionary
|
|
48
|
+
def remove(word)
|
|
49
|
+
C.Hunspell_remove(@handler, word)
|
|
50
|
+
end
|
|
29
51
|
end
|
data/test/test_hunspell.rb
CHANGED
|
@@ -14,4 +14,13 @@ class TestHunspell < Test::Unit::TestCase
|
|
|
14
14
|
assert_equal ["Baumkuchen"], @dict.suggest("Baumgurken")
|
|
15
15
|
assert_equal [], @dict.suggest("qwss43easd")
|
|
16
16
|
end
|
|
17
|
+
|
|
18
|
+
def test_dict_modifications
|
|
19
|
+
assert @dict.spell("Neuer Kuchen") == false
|
|
20
|
+
@dict.add("Neuer Kuchen")
|
|
21
|
+
assert @dict.spell("Neuer Kuchen") == true
|
|
22
|
+
@dict.remove("Neuer Kuchen")
|
|
23
|
+
assert @dict.spell("Neuer Kuchen") == false
|
|
24
|
+
# TODO test add_with_affix
|
|
25
|
+
end
|
|
17
26
|
end
|
metadata
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hunspell-ffi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
prerelease:
|
|
4
|
+
prerelease: true
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 1
|
|
8
|
-
-
|
|
9
|
-
|
|
8
|
+
- 3
|
|
9
|
+
- alpha
|
|
10
|
+
version: 0.1.3.alpha
|
|
10
11
|
platform: ruby
|
|
11
12
|
authors:
|
|
12
13
|
- Andreas Haller
|