Tenía hecha una subtarea casi desde mis inicios con Tasker y no la encontraba. Espera sólo letras en minúsculas y espacios en blanco. El que quiera otra cosa que lo añada/solucione.
Código:
sAntorchaMorse (666)
A1: Establecer variable [ Nombre:%par1 A:sos Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ] Si (if) [ %caller1 ~ ui ]
A2: Establece Array [ Matriz de Variables (array):%morse Values:a=.-/b=-.../c=-.-./d=-../e=./f=..-./g=--./h=..../i=../j=.---/k=-.-/l=.-../m=--/n=-./o=---/p=.--./q=--.-/r=.-./s=.../t=-/u=..-/v=. -/w=.--/x=-..-/y=-.--/z=--../ =# Separador:/ ]
A3: Probar Variable [ Tipo:Longitud Datos:%par1 Almacenar Resultado en:%lon ]
A4: For [ Variable:%ind Ítems:1:%lon ]
A5: Sección de Variable [ Nombre:%par1 Desde:%ind Longitud:1 Encajar:Apagado Almacenar Resultado en:%let ]
A6: Establecer variable [ Nombre:%bus A:%morse(#?%let*) Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
A7: Establece Array [ Matriz de Variables (array):%cod Values:%morse(%bus) Separador:= ]
A8: Array Push [ Matriz de Variables (array):%tra Posición:%ind Valor:%cod2 Rellenar Espacios:Apagado ]
A9: End For
<punto>
A10: Establecer variable [ Nombre:%mspun A:125 Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
<raya = punto * 3>
A11: Establecer variable [ Nombre:%msray A:%mspun*3 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
<entre signos = punto>
A12: Establecer variable [ Nombre:%mssig A:%mspun Recurse Variables:Apagado Calcular:Apagado Añadir:Apagado ]
<entre letras = punto * 3 (,)>
A13: Establecer variable [ Nombre:%mslet A:%mspun*2 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
<entre palabras = punto * 7 (#)>
A14: Establecer variable [ Nombre:%mspal A:%mspun*4 Recurse Variables:Apagado Calcular:Encendido Añadir:Apagado ]
A15: Concatenar variable [ Nombre:%tra Criterio de fusión:, Borrar partes:Apagado ]
A16: Probar Variable [ Tipo:Longitud Datos:%tra Almacenar Resultado en:%lon ]
A17: For [ Variable:%ind Ítems:1:%lon ]
A18: Sección de Variable [ Nombre:%tra Desde:%ind Longitud:1 Encajar:Apagado Almacenar Resultado en:%sig ]
A19: Si (if) [ %sig ~ ./- ]
A20: Antorcha [ Establecer:Encendido ]
A21: Esperar [ MS:%mspun Segundos:0 Minutos:0 Horas:0 Días:0 ] Si (if) [ %sig ~ . ]
A22: Esperar [ MS:%msray Segundos:0 Minutos:0 Horas:0 Días:0 ] Si (if) [ %sig ~ - ]
A23: Antorcha [ Establecer:Apagado ]
A24: Esperar [ MS:%mssig Segundos:0 Minutos:0 Horas:0 Días:0 ] Si (if) [ %ind != %lon ]
A25: Else Si (if) [ %sig ~ , ]
A26: Esperar [ MS:%mslet Segundos:0 Minutos:0 Horas:0 Días:0 ]
A27: Else Si (if) [ %sig ~ # ]
A28: Esperar [ MS:%mspal Segundos:0 Minutos:0 Horas:0 Días:0 ]
A29: Fin si (End if)
A30: End For
La primera parte traduce la cadena pasada en %par1 a morse (%par1=sos para hacer pruebas).
La segunda parte define las duraciones de punto/raya y las pausas entre signos/letras/palabras. Todo está relacionado con la duración del punto (%mspun). Graduar al gusto del usuario. La pausa entre letras y palabras está ajustada teniendo en cuenta las pausas previas y/o posteriores.
La tercera parte recorre la cadena de texto de la traducción encendiendo/apagando la linterna y haciendo las pausas correspondientes a cada caso.
La tarea ya tiene su tiempo y posiblemente ahora lo haría de otra forma, pero funciona y lo mismo os vale para algo.
_EDITO_
Estoy viendo que se podrían quitar media docena de acciones tranquilamente.