Class: Oversetter::Glosbe::Translate

Inherits:
Object
  • Object
show all
Defined in:
lib/oversetter/glosbe/translate.rb

Overview

Fetches translations from Glosbe.

Instance Method Summary collapse

Instance Method Details

#authors(authors) ⇒ Object

Prints a list of translation authors.

Parameters:

  • authors (Hash)

    List of author/URL pairs.



74
75
76
77
78
79
# File 'lib/oversetter/glosbe/translate.rb', line 74

def authors(authors)
	authors.map { |k,v|
		source = v
		puts Rainbow("Author|#{source['N']}|URL|#{source['url']}").bright
	}
end

#entities(result) ⇒ Object

Replaces HTML entities w/ UTF-8 characters.

Parameters:

  • result (String)

    JSON string of search results.



65
66
67
68
69
70
# File 'lib/oversetter/glosbe/translate.rb', line 65

def entities(result)
	Encoding.default_external = "UTF-8"
	coder = HTMLEntities.new
	result = coder.decode(result.force_encoding('UTF-8'))
	return result
end

#get_trans(search, params) ⇒ Object

Parameters:

  • params (Hash)

    The search parameters to use.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/oversetter/glosbe/translate.rb', line 12

def get_trans(search, params)
	func, result = 'translate', nil
	tran = Oversetter::Glosbe.new
	result = tran.get_word(search, func, params, result)
	if result =~ /"/i
		q = Oversetter::Glosbe::Translate.new
		q.quote(result)
	end
	if result =~ /&[a-z]*;/i
		ent = Oversetter::Glosbe::Translate.new
		ent.entities(result)
	end
	result = MultiJson.load(result)
	if result['result'] == 'ok'
		st = { 'searchterm' => URI.decode(search) }
		type = { 'type' => 'translation' }
		Oversetter.tofile(st)
		Oversetter.tofile(type)
		authors = result['authors']
		if params[:auth] == true
			a = Oversetter::Glosbe::Translate.new
			a.authors(authors)
		end
		label = 'Translation'
		Oversetter.label(label)
		tuc = result['tuc'] #array of hashes
		x, y = 0, tuc.length - 1
		while x <= y
			item = tuc[x]
			mean = item['meanings'] #array of hashes
			if mean != nil
				m = Oversetter::Glosbe::Translate.new
				m.mean(mean)
			end
			phrase = item['phrase'] #hash
			if phrase != nil
				p = Oversetter::Glosbe::Translate.new
				p.phrase(phrase)
			end
			x += 1
		end
	end
end

#mean(mean) ⇒ Object

Meaning handler.

Parameters:

  • mean (Array)

    Array of hashes.



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/oversetter/glosbe/translate.rb', line 83

def mean(mean)
	a, b = 0, mean.length - 1
	while a <= b
		meaning = mean[a] #hash
		mtext = meaning['text']
		mlang = meaning['language']
		print Rainbow("Meaning|").bright
		puts "#{mtext}|#{mlang}|"
		mt = { 'meaning' => mtext }
		ml = { 'language' => mlang }
		Oversetter.tofile(mt)
		Oversetter.tofile(ml)
		a += 1
	end
end

#phrase(phrase) ⇒ Object

Phrase handler.

Parameters:

  • phrase (Hash)

    A list of phrase/language pairs.



101
102
103
104
105
106
107
108
109
110
# File 'lib/oversetter/glosbe/translate.rb', line 101

def phrase(phrase)
	ptext = phrase['text']
	plang = phrase['language']
	print Rainbow("Phrase|").bright
	print "#{ptext}|#{plang}|"
	pt = { 'phrase' => ptext }
	pl = { 'language' => plang }
	Oversetter.tofile(pt)
	Oversetter.tofile(pl)
end

#quote(result) ⇒ Object

Replaces &quot; HTML entity w/ character escapes for JSON.

Parameters:

  • result (String)

    JSON string of search results.



58
59
60
61
# File 'lib/oversetter/glosbe/translate.rb', line 58

def quote(result)
	result = result.gsub('&quot;', "\\\"")
	return result
end