Class: RonelaLenguaje
- Inherits:
-
Object
- Object
- RonelaLenguaje
- Defined in:
- lib/ronela_lenguaje.rb
Overview
Ronela Lenguaje
Clase generica para leer lenguaje de ronela. el lenguaje ronela tiene las siguientes palabras claves
-
Personaje => Crea personaje
-
Imagen => Crea imagen desde archivo
-
Escenario => Muestra imagen como escenario
-
Mostrar => Muestra imagen
-
w > .… => El personaje dice …
Instance Method Summary collapse
- #definir_accion(&func) ⇒ Object
-
#indica(laaccionyseesperaunafuncion) ⇒ Object
que será llamada cuando se encuentre la accion, se pueden registrar varias funcionse para una misma accion con los argumentos @variables, @resto.
-
#initialize(&func) ⇒ RonelaLenguaje
constructor
A new instance of RonelaLenguaje.
-
#method_missing(method, *args, &func) ⇒ Object
que será llamada cuando se encuentre la accion, se pueden registrar varias funcionse para una misma accion con los argumentos @variables, @resto.
- #scan(string) ⇒ Object
Constructor Details
#initialize(&func) ⇒ RonelaLenguaje
Returns a new instance of RonelaLenguaje.
38 39 40 41 |
# File 'lib/ronela_lenguaje.rb', line 38 def initialize (&func) @acciones = {} @nada = func unless func.nil? end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &func) ⇒ Object
que será llamada cuando se encuentre la accion, se pueden registrar varias funcionse para una misma accion con los argumentos @variables, @resto
90 91 92 93 94 95 96 |
# File 'lib/ronela_lenguaje.rb', line 90 def method_missing(method, *args, &func) unless @acciones[method.to_s].kind_of? Array @acciones[method.to_s] = [] end @acciones[method.to_s] << func end |
Instance Method Details
#definir_accion(&func) ⇒ Object
43 44 45 |
# File 'lib/ronela_lenguaje.rb', line 43 def definir_accion &func end |
#indica(laaccionyseesperaunafuncion) ⇒ Object
que será llamada cuando se encuentre la accion, se pueden registrar varias funcionse para una misma accion con los argumentos @variables, @resto
90 91 92 93 94 95 96 |
# File 'lib/ronela_lenguaje.rb', line 90 def method_missing(method, *args, &func) unless @acciones[method.to_s].kind_of? Array @acciones[method.to_s] = [] end @acciones[method.to_s] << func end |
#scan(string) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/ronela_lenguaje.rb', line 46 def scan(string) if string.kind_of? String string.delete! "\n" end #toma primer palabra que determina que hacer if string.nil? or string.empty? return nil end partida = string.split accion = partida[0] unless @acciones.has_key? accion #si se paso manejador cuando no #se entiende la accion se llama if !@nada.nil? return @nada.call(accion, partida[1..-1].join(' ')) else raise RonelaLenguajePailas, string end end variables = {} resto = [] for i in 1..(partida.size) #saca variable ti color=rojo if m = partida[i].to_s.match(/([0-9a-zA-Z\-_\/\\\.ñÑáéíóúÁÉÍÓÚ]+)=([0-9a-zA-Z\-_\/\\\.ñÑáéíóúÁÉÍÓÚ]+)/) variables[m[1]] = m[2] #el resto va elsif !partida[i].to_s.empty? resto << partida[i].to_s end end @acciones[accion].each {|f| f.call(variables, resto)} end |