Class: VinaryTree::Liblevenshtein::Transducer
- Inherits:
-
Object
- Object
- VinaryTree::Liblevenshtein::Transducer
- Defined in:
- lib/vinary_tree/liblevenshtein.rb
Constant Summary collapse
- STANDARD =
0- TRANSPOSITION =
1- MERGE_AND_SPLIT =
2- DAMERAU_LEVENSHTEIN =
3
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(dictionary, algorithm: STANDARD) ⇒ Transducer
constructor
A new instance of Transducer.
- #query(text, maximum_distance, order: 0) ⇒ Object
- #query_bytes(bytes, maximum_distance) ⇒ Object
- #query_pattern(pattern, maximum_distance) ⇒ Object
- #query_u64(tokens, maximum_distance) ⇒ Object
Constructor Details
#initialize(dictionary, algorithm: STANDARD) ⇒ Transducer
Returns a new instance of Transducer.
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/vinary_tree/liblevenshtein.rb', line 97 def initialize(dictionary, algorithm: STANDARD) raise ArgumentError, "dictionary must respond to with_resource" unless dictionary.respond_to?(:with_resource) output = Native.pointer_output dictionary.with_resource do |context, vtable| resource = Native::VtResource.malloc resource.context = context resource.vtable = vtable Liblevenshtein.check(Native.llev_transducer_new(resource, algorithm, output)) end @handle = ConcurrentHandle.new(Native.read_pointer(output), Native.method(:llev_transducer_free)) ObjectSpace.define_finalizer(self, ConcurrentHandle.finalizer(@handle)) end |
Instance Method Details
#close ⇒ Object
133 134 135 136 137 |
# File 'lib/vinary_tree/liblevenshtein.rb', line 133 def close @handle.close ObjectSpace.undefine_finalizer(self) nil end |
#query(text, maximum_distance, order: 0) ⇒ Object
110 111 112 |
# File 'lib/vinary_tree/liblevenshtein.rb', line 110 def query(text, maximum_distance, order: 0) start_query(:llev_transducer_query_utf8, text.b, maximum_distance, order) end |
#query_bytes(bytes, maximum_distance) ⇒ Object
114 115 116 |
# File 'lib/vinary_tree/liblevenshtein.rb', line 114 def query_bytes(bytes, maximum_distance) start_query(:llev_transducer_query_bytes, bytes.b, maximum_distance, 0) end |
#query_pattern(pattern, maximum_distance) ⇒ Object
123 124 125 126 127 128 129 130 131 |
# File 'lib/vinary_tree/liblevenshtein.rb', line 123 def query_pattern(pattern, maximum_distance) with_pointer do |pointer| pattern.__send__(:with_pointer) do |pattern_pointer| output = Native.pointer_output Liblevenshtein.check(Native.llev_transducer_query_pattern(pointer, pattern_pointer, maximum_distance, output)) Query.new(Native.read_pointer(output)) end end end |
#query_u64(tokens, maximum_distance) ⇒ Object
118 119 120 121 |
# File 'lib/vinary_tree/liblevenshtein.rb', line 118 def query_u64(tokens, maximum_distance) packed = tokens.pack("Q*") start_query(:llev_transducer_query_u64, packed, maximum_distance, 0, tokens.length) end |