eva-ia-robot 0.1.3 → 0.1.4
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.
- data/eva_ia_robot.gemspec +1 -1
- data/eva_ia_robot/eva-ia-robot.rb +55 -140
- data/eva_ia_robot/eva-modulo.rb +78 -0
- data/eva_ia_robot/eva-pergunta.rb +8 -5
- data/eva_ia_robot/eva-resposta.rb +5 -2
- metadata +3 -5
- data/eva_ia_robot/os.rb +0 -23
- data/eva_ia_robot/vagrantlistbox.rb +0 -32
- data/eva_ia_robot/versao.rb +0 -31
data/eva_ia_robot.gemspec
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# comandos.conf
|
3
|
-
# caminho completo execução Dir.pwd
|
4
3
|
# documentar caminho completo
|
5
|
-
#
|
4
|
+
# modulos do ruby para instalar basta abrir o prompt de comando e digitar "gem install [nome]" ex: "gem install win32ole"
|
6
5
|
require "cgi"
|
7
6
|
require 'open-uri'
|
8
7
|
require 'json'
|
@@ -10,162 +9,78 @@ require 'win32ole'
|
|
10
9
|
require 'rbconfig'
|
11
10
|
require 'fileutils'
|
12
11
|
|
12
|
+
|
13
13
|
# carrega os arquivos .rb tentei com require mas não funcionou
|
14
14
|
load 'eva-pergunta.rb'
|
15
15
|
load 'eva-resposta.rb'
|
16
|
-
load '
|
17
|
-
load 'os.rb'
|
18
|
-
|
19
|
-
# teste mas ainda não sei como vou fazer isso.
|
20
|
-
module HelloWorld
|
21
|
-
def self.say
|
22
|
-
"Hello World!"
|
23
|
-
end
|
24
|
-
end
|
16
|
+
load 'eva-modulo.rb'
|
25
17
|
|
26
|
-
# tentei abrir o programa pelo system() mas não funcionou direito o WIN32OLE é uma biblioteca "dll" do windows
|
27
18
|
shell = WIN32OLE.new('Shell.Application')
|
28
|
-
# inicializa configuração
|
29
19
|
frase = ""
|
30
20
|
feedback = true
|
31
21
|
beep = true
|
22
|
+
listacomandos = Array.new
|
23
|
+
listaresposta = Array.new
|
24
|
+
listaexecutar = Array.new
|
25
|
+
|
26
|
+
File.open(Dir.pwd()+'/eva.config', 'r:utf-8') do |linha|
|
27
|
+
while line = linha.gets
|
28
|
+
# p line
|
29
|
+
# p line.class
|
30
|
+
# p line.index('#')
|
31
|
+
# p line.index(':')
|
32
|
+
# p line.index('=')
|
33
|
+
# p line.size
|
34
|
+
line.encoding
|
35
|
+
comandos = line[line.index('#')+1..line.index(':')-1]
|
36
|
+
resposta = line[line.index(':')+1..line.index('=>')-1]
|
37
|
+
executar = line[line.index('=>')+2..line.size]
|
38
|
+
|
39
|
+
comandos
|
40
|
+
listacomandos << comandos.gsub('[','').gsub(']','')
|
41
|
+
listaresposta << resposta.gsub('[','').gsub(']','')
|
42
|
+
listaexecutar << executar.gsub('[','').gsub(']','').gsub('\n','')
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
# puts listacomandos
|
47
|
+
# puts listaresposta
|
48
|
+
# puts listaexecutar
|
49
|
+
|
50
|
+
|
51
|
+
# p listacomandos.index('abrir chrome')
|
52
|
+
# p listaresposta[listacomandos.index('abrir chrome')]
|
53
|
+
|
32
54
|
|
33
|
-
# loop para ficar gravando o comando de voz repetidamente so sai do loop e finaliza o sistema se o comando "sair" for executado
|
34
55
|
while frase !="sair" do
|
35
|
-
|
56
|
+
|
57
|
+
|
36
58
|
begin
|
37
|
-
|
38
|
-
# feedback true - habilita a resposta para repetir o comando
|
39
|
-
# feedback = false - desabilita a resposta para repetir o comndo
|
40
|
-
# beep = true - habilita beep antes da gravação
|
41
|
-
# beep = false - desabilita beep antes da gravação
|
42
|
-
|
43
|
-
# a referência sobre a pergunta encontra-se no arquivo eva-pergunta.rb
|
44
|
-
p frase = pergunta(feedback,beep)
|
59
|
+
p frase = pergunta(feedback,beep)
|
45
60
|
rescue =>e
|
46
|
-
# se houver erro simplesmente imprime
|
47
61
|
puts e.message
|
48
62
|
end
|
49
63
|
|
50
|
-
# OBSERVAÇÃO---------------------------------------
|
51
|
-
# Você pode alterar o valor de frase e de resposta.
|
52
|
-
|
53
|
-
# se a conversão do audio gravado em texto for igual a frase, ele executa os comandos e o feedback auditivo do sistema.
|
54
|
-
if frase == 'eva'
|
55
|
-
# quando o usuário dar o comando eva o sitema responde falando "pois não"
|
56
|
-
# a referência sobre a resposta encontra-se no arquivo eva-resposta.rb
|
57
|
-
resposta('pois não')
|
58
|
-
end
|
59
|
-
|
60
|
-
if frase == 'versão'
|
61
|
-
# recebe a verificação da versão do sistema
|
62
|
-
resposta(versao())
|
63
|
-
end
|
64
|
-
|
65
|
-
# desativa o feedback com o conteúdo "favor repetir o comando"
|
66
|
-
if frase == 'desativar'
|
67
|
-
resposta('sistema de resposta desativado')
|
68
|
-
feedback = false
|
69
|
-
end
|
70
|
-
|
71
|
-
# ativa o feedback com o conteúdo "favor repetir o comando"
|
72
|
-
if frase == 'ativar'
|
73
|
-
resposta('sistema de resposta ativado')
|
74
|
-
feedback = true
|
75
|
-
end
|
76
|
-
|
77
|
-
# desativa o feedback com o conteúdo "favor repetir o comando"
|
78
|
-
if frase == 'desativar som'
|
79
|
-
resposta('sistema de beep desativado')
|
80
|
-
beep = false
|
81
|
-
end
|
82
|
-
|
83
|
-
if frase == 'ativar som'
|
84
|
-
resposta('sistema de beep ativado')
|
85
|
-
beep = true
|
86
|
-
end
|
87
|
-
|
88
|
-
if frase == 'abrir chrome'
|
89
|
-
resposta('abrindo krome')
|
90
|
-
shell.ShellExecute("chrome.exe", "", "", "open", 1)
|
91
|
-
end
|
92
|
-
|
93
|
-
if frase == 'que horas são'
|
94
|
-
resposta("são #{Time.now.hour.to_s} horas e #{Time.now.min.to_s} minutos")
|
95
|
-
end
|
96
|
-
|
97
|
-
if frase == 'que dia é hoje'
|
98
|
-
semana = ["","Segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sabado","domingo"]
|
99
|
-
mes = ["","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]
|
100
|
-
resposta("hoje é #{semana[Time.now.wday]} dia #{Time.now.day.to_s} de #{mes[Time.now.month]} de #{Time.now.year.to_s}")
|
101
|
-
end
|
102
|
-
|
103
|
-
if frase == 'abrir excel'
|
104
|
-
resposta('abrindo ekcel')
|
105
|
-
shell.ShellExecute("excel.exe", "", "", "open", 1)
|
106
|
-
end
|
107
|
-
|
108
|
-
if frase == 'finalizar excel'
|
109
|
-
resposta('finalizando ekcel')
|
110
|
-
system("taskkill /IM excel.exe")
|
111
|
-
end
|
112
|
-
|
113
|
-
if frase == 'abrir word'
|
114
|
-
p "inicio execução #{Time.now}"
|
115
|
-
shell.ShellExecute("winword.exe", "", "", "open", 1)
|
116
|
-
resposta('abrindo word')
|
117
|
-
p "final execução #{Time.now}"
|
118
|
-
|
119
|
-
end
|
120
|
-
|
121
|
-
if frase == 'finalizar word'
|
122
|
-
system("taskkill /IM winword.exe")
|
123
|
-
resposta('finalizando word')
|
124
|
-
|
125
|
-
end
|
126
64
|
|
127
|
-
if frase == 'abrir illustrator'
|
128
|
-
resposta('abrindo ilustreitor')
|
129
|
-
shell.ShellExecute("illustrator.exe", "", "", "open", 1)
|
130
|
-
end
|
131
65
|
|
132
|
-
if frase
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
resposta('abrindo prompt de comando')
|
139
|
-
shell.ShellExecute("cmd.exe", "", "", "open", 1)
|
140
|
-
end
|
66
|
+
if listacomandos.include? frase
|
67
|
+
|
68
|
+
if listaexecutar[listacomandos.index(frase)].include? '%'
|
69
|
+
p abrir = listaexecutar[listacomandos.index(frase)].gsub('%',"").gsub("\n",'')
|
70
|
+
shell.ShellExecute(abrir, "", "", "open", 1)
|
71
|
+
end
|
141
72
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
73
|
+
if listaexecutar[listacomandos.index(frase)].include? '&'
|
74
|
+
p fechar = listaexecutar[listacomandos.index(frase)].gsub('&',"").gsub("\n",'')
|
75
|
+
system("taskkill /IM #{fechar}")
|
76
|
+
end
|
146
77
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
78
|
+
if listaresposta[listacomandos.index(frase)].include? '$'
|
79
|
+
p executar = listaresposta[listacomandos.index(frase)].gsub('$',"")
|
80
|
+
modulos(executar)
|
81
|
+
else
|
82
|
+
resposta(listaresposta[listacomandos.index(frase)])
|
83
|
+
puts listaresposta[listacomandos.index(frase)]
|
84
|
+
end
|
151
85
|
end
|
152
|
-
|
153
|
-
if frase == 'sistema operacional'
|
154
|
-
resposta("seu sistema operacional é #{os()}")
|
155
|
-
end
|
156
|
-
|
157
|
-
if frase == 'listar'
|
158
|
-
resposta("exibindo lista de músicas")
|
159
|
-
listamusicas = Array.new
|
160
|
-
listamusicas = Dir.entries('D:/Musicas')
|
161
|
-
listamusicas.each_with_index{ |musica,indice| p "#{indice} #{musica}"}
|
162
|
-
end
|
163
|
-
|
164
|
-
if frase == 'tocar'
|
165
|
-
resposta("exibindo lista de musicas")
|
166
|
-
listamusicas = Array.new
|
167
|
-
listamusicas = Dir.entries('D:/Musicas')
|
168
|
-
listamusicas.each_with_index{ |musica,indice| p "#{indice} #{musica}"}
|
169
|
-
end
|
170
|
-
|
171
86
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'open-uri'
|
3
|
+
require 'nokogiri'
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rbconfig'
|
6
|
+
|
7
|
+
load 'eva-resposta.rb'
|
8
|
+
def os
|
9
|
+
@os ||= (
|
10
|
+
host_os = RbConfig::CONFIG['host_os']
|
11
|
+
case host_os
|
12
|
+
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
13
|
+
resposta('seu sistema operacional é windous')
|
14
|
+
when /darwin|mac os/
|
15
|
+
resposta('seu sistema operacional é macosx')
|
16
|
+
when /linux/
|
17
|
+
resposta('seu sistema operacional é linux')
|
18
|
+
when /solaris|bsd/
|
19
|
+
resposta('seu sistema operacional é unix')
|
20
|
+
else
|
21
|
+
raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
|
22
|
+
end
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def versao()
|
27
|
+
pagina = Nokogiri::HTML(open("http://rubygems.org/gems/eva-ia-robot"))
|
28
|
+
vremota = pagina.xpath("/html/body/div/div[3]/div[1]/div[1]").text
|
29
|
+
vremota = vremota.gsub(/[^0-9.]/,'')
|
30
|
+
puts vremota
|
31
|
+
|
32
|
+
|
33
|
+
name = /^/i
|
34
|
+
dep = Gem::Dependency.new(name, Gem::Requirement.default)
|
35
|
+
specs = Gem.source_index.search(dep)
|
36
|
+
vlocal = ""
|
37
|
+
# specs.map{ |s| puts "#{s.version}" if s.name=="eva-ia-robot"}
|
38
|
+
specs.map{ |s| vlocal = s.version if s.name=="eva-ia-robot"}
|
39
|
+
vlocal = vlocal.to_s
|
40
|
+
puts vlocal
|
41
|
+
# vremota= teste
|
42
|
+
if vlocal==vremota
|
43
|
+
resposta("Sua versão é a mais atual")
|
44
|
+
else
|
45
|
+
resposta("Existe uma atualização disponível")
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
def data()
|
52
|
+
semana = ["","Segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sabado","domingo"]
|
53
|
+
mes = ["","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]
|
54
|
+
resposta("hoje é #{semana[Time.now.wday]} dia #{Time.now.day.to_s} de #{mes[Time.now.month]} de #{Time.now.year.to_s}")
|
55
|
+
end
|
56
|
+
|
57
|
+
def hora()
|
58
|
+
resposta("são #{Time.now.hour.to_s} horas e #{Time.now.min.to_s} minutos")
|
59
|
+
end
|
60
|
+
|
61
|
+
def modulos(modulo)
|
62
|
+
case modulo
|
63
|
+
when 'hora'
|
64
|
+
hora()
|
65
|
+
when 'versao'
|
66
|
+
versao()
|
67
|
+
when 'data'
|
68
|
+
data()
|
69
|
+
when 'sistema'
|
70
|
+
os()
|
71
|
+
else
|
72
|
+
puts 'erro 1'
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# modulos('hora')
|
77
|
+
# data()
|
78
|
+
# os()
|
@@ -2,8 +2,10 @@
|
|
2
2
|
# Esse código transforma audio em texto via api do google speech
|
3
3
|
|
4
4
|
# Win32/sound modulo para tocar um beep via script
|
5
|
+
require 'json'
|
5
6
|
require 'win32/sound'
|
6
7
|
include Win32
|
8
|
+
load 'eva-resposta.rb'
|
7
9
|
|
8
10
|
def pergunta(feedback,beep)
|
9
11
|
# imprimi na tela um feedback visual de quando dar o comando verbal
|
@@ -14,13 +16,13 @@ def pergunta(feedback,beep)
|
|
14
16
|
Sound.beep(1500, 200)
|
15
17
|
end
|
16
18
|
|
17
|
-
|
19
|
+
# puts "inicio gravação #{Time.now}"
|
18
20
|
# utilizamos o sox que é um programa para gravar audio via linha de comando - no caso salva com o nome test.flac que é o formato do google
|
19
21
|
# silence -l significa que o rec.exe grava o audio e ao perceber o silencio finaliza a gravação e salva o arquivo ja no formato permitido pelo google speech
|
20
|
-
system('rec.exe -r 16000 test.flac silence -l 1 0.1 1% 1 1.5 1%')
|
22
|
+
system('rec.exe -q -r 16000 test.flac silence -l 1 0.1 1% 1 1.5 1%')
|
21
23
|
# feedback para o envio do arquivo para o google
|
22
24
|
p 'Enviando arquivo ...'
|
23
|
-
p "inicio envio #{Time.now}"
|
25
|
+
# p "inicio envio #{Time.now}"
|
24
26
|
# envia o arquivo test.flac para o servidor e este retorna um json
|
25
27
|
# {\"status\":0,\"id\":\"\",\"hypotheses\":[{\"utterance\":\"abrir word\",\"confidence\":0.82485712}]}\n"
|
26
28
|
# status =>0 - significa sucesso
|
@@ -32,11 +34,11 @@ def pergunta(feedback,beep)
|
|
32
34
|
# loop que corrige um bug de sair do programa quando o tempo de gravação é muito grande ou quando o json retorna algum erro ou simplesmente nulo
|
33
35
|
begin
|
34
36
|
# força a codificação com acento
|
35
|
-
|
37
|
+
|
36
38
|
request.force_encoding('utf-8')
|
37
39
|
# converte a resposta da requisição para json
|
38
40
|
resposta = JSON.parse(request)
|
39
|
-
|
41
|
+
# puts "chegada resposta #{Time.now}"
|
40
42
|
rescue =>e
|
41
43
|
# se houver erro ele simplesmente exibe a mensagem de erro e continua o seu processamento normal
|
42
44
|
puts e.message
|
@@ -59,3 +61,4 @@ def pergunta(feedback,beep)
|
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
64
|
+
# pergunta(true,true)
|
@@ -1,4 +1,6 @@
|
|
1
1
|
# Esse código transforma texto em audio via api do google Translate
|
2
|
+
require "cgi"
|
3
|
+
require 'open-uri'
|
2
4
|
def resposta(texto)
|
3
5
|
#converte o texto para a requisição via url
|
4
6
|
texto = CGI::escape(texto)
|
@@ -12,5 +14,6 @@ def resposta(texto)
|
|
12
14
|
end
|
13
15
|
# system executa um comando no prompt
|
14
16
|
# play.exe executa audio via linha de comando para não precisar de um player externo.
|
15
|
-
system('play.exe arquivo.mp3')
|
16
|
-
end
|
17
|
+
system('play.exe -q arquivo.mp3')
|
18
|
+
end
|
19
|
+
# resposta('abrindo chrome')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eva-ia-robot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-19 00:00:00.000000000 -03:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
description: Gem integrada com Google Speech e Google Translate
|
@@ -20,11 +20,9 @@ extra_rdoc_files: []
|
|
20
20
|
files:
|
21
21
|
- test/eva_ia_robot_test.rb
|
22
22
|
- eva_ia_robot/eva-ia-robot.rb
|
23
|
+
- eva_ia_robot/eva-modulo.rb
|
23
24
|
- eva_ia_robot/eva-pergunta.rb
|
24
25
|
- eva_ia_robot/eva-resposta.rb
|
25
|
-
- eva_ia_robot/os.rb
|
26
|
-
- eva_ia_robot/vagrantlistbox.rb
|
27
|
-
- eva_ia_robot/versao.rb
|
28
26
|
- eva_ia_robot/libgomp-1.dll
|
29
27
|
- eva_ia_robot/libltdl-7.dll
|
30
28
|
- eva_ia_robot/libmad.dll
|
data/eva_ia_robot/os.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# verifica o sistema operacional e retorna o nome do sistema em formato texto
|
3
|
-
require 'rbconfig'
|
4
|
-
|
5
|
-
def os
|
6
|
-
@os ||= (
|
7
|
-
host_os = RbConfig::CONFIG['host_os']
|
8
|
-
case host_os
|
9
|
-
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
10
|
-
'windows'
|
11
|
-
when /darwin|mac os/
|
12
|
-
'macosx'
|
13
|
-
when /linux/
|
14
|
-
'linux'
|
15
|
-
when /solaris|bsd/
|
16
|
-
'unix'
|
17
|
-
else
|
18
|
-
raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
|
19
|
-
end
|
20
|
-
)
|
21
|
-
end
|
22
|
-
|
23
|
-
p os()
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'open-uri'
|
2
|
-
require 'nokogiri'
|
3
|
-
|
4
|
-
pagina = Nokogiri::HTML(open("http://www.vagrantbox.es/"))
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
nome,link,tamanho,lista = Array.new
|
9
|
-
nome = pagina.xpath("//table/tbody/tr/th").map {|texto| texto.text}
|
10
|
-
link = pagina.xpath("//table/tbody/tr/td[2]").map {|texto| texto.text}
|
11
|
-
tamanho = pagina.xpath("//table/tbody/tr/td[3]").map {|texto| texto.text}
|
12
|
-
indice = Array.new(tamanho.count) {|i| i+1}
|
13
|
-
lista = indice,nome,link,tamanho
|
14
|
-
# lista = puts pagina.xpath("//div/a").text.split('-')
|
15
|
-
# puts pagina.xpath("//div/a").map {|texto| texto['onclick'].split("'")[1]}
|
16
|
-
# puts pagina.xpath("//div/a").map {|texto| texto['onclick'].split("'")[3]}
|
17
|
-
|
18
|
-
p "inicio"
|
19
|
-
p link[58]
|
20
|
-
system("dir")
|
21
|
-
p system("vagrant box add Freebsd2 #{link[58]}")
|
22
|
-
|
23
|
-
# pkg_add -r samba36
|
24
|
-
# NET SHARE vagrant=D:\vagrant "/grant:TODOS,FULL"
|
25
|
-
# NET SHARE $nomecomp=$caminho "/grant:$User,FULL|READ|WRITE"
|
26
|
-
|
27
|
-
|
28
|
-
# mount_smbfs -I 192.168.2.145 //Utsch@UTSCH-PC/Vagrant /usr/home/vagrant
|
29
|
-
# sudo mount_smbfs -I 192.168.2.145 //Utsch@UTSCH-PC/Vagrant /usr/home/vagrant
|
30
|
-
|
31
|
-
|
32
|
-
# VM Config = "/vagrant D:/Vagrant"
|
data/eva_ia_robot/versao.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'open-uri'
|
3
|
-
require 'nokogiri'
|
4
|
-
require 'rubygems'
|
5
|
-
|
6
|
-
|
7
|
-
def versao(teste)
|
8
|
-
pagina = Nokogiri::HTML(open("http://rubygems.org/gems/eva-ia-robot"))
|
9
|
-
vremota = pagina.xpath("/html/body/div/div[3]/div[1]/div[1]").text
|
10
|
-
vremota = vremota.gsub(/[^0-9.]/,'')
|
11
|
-
p vremota
|
12
|
-
|
13
|
-
|
14
|
-
name = /^/i
|
15
|
-
dep = Gem::Dependency.new(name, Gem::Requirement.default)
|
16
|
-
specs = Gem.source_index.search(dep)
|
17
|
-
vlocal = ""
|
18
|
-
# specs.map{ |s| puts "#{s.version}" if s.name=="eva-ia-robot"}
|
19
|
-
specs.map{ |s| vlocal = s.version if s.name=="eva-ia-robot"}
|
20
|
-
vlocal = vlocal.to_s
|
21
|
-
p vlocal
|
22
|
-
vremota= teste
|
23
|
-
if vlocal==vremota
|
24
|
-
return "Sua versão é a mais atual"
|
25
|
-
else
|
26
|
-
return "Existe uma atualização disponível"
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
# p v = versao("0.2.1")
|