API Reference¶
基本的なクラスと関数¶
-
class
framework.
Operator
¶ 値を生成したり、加工したり、出力したりするもの
オペレータは1個の入力値を受け取り、0個以上の出力値を返す。 もしくは、これ以上処理しないことを示す
EndOfList
を送出する。複数のオペレータを
OperatorChain
を使って繋ぐことで、プログラムの処理を表現する。
-
class
framework.
OperatorChain
(*operators)¶ 複数のオペレータを繋いで、一個のオペレータにしたもの
- パラメータ
operators (
Operator
) -- 繋ぎたいオペレータ。引数に与えた順番で実行される。
一つのオペレータだけを与えた場合は、与えられたオペレータと同じ挙動になる。
>>> class TestOperator(Operator): # テスト用の値を倍にするオペレータ ... def execute(self, x): ... return [x * 2] >>> TestOperator().execute(2) [4] >>> OperatorChain(TestOperator()).execute(2) [4]
二つ以上のオペレータを渡すと、与えられた順に実行した結果を返す。
>>> OperatorChain(TestOperator(), TestOperator()).execute(2) [8]
一つもオペレータが与えられなかった場合、入力をそのまま出力するオペレータになる。
>>> OperatorChain().execute(2) [2]
-
execute
(value)¶ 結合されたオペレータを実行する
- パラメータ
value (
Any
) -- 入力値。- 戻り値の型
List
[Any
]- 戻り値
出力値のリスト。
-
framework.
execute
(*operators)¶ オペレータを繋いで、
EndOfList
が送出されるまで繰り返し実行する- パラメータ
operators (
Operator
) -- 実行したいオペレータのリスト
最初のオペレータの入力は常に None になる。
>>> class TestPrinter(Operator): # テスト用の5回だけ入力を表示するオペレータ ... def __init__(self): ... self.count = 0 ... def execute(self, x): ... self.count += 1 ... if self.count > 5: ... raise EndOfList ... print(x) >>> execute(TestPrinter()) None None None None None
- 戻り値の型
None
-
class
framework.
EndOfList
¶ 処理を終了したいときに送出する例外
組み込みのオペレータ¶
ジェネレータ¶
-
class
framework.
SequenceGenerator
(from_=0, step=1)¶ 無限の数列を作るジェネレータ
- パラメータ
from -- 最初に出力される数。省略すると0になる。
step (
float
) -- 一回の呼び出しで変化する数。省略すると1ずつ増える。
-
execute
(value)¶ 数列の次の値を取り出す
- パラメータ
value (
Any
) -- 入力値だが、常に無視される。- 戻り値の型
List
[float
]- 戻り値
昇順の数値。
-
framework.
RangeGenerator
(from_, to, step=1)¶ 指定の数値の間をカウントする数列を生成するジェネレータ
中身は
SequenceGenerator
とLimitFilter
を組み合わせただけのもの。- パラメータ
from -- カウントを開始する値。
to (
float
) -- カウントを終了する値。step (
float
) -- 一回の実行で増える数。
>>> execute( ... RangeGenerator(1, 8, 2), # 1から8までの2刻みの数字を作って、 ... ConsolePrinter(), # コンソールに表示する。 ... ) 1 3 5 7
>>> execute( ... RangeGenerator(3, 1, -1), # 降順も作れる ... ConsolePrinter(), ... ) 3 2 1
- 戻り値の型
フィルタ¶
-
class
framework.
LimitFilter
(num)¶ 指定の回数で処理を停止させるフィルタ
- パラメータ
num (
int
) -- 停止するまでに処理する数。
>>> execute( ... SequenceGenerator(), # 無限に数列を生成して、 ... LimitFilter(5), # 先頭から5つだけ値を取り出し、 ... ConsolePrinter(), # コンソールに表示する。 ... ) 0 1 2 3 4
-
class
framework.
ReplaceFilter
(rule, replace)¶ 特定の条件にマッチする値が入力されたら別の値に置換するフィルタ
- パラメータ
rule (
Callable
[[Any
],bool
]) -- 置換するかどうかを決める関数。Trueなら値を置きかえる。replace (
Any
) -- どんな値に置換するか。
>>> execute( ... RangeGenerator(1, 5), ... ReplaceFilter(lambda x: x == 2, "two"), ... ConsolePrinter(), ... ) 1 two 3 4 5
-
execute
(value)¶ 受け取った値をrule関数に渡し、Trueが返ってきたら置換する。
- パラメータ
value (
Any
) -- 入力値。- 戻り値の型
List
[Any
]- 戻り値
置換された値、もしくは入力値そのものが入ったリスト。
-
framework.
ModReplaceFilter
(num, replace)¶ 特定の値の倍数が入力されたら値を置換するフィルタ
中身はReplaceFilter。ほぼFizzBuzz用。
>>> execute( ... RangeGenerator(1, 5), ... ModReplaceFilter(2, "*"), ... ConsolePrinter(), ... ) 1 * 3 * 5
- 戻り値の型
-
class
framework.
HTMLFilter
(tag='p')¶ 入力をHTMLタグで囲って出力するフィルタ
- パラメータ
tag (
str
) -- 入力値を囲うのに使いたいタグ。
>>> execute( ... RangeGenerator(1, 5), ... HTMLFilter(), ... ConsolePrinter(), ... ) <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</p>
-
execute
(value)¶ 入力をタグで囲って出力する。
- パラメータ
value (
Any
) -- 入力値。型は何でも良い。- 戻り値の型
List
[str
]- 戻り値
入力値をタグで囲った文字列が入ったリスト。
プリンタ¶
-
class
framework.
FilePrinter
(file)¶ 入力値をFile like objectに出力するプリンタ
- パラメータ
file (
TextIO'>
) -- 出力先となるファイルのインスタンス
>>> import io >>> buf = io.StringIO() >>> execute( ... RangeGenerator(1, 5), ... FilePrinter(buf), ... ) >>> buf.getvalue() '1\n2\n3\n4\n5\n'
-
execute
(value)¶ 入力をファイルに出力し、そのまま出力値としても返す
- パラメータ
value (
Any
) -- 入力値。- 戻り値の型
List
[Any
]- 戻り値
入力値が入った要素数が1のリスト。
-
framework.
ConsolePrinter
()¶ 入力値をコンソールに出力するプリンタ
出力先をstdoutにした
FilePrinter
と同じもの。- 戻り値の型