string_language 0.0.1

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.
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: