Ir al contenido

Librería JavaScript de Código Morse

El motor que hay detrás de esta web, en un archivo para tu propio proyecto.

Todo en esta web funciona sobre un mismo motor: codificar, decodificar, la temporización, el sonido y las imágenes. Ese motor se publica aquí como un archivo único sin dependencias. Al incluirlo con una etiqueta de script, dispones de MorseEngine.

Cómo incluirla

<script src="https://www.morse-code.info/lib/morse-engine.js"></script>
<script>
  MorseEngine.encode('SOS');            // "... --- ..."
  MorseEngine.decode('... --- ...');    // "SOS"
</script>

También hay una versión fijada en /lib/morse-engine-1.0.0.js. Úsala en cualquier cosa que no vayas a vigilar, para que un cambio futuro aquí no altere tu comportamiento. El archivo sin número de versión sigue siempre al estado actual.

Funciona como script normal, con require de CommonJS y con AMD. No hay paquete de npm porque no hay nada que instalar: es un archivo.

Qué ofrece

Texto y código

MorseEngine.encode('Hola')           // texto a morse
MorseEngine.decode('.... ..')        // morse a texto
MorseEngine.detect('... ---')        // "morse", "text" o "leer"
MorseEngine.translate('SOS')         // { art, text, morse } - elige el sentido
MorseEngine.validate('A€B')          // { art, gueltig, unbekannt: ['€'] }

Temporización

MorseEngine.timing.unit(20)                       // 0.06 segundos por unidad
MorseEngine.timing.schedule('... ---', {wpm: 20}) // [{an, dauer}, ...]
MorseEngine.timing.figures(20, 10)                // Farnsworth: duraciones en ms

El plan es una lista de tramos encendido y apagado en segundos. Todo lo que produce sonido o luz parte de ahí, y por eso el audio y el parpadeo nunca se desincronizan.

Sonido e imágenes

const audio = MorseEngine.audio.create();
audio.abspielen(MorseEngine.timing.schedule('... ---', {wpm: 18}), {hz: 600});

MorseEngine.graphic.svg('... ---', {stil: 'balken'})  // { svg, breite, hoehe }
MorseEngine.graphic.beads('... --- ...')              // cuentas para joyería

Tu propio alfabeto

El alfabeto internacional viene incorporado, pero el motor acepta cualquier tabla:

const propia = MorseEngine.create({
  letters: { A: '.-', B: '-...' },
  digits: {}, punctuation: {}, extended: {}, prosigns: {}
});
propia.encode('AB');   // ".- -..."

La tabla incorporada está disponible como MorseEngine.alphabet si prefieres ampliarla en lugar de sustituirla.

De uso libre, también comercial. Mencionar su origen se agradece y no es condición. Si prefieres insertar un traductor ya hecho, usa el widget.

Preguntas frecuentes

  • ¿Hay paquete de npm?

    No. Es un archivo único sin dependencias, así que un instalador no añadiría nada. Descárgalo o enlázalo directamente.

  • ¿Existe una API REST?

    No, a propósito. Traducir morse no necesita servidor: es una tabla de consulta y unas cuentas. Una API añadiría latencia, un límite de uso y la dependencia de que esta web siga en pie, sin dar nada a cambio.

  • ¿Cuánto ocupa?

    Unos 25 kB sin comprimir, con las tablas completas. Cerca de un tercio son comentarios.

  • ¿Puedo alojarla yo?

    Sí, y para cualquier uso en producción deberías. Copia el archivo a tu servidor para que tu web no dependa de esta.