hunspell-ffi 0.1.2

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.
@@ -0,0 +1,29 @@
1
+ = hunspell-ffi
2
+
3
+ A Ruby FFI interface to the Hunspell spelling checker
4
+
5
+ It should work wherever Ruby FFI works (tested on Ruby 1.9.2, 1.8.7, JRuby 1.5.1).
6
+
7
+ == Installation
8
+ 1. Install hunspell (OSX: 'brew install hunspell' Debian: 'apt-get install hunspell')
9
+ 2. gem install hunspell-ffi
10
+
11
+ == Usage
12
+ require 'hunspell-ffi'
13
+ dict = Hunspell.new("path/to/cakes.aff", "path/to/cakes.dic")
14
+ dict.spell("Baumkuchen") # => true same as #check
15
+ dict.spell("Bomcuken") # => false
16
+ dict.suggest("Baumgurken") # => ["Baumkuchen"]
17
+ dict.suggest("qwss43easd") # => []
18
+
19
+ == Author
20
+ Andreas Haller
21
+ andreashaller@gmail.com
22
+
23
+ == License
24
+ Hereby placed under public domain, do what you want, just do not hold me accountable...
25
+
26
+ == TODO
27
+ Add other hunspell methods (add, remove, analyze, stem ...)
28
+
29
+ Test on Windows
@@ -0,0 +1,6 @@
1
+ require 'rake/testtask'
2
+ task :default => [:test]
3
+ Rake::TestTask.new(:test) do |t|
4
+ t.test_files = FileList['test/test_*.rb']
5
+ t.ruby_opts = ['-rubygems -I.'] if defined? Gem
6
+ end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+ require 'ffi'
3
+ class Hunspell
4
+ module C
5
+ extend FFI::Library
6
+ ffi_lib ['libhunspell', 'libhunspell-1.2', 'libhunspell-1.2.so.0']
7
+ attach_function :Hunspell_create, [:string, :string], :pointer
8
+ attach_function :Hunspell_spell, [:pointer, :string], :bool
9
+ attach_function :Hunspell_suggest, [:pointer, :pointer, :string], :int
10
+ end
11
+
12
+ # TODO RDoc
13
+
14
+ def initialize(affpath, dicpath)
15
+ @handler = C.Hunspell_create(affpath, dicpath)
16
+ end
17
+
18
+ def spell(word)
19
+ C.Hunspell_spell(@handler, word)
20
+ end
21
+ alias_method :check, :spell
22
+
23
+ def suggest(word)
24
+ ptr = FFI::MemoryPointer.new(:pointer, 1)
25
+ len = Hunspell::C.Hunspell_suggest(@handler, ptr, word)
26
+ str_ptr = ptr.read_pointer
27
+ str_ptr.null? ? [] : str_ptr.get_array_of_string(0, len).compact
28
+ end
29
+ end
File without changes
@@ -0,0 +1,21 @@
1
+ 20
2
+ Apfelkuchen
3
+ Baumkuchen
4
+ Bienenstich
5
+ Butterkuchen
6
+ Donauwelle
7
+ Eierschecke
8
+ Guglhupf
9
+ Hefekuchen
10
+ Käsekuchen
11
+ Marmorkuchen
12
+ Obstkuchen
13
+ Panettone
14
+ Pflaumenkuchen
15
+ Russischer Zupfkuchen
16
+ Rührkuchen
17
+ Sandkuchen
18
+ Schmandkuchen
19
+ Stollen
20
+ Streuselkuchen
21
+ Zwiebelkuchen
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ require "test/unit"
3
+ require File.expand_path(File.dirname(__FILE__)) + '/../lib/hunspell-ffi'
4
+ class TestHunspell < Test::Unit::TestCase
5
+ def setup
6
+ @dict_dir = File.dirname(__FILE__)
7
+ @dict = Hunspell.new("#{@dict_dir}/cakes.aff", "#{@dict_dir}/cakes.dic")
8
+ end
9
+
10
+ def test_basic_spelling
11
+ assert @dict.spell("Baumkuchen") == true
12
+ assert @dict.check("Baumkuchen") == true # check alias
13
+ assert @dict.spell("Bomcuken") == false
14
+ assert_equal ["Baumkuchen"], @dict.suggest("Baumgurken")
15
+ assert_equal [], @dict.suggest("qwss43easd")
16
+ end
17
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hunspell-ffi
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 2
9
+ version: 0.1.2
10
+ platform: ruby
11
+ authors:
12
+ - Andreas Haller
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-06 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: ffi
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 6
31
+ - 3
32
+ version: 0.6.3
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description:
36
+ email:
37
+ - andreashaller@gmail.com
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files: []
43
+
44
+ files:
45
+ - test/cakes.aff
46
+ - test/cakes.dic
47
+ - test/test_hunspell.rb
48
+ - lib/hunspell-ffi.rb
49
+ - Rakefile
50
+ - README.rdoc
51
+ has_rdoc: true
52
+ homepage: http://github.com/ahaller/hunspell-ffi
53
+ licenses: []
54
+
55
+ post_install_message:
56
+ rdoc_options: []
57
+
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 1
75
+ - 3
76
+ - 6
77
+ version: 1.3.6
78
+ requirements: []
79
+
80
+ rubyforge_project:
81
+ rubygems_version: 1.3.7
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: A Ruby FFI interface to the Hunspell spelling checker
85
+ test_files:
86
+ - test/test_hunspell.rb