lib/language_detection.rb in language_detection-0.0.1 vs lib/language_detection.rb in language_detection-0.0.2

- old
+ new

@@ -1,23 +1,22 @@ require "language_detection/version" +require "language_detection/language" require "ffi" -require "hashr" module LanguageDetection # TODO: Allow language hint # def self.perform(text, is_plain_text = false) result = language_detection(text.to_s, is_plain_text) language = parse_result(result, result.members - [:details]) - language[:details] = [] - details = FFI::Pointer.new(LanguageDetection::Detail, result[:details]) + details = FFI::Pointer.new(LanguageDetection::DetailStruct, result[:details]) 3.times do |i| - detail = parse_result(LanguageDetection::Detail.new(details[i])) - language[:details] << detail unless detail.code == 'un' + detail = parse_result(LanguageDetection::DetailStruct.new(details[i])) + language.details << detail unless detail.code == 'un' end language end @@ -26,29 +25,29 @@ end private def self.parse_result(result, members = result.members) - Hashr.new(Hash[ members.map {|member| [member.to_sym, result[member]]} ]) + Language.new(Hash[ members.map {|member| [member.to_sym, result[member]]} ]) end extend FFI::Library - class Detail < FFI::Struct + class DetailStruct < FFI::Struct layout :name, :string, :code, :string, :percent, :int, :score, :double end - class Language < FFI::Struct + class LanguageStruct < FFI::Struct layout :name, :string, :code, :string, :reliable, :bool, :text_bytes, :int, :details, :pointer end ffi_lib File.expand_path("../../ext/cld/cld.so", __FILE__) - attach_function "language_detection","language_detection", [:buffer_in, :bool], Language.by_value + attach_function "language_detection","language_detection", [:buffer_in, :bool], LanguageStruct.by_value end