Pythonで文字列をモールス信号に変換する -定義編-
今回はタイトル通り文字列をモールス信号に変換するライブラリを作ってみる(定義編)。
実装編についてはこちら。
Windows
限定で、他OS用の差し替えについては実装編の最後の方で少し触れる程度になる予定。
また自作ライブラリotsuvalidatorを使用するので(宣伝!)インストールが必要。
それ以外の非標準ライブラリは不使用。
仕様を決める
変換可能な文字列
対応するのは半角英数字と.,?_+-×^/@()"'=
それから半角空白。
また、半角英字はすべて大文字に変換して扱う。
連続する空白は1つとして扱う。
和音対応を考えると重複するパターンが出てしまうので無し。
出力
文字列として出力した際には元のテキスト1を表示することにする。
またmorse_code
という属性でモールス表現
を取得できるようにする。
インスタンス生成
引数として使用するのは以下の通り。
名前 | 型 | 概要 |
---|---|---|
text | str | モールスとして扱いたい文字列 |
short | str | モールス信号の短点1として扱いたい文字 |
long | str | モールス信号の長点1として扱いたい文字 |
sep | str | モールス信号の文字間1に使用したい文字 |
frequency | int | 再生時に使用する周波数37 ~32767 の間 |
minimum_length | int | 再生時の1音の長さ(ミリ秒) |
以上の内、必須なのはtext
のみ。
short
, long
, sep
は1文字
でそれぞれ異なる必要がある。
minimum_length
は再生時の基準となる長さ。
機能
関数 | 概要 | 備考 |
---|---|---|
play | モールス信号を再生する | |
parse_morse | モールス表現からMorseCode インスタンスを生成する |
クラスメソッド |
__add__ | MorseCode インスタンスまたはstr型+x でエラーが発生しないオブジェクトx からMorseCode インスタンスを生成する本文以外の __init__ 用引数はself から引き継ぐ |
足し算用のマジックメソッド |
play
モールス信号を再生する。
引数は以下の通り。
名前 | 型 | 概要 |
---|---|---|
repeat | int | 本文の繰り返し回数 |
BT | bool | 本文再生前に送信開始の合図BT を再生するかどうか |
AR | bool | 本文再生後に送信終了の合図AR を再生するかどうか |
必須引数は無し。
parse_morse
モールス表現を基にモールス信号インスタンスを生成する。
引数は以下の通り。
名前 | 型 | 概要 |
---|---|---|
code | str | モールス表現の文字列short , long , sep と半角空白以外の文字を含んではならない |
short | str | モールス信号の短点[^2]として扱いたい文字 |
long | str | モールス信号の長点[^3]として扱いたい文字 |
sep | str | モールス信号の文字間[^4]に使用したい文字 |
frequency | int | 再生時に使用する周波数37 ~32767 の間 |
minimum_length | int | 再生時の1音の長さ(ミリ秒) |
必須引数はcode
のみ。
注意点として、X
と×
が同じモールス表現になるため1×2=2
となるようなモールス表現を与えた場合1X2=2
として解釈されてしまう。
__add__
MorseCodeインスタンス + object
という式を実行するためのマジックメソッド。
MorseCodeインスタンス += object
は非対応なので注意。
object
はMorseCodeインスタンス
かstr + object
がエラーにならないものであればOK。
self
からtext
以外のインスタンス生成で受け取る引数を受け継いで、新しいtext
を持つMorseCodeインスタンス
を生成する。