¿AppleScript para crear un formato de espaciado como "SPACIN G"?

Para dar formato a los documentos de texto de una manera más legible, sería bueno dar formato a los textos seleccionados mediante un script de Apple ejecutado a través de los servicios del menú contextual de la siguiente manera:

  1. seleccione "texto" con el cursor
  2. seleccionar menú contextual/servicios Espaciado (a crear)
  3. el texto seleccionado se formateará en "TEX T"

¿Alguien tiene los conocimientos para programar tal script?

También puede simplemente aumentar el espacio entre letras.

Respuestas (2)

AppleScript para expandir texto

El siguiente fragmento de AppleScript agrega un espacio entre cada carácter de una cadena. Copie y pegue este código en Aplicaciones > Utilidades > Editor de secuencias de comandos para probarlo:

set myText to "hello world"
set myResult to ""

repeat with c in every character in myText
    set myResult to myResult & " " & c
end repeat

display dialog myResult

Servicio de automatización

Con este script, puede usar Aplicaciones > Automator para crear su servicio de menú contextual.

Automatizar el flujo de trabajo para expandir el texto seleccionado

Nuevo servicio de expansión de texto en TextEdit

  1. Inicie Automator.aplicación
  2. Cree un nuevo flujo de trabajo, seleccione Servicio
  3. Agregar una acción Ejecutar AppleScript
  4. Copie y pegue en el script:

    on run {input, parameters}
    
        set myText to input as string
        set myResult to ""
    
        repeat with c in every character in myText
            set myResult to ((myResult & " " & c) as string)
        end repeat
    
        -- Convert to upper case using `tr`
        set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"
    
        return myResult
    end run
    
  5. Seleccionar salida reemplaza el texto seleccionado

  6. Guarda y prueba tu nuevo servicio
¿Probaste esto? Lo pregunto porque esto no funciona para mí en TextEdit en OS X 10.8.5 y TextEdit en OSX 10.10.4. O con o TextWrangler bajo OS X 10.8.5, el servicio no se muestra en absoluto. No es un gran problema para mí, ya que no tengo motivos para escribir a doble espacio, sin embargo, lo que ha presentado no funciona en mis sistemas.
¡Muchas gracias por su rápida y adecuada respuesta! Lo probé, pero el problema es que no se toma el texto seleccionado. Si configuro myText en "asdkfsafg", funciona perfectamente. Si lo uso con configurar myText para ingresar, recibo mensajes de error o el texto seleccionado se elimina. El parámetro de entrada en Automator es Texto y todos los programas. ¿Qué está yendo mal?
@user3439894, parece ser que tenemos el mismo comportamiento
@user139574 Probé AppleScript en OS X 10.10.4 pero no el servicio. ¿Qué mensaje de error ves? ¿Has intentado crear otros servicios usando Automator? ¿Qué sucede si el servicio devuelve una cadena estática como return "test"en lugar de return myResult?
El mensaje de error de la edición de texto es (traducido del alemán): el servicio... no funciona, porque el servicio... no proporciona datos válidos. el retorno de una cadena estática está funcionando
Si permite que el script emita la cadena de entrada justo al principio, es correcto. Así parece ser, que un formato de datos incorrecto es causado por "repetir con c en cada carácter en myText set myResult to myResult & " " & c end repeat" tiene sentido
He actualizado el script; cambiar la línea set myText to input as string. El as stringparece ser requerido. También he encasillado la myResultconcatenación para asegurarme de que siga siendo un tipo de cadena. Esto ahora funciona en OS X 10.10.4 como servicio.
Sí, funciona ;-) Una pregunta final: ¿Cuál es el comando para cambiar todas las letras a mayúsculas?
@Graham Miln, ahora funciona para mí en tres aplicaciones diferentes en las que lo usaría si lo necesitara. Si bien no necesito este escenario en particular, me he llevado algo útil, así que +1 aquí.
@ user139574 la conversión de cadenas a mayúsculas con AppleScript se analiza aquí: mindingthegaps.com/blog/2011/05/26/…

Para convertir el texto seleccionado a mayúsculas, además de agregar un espacio entre cada carácter, agregue la siguiente línea al guión publicado por Graham Miln.

set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"

Así que en Automator sería:

on run {input, parameters}

    set myText to input as string
    set myResult to ""

    repeat with c in every character in myText
        set myResult to ((myResult & " " & c) as string)
    end repeat

    set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"

    return myResult

end run
Gracias por esta sugerencia. He incorporado tu trlínea en el guión.
@Graham Miln, No hay problema. Habría editado su respuesta directamente, sin embargo, debido a que se puede hacer de varias maneras, decidí publicarla como una respuesta separada, ya que solo abordó la parte mayúscula del OP de su consulta como un enlace en un comentario a su respuesta.