string_language 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d17acb6f2c8786819fd554341735aea3f4105181
4
+ data.tar.gz: ab0844adc17ede08a03adc57947e8d2dbff8957d
5
+ SHA512:
6
+ metadata.gz: 85f9592e85ddf547daec1511dfef505cfa1a8f74fa0cfb20271b232fa6667b94bbc6401c7779aa222a8f3f0279d84e1ce2e7d6e5cc8188182fce8d5c6f253bcb
7
+ data.tar.gz: fd68023e7cef2b1091767022006f79b2a672fe8205c81cd946f7c2a5620354649f5d4fee3ec30d938ac5658df30ace2d67fddb9390d8ef1413e2578aa4095cf4
@@ -0,0 +1,107 @@
1
+ # @author Aad Schippers <aad@solidam.com>
2
+
3
+ require 'curb'
4
+ require 'open-uri'
5
+
6
+ class GoogleTranslator
7
+
8
+ EMPTY_GOOGLE_STRING = "[ [[\"#{__FILE__} error: empty or erroneous response from Google Translate\"]], [] ]"
9
+
10
+ attr_accessor :input, :input_language, :output_language, :google_array, :google_string
11
+ attr_accessor :output, :locale
12
+
13
+ def initalize
14
+ self.locale = 'nl'
15
+ end
16
+
17
+ def translate input, input_language='auto', output_language=locale
18
+
19
+ self.input = input
20
+ self.input_language = input_language
21
+ self.output_language = output_language
22
+
23
+ ask_google
24
+
25
+ # return the untranslated input when it is translated to white space only
26
+ self.output = translation.match( /^\s*$/ ) ? input : translation
27
+ end
28
+
29
+ def language input
30
+
31
+ self.input = input
32
+ self.input_language = 'auto'
33
+ self.output_language = locale
34
+
35
+ ask_google
36
+
37
+ google_array[-2].flatten[0]
38
+ end
39
+
40
+ def translation
41
+
42
+ # Google Translate does not always respect surrounding space and quotes. This gem does.
43
+ prefix + translated_middle + suffix
44
+ end
45
+
46
+ private
47
+
48
+ def prefix
49
+
50
+ input.match( /^(\s*['"]\s*|\s*)/ )[0]
51
+ end
52
+
53
+ def suffix
54
+
55
+ input.match( /(\s*['"]\s*|\s*)$/ )[0]
56
+ end
57
+
58
+ def middle
59
+
60
+ start = prefix.length
61
+ finish = input.length - suffix.length
62
+ input[start,finish]
63
+ end
64
+
65
+ def translated_middle
66
+
67
+ google_array[0][0][0].gsub( /^\s*/, '' ).gsub( /\s*$/, '' )
68
+ end
69
+
70
+ def ask_google
71
+
72
+ query_google
73
+
74
+ # Google translate returns a javascript array, which may contain empty
75
+ # items, i.e. array = [1,,2] is correct javascript
76
+ # fill empty places of array [1,, ,4, , ] => "[23,-1,-1,4,-1,-1]"
77
+ array_string = google_string.gsub( /,\s*,/, ',-1,' ).gsub( /,\s*,/, ',-1,' ).gsub( /\[\s*,/, '[-1,' ).gsub( /,\s*\]/, ',-1]' )
78
+
79
+ self.google_array = eval( array_string )
80
+ end
81
+
82
+ def url
83
+ "http://translate.google.nl/translate_a/t"
84
+ end
85
+
86
+ def uri_encoded
87
+
88
+ URI::encode( input )
89
+ end
90
+
91
+ def query
92
+ "?client=t&sl=#{input_language}&tl=#{output_language}&hl=en&sc=2&ie=UTF-8&oe=UTF-8&prev=btn&ssel=0&tsel=0&q=#{uri_encoded}"
93
+ end
94
+
95
+ def query_google
96
+
97
+ self.google_string = Curl.get( url + query ).body_str || EMPTY_GOOGLE_STRING
98
+ end
99
+ end
100
+
101
+ # Quick Testing
102
+ =begin
103
+ english = "this is english text"
104
+ translator = GoogleTranslator.new
105
+ translation = translator.translate english
106
+ puts translation
107
+ =end
@@ -0,0 +1,22 @@
1
+ require_relative 'google_translator'
2
+
3
+ class String
4
+
5
+ @@translator = GoogleTranslator.new
6
+
7
+ def language
8
+ return @@translator.language self
9
+ end
10
+
11
+ def translate input_language='auto', output_language='nl'
12
+ self == '' ? '' : @@translator.translate( self, input_language, output_language )
13
+ end
14
+ end
15
+
16
+ # Quick Testing
17
+ =begin
18
+ puts "language of this string".language
19
+ puts "dutch: " + "this is a test".translate
20
+ puts "german: " + "this is a test".translate( 'en', 'de' )
21
+ puts "french: " + "this is a test".translate( 'en', 'fr' )
22
+ =end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: string_language
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Cornelis Adriaan Schippers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: curb
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: open-uri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Translate and establish language of a string
42
+ email: aad@solidam.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/google_translator.rb
48
+ - lib/string_language.rb
49
+ homepage: http://rubygems.org/gems/string_language
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 2.0.7
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Extends String with methods 'translate' and 'language'
73
+ test_files: []
74
+ has_rdoc: