From 212e9fd762d8c08b787716264a75d288c72594e3 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 5 May 2011 10:14:01 +0200 Subject: modules/morse: prepare for krebscode --- COPYING | 14 ----- README | 32 ---------- modules/morse/COPYING | 14 +++++ modules/morse/README | 32 ++++++++++ modules/morse/morse.sh | 160 +++++++++++++++++++++++++++++++++++++++++++++++++ morse.sh | 160 ------------------------------------------------- 6 files changed, 206 insertions(+), 206 deletions(-) delete mode 100644 COPYING delete mode 100644 README create mode 100644 modules/morse/COPYING create mode 100644 modules/morse/README create mode 100755 modules/morse/morse.sh delete mode 100755 morse.sh diff --git a/COPYING b/COPYING deleted file mode 100644 index d28e4178..00000000 --- a/COPYING +++ /dev/null @@ -1,14 +0,0 @@ - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 23, December 1984 - - Copyright (C) 2011 tv@shackspace - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. - diff --git a/README b/README deleted file mode 100644 index 67951c00..00000000 --- a/README +++ /dev/null @@ -1,32 +0,0 @@ -MORSE(1) MORSE(1) - -NAME - morse.sh - morse code generator - -SYNOPSIS - morse [-l N] [-f N] [-c|-x] [text...] - -DESCRIPTION - Generate visible or audible from text or stdin. - -OPTIONS - -l N use N milliseconds as length of dit. Default: 60 ms - - -f N beep at N Hz. Default: 2000 Hz - - -c compile only. Morse will output morse-executable morse code. - - -x execute only. Interpret text as morse code, i.e. do not try - to convert text or stdin. - -BUGS - None.^_^ - -REPORTING BUGS - Please use Github's issue tracking system. - -AUTHOR - This program was written by tv@shackspace and is distributed under the - Do What The Fuck You Want To Public License. - - April 2011 MORSE(1) diff --git a/modules/morse/COPYING b/modules/morse/COPYING new file mode 100644 index 00000000..d28e4178 --- /dev/null +++ b/modules/morse/COPYING @@ -0,0 +1,14 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 23, December 1984 + + Copyright (C) 2011 tv@shackspace + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + diff --git a/modules/morse/README b/modules/morse/README new file mode 100644 index 00000000..67951c00 --- /dev/null +++ b/modules/morse/README @@ -0,0 +1,32 @@ +MORSE(1) MORSE(1) + +NAME + morse.sh - morse code generator + +SYNOPSIS + morse [-l N] [-f N] [-c|-x] [text...] + +DESCRIPTION + Generate visible or audible from text or stdin. + +OPTIONS + -l N use N milliseconds as length of dit. Default: 60 ms + + -f N beep at N Hz. Default: 2000 Hz + + -c compile only. Morse will output morse-executable morse code. + + -x execute only. Interpret text as morse code, i.e. do not try + to convert text or stdin. + +BUGS + None.^_^ + +REPORTING BUGS + Please use Github's issue tracking system. + +AUTHOR + This program was written by tv@shackspace and is distributed under the + Do What The Fuck You Want To Public License. + + April 2011 MORSE(1) diff --git a/modules/morse/morse.sh b/modules/morse/morse.sh new file mode 100755 index 00000000..c84538ca --- /dev/null +++ b/modules/morse/morse.sh @@ -0,0 +1,160 @@ +#! /bin/sh +set -euf + +freq=2000 +dit=60 +mode=compile+execute + +## plain stupid options "parser" +while test $# -gt 0; do + case "$1" in + (-l) dit=$2; shift 2;; + (-f) freq=$2; shift 2;; + (-c) mode=compile; shift 1;; + (-x) mode=execute; shift 1;; + (*) break 2;; + esac +done + +# Ein Dah ist dreimal so lang wie ein Dit. +dah=`echo "$dit * 3" | bc` + +## Convert a character to the corresponting morse code. +## Note: any unknown characters are left unaltered. +char2morse() { +tr [a-z] [A-Z] | +sed ' + # Die Pause zwischen Wörtern beträgt sieben Dits. (1/2) + s:[[:space:]]\+::g + + # Zwischen Buchstaben in einem Wort wird eine Pause von Dah eingeschoben. + s:[^ ]:& :g + + # Die Pause zwischen Wörtern beträgt sieben Dits. (2/2) + s: : :g +' | +sed ' + # Lateinische Buchstaben + # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. + s:A:· −:g + s:B:− · · ·:g + s:C:− · − ·:g + s:D:− · ·:g + s:E:·:g + s:F:· · − ·:g + s:G:− − ·:g + s:H:· · · ·:g + s:I:· ·:g + s:J:· − − −:g + s:K:− · −:g + s:L:· − · ·:g + s:M:− −:g + s:N:− ·:g + s:O:− − −:g + s:P:· − − ·:g + s:Q:− − · −:g + s:R:· − ·:g + s:S:· · ·:g + s:T:−:g + s:U:· · −:g + s:V:· · · −:g + s:W:· − −:g + s:X:− · · −:g + s:Y:− · − −:g + s:Z:− − · ·:g +' | +sed ' + # Ziffern + # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. + s:0:− − − − −:g + s:1:· − − − −:g + s:2:· · − − −:g + s:3:· · · − −:g + s:4:· · · · −:g + s:5:· · · · ·:g + s:6:− · · · ·:g + s:7:− − · · ·:g + s:8:− − − · ·:g + s:9:− − − − ·:g +' | +sed ' + # TODO Sonder- und Satzzeichen + #s:À, Å:· − − · − + #s:Ä:· − · − + #s:È:· − · · − + #s:É:· · − · · + #s:Ö:− − − · + #s:Ü:· · − − + #s:ß:· · · − − · · + #s:CH:− − − − + #s:Ñ:− − · − − + #s:. (AAA) · − · − · − + #s:, (MIM) − − · · − − + #s:: − − − · · · + #s:; − · − · − · + #s:? (IMI) · · − − · · + #s:- − · · · · − + #s:_ · · − − · − + #s:( − · − − · + #s:) − · − − · − + #s:'\'' · − − − − · + #s:= − · · · − + #s:+ · − · − · + #s:/ − · · − · + #s:@ (AC) · − − · − · +' | +sed ' + # TODO Signale + # KA + # (Spruchanfang) − · − · − + # BT + # (Pause) − · · · − + # AR + # (Spruchende) · − · − · + # VE + # (verstanden) · · · − · + # SK + # (Verkehrsende) · · · − · − + # SOS + # (internationaler + # (See-)Notruf) · · · − − − · · · + # HH + # (Fehler; Irrung; + # Wiederholung + # ab letztem + # vollständigen Wort) · · · · · · · · +' +} + +## Convert morse code to beep(1) arguments. +morse2beeparg() { +sed " + s: : -n -f 1 -l $dit:g + s:·: -n -f $freq -l $dit:g + s:−: -n -f $freq -l $dah:g +" | + sed ' + 1s:^:beep -f 1 -l 1: +' +} + +compile() { + char2morse +} + +execute() { + `morse2beeparg` +} + +## main - process either [any non-option] arguments or stdin. +if test $# -gt 0; then + echo "$*" +else + cat +fi | +case "$mode" in + (compile) compile;; + (execute) execute;; + (compile+execute) compile | execute;; + (*) echo bad mode: $mode >&2; exit 23;; +esac diff --git a/morse.sh b/morse.sh deleted file mode 100755 index c84538ca..00000000 --- a/morse.sh +++ /dev/null @@ -1,160 +0,0 @@ -#! /bin/sh -set -euf - -freq=2000 -dit=60 -mode=compile+execute - -## plain stupid options "parser" -while test $# -gt 0; do - case "$1" in - (-l) dit=$2; shift 2;; - (-f) freq=$2; shift 2;; - (-c) mode=compile; shift 1;; - (-x) mode=execute; shift 1;; - (*) break 2;; - esac -done - -# Ein Dah ist dreimal so lang wie ein Dit. -dah=`echo "$dit * 3" | bc` - -## Convert a character to the corresponting morse code. -## Note: any unknown characters are left unaltered. -char2morse() { -tr [a-z] [A-Z] | -sed ' - # Die Pause zwischen Wörtern beträgt sieben Dits. (1/2) - s:[[:space:]]\+::g - - # Zwischen Buchstaben in einem Wort wird eine Pause von Dah eingeschoben. - s:[^ ]:& :g - - # Die Pause zwischen Wörtern beträgt sieben Dits. (2/2) - s: : :g -' | -sed ' - # Lateinische Buchstaben - # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. - s:A:· −:g - s:B:− · · ·:g - s:C:− · − ·:g - s:D:− · ·:g - s:E:·:g - s:F:· · − ·:g - s:G:− − ·:g - s:H:· · · ·:g - s:I:· ·:g - s:J:· − − −:g - s:K:− · −:g - s:L:· − · ·:g - s:M:− −:g - s:N:− ·:g - s:O:− − −:g - s:P:· − − ·:g - s:Q:− − · −:g - s:R:· − ·:g - s:S:· · ·:g - s:T:−:g - s:U:· · −:g - s:V:· · · −:g - s:W:· − −:g - s:X:− · · −:g - s:Y:− · − −:g - s:Z:− − · ·:g -' | -sed ' - # Ziffern - # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang. - s:0:− − − − −:g - s:1:· − − − −:g - s:2:· · − − −:g - s:3:· · · − −:g - s:4:· · · · −:g - s:5:· · · · ·:g - s:6:− · · · ·:g - s:7:− − · · ·:g - s:8:− − − · ·:g - s:9:− − − − ·:g -' | -sed ' - # TODO Sonder- und Satzzeichen - #s:À, Å:· − − · − - #s:Ä:· − · − - #s:È:· − · · − - #s:É:· · − · · - #s:Ö:− − − · - #s:Ü:· · − − - #s:ß:· · · − − · · - #s:CH:− − − − - #s:Ñ:− − · − − - #s:. (AAA) · − · − · − - #s:, (MIM) − − · · − − - #s:: − − − · · · - #s:; − · − · − · - #s:? (IMI) · · − − · · - #s:- − · · · · − - #s:_ · · − − · − - #s:( − · − − · - #s:) − · − − · − - #s:'\'' · − − − − · - #s:= − · · · − - #s:+ · − · − · - #s:/ − · · − · - #s:@ (AC) · − − · − · -' | -sed ' - # TODO Signale - # KA - # (Spruchanfang) − · − · − - # BT - # (Pause) − · · · − - # AR - # (Spruchende) · − · − · - # VE - # (verstanden) · · · − · - # SK - # (Verkehrsende) · · · − · − - # SOS - # (internationaler - # (See-)Notruf) · · · − − − · · · - # HH - # (Fehler; Irrung; - # Wiederholung - # ab letztem - # vollständigen Wort) · · · · · · · · -' -} - -## Convert morse code to beep(1) arguments. -morse2beeparg() { -sed " - s: : -n -f 1 -l $dit:g - s:·: -n -f $freq -l $dit:g - s:−: -n -f $freq -l $dah:g -" | - sed ' - 1s:^:beep -f 1 -l 1: -' -} - -compile() { - char2morse -} - -execute() { - `morse2beeparg` -} - -## main - process either [any non-option] arguments or stdin. -if test $# -gt 0; then - echo "$*" -else - cat -fi | -case "$mode" in - (compile) compile;; - (execute) execute;; - (compile+execute) compile | execute;; - (*) echo bad mode: $mode >&2; exit 23;; -esac -- cgit v1.2.3