Prolog 写経記 その 82 text_attr/1

(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

続けて text_attr/1 を写経します.相当ヤケ気味.

解説

text_attr(Attr) は画面上のテキストの属性を選択する.引数の Attr は単一の値か値のリストである.引数が取りうる値は boldunderlineblinkreverse そして normal である.

ふーん.
おらいが使っているのは Windows 版の SWI-Prolog なんですが...
ちゃんと役に立つのでしょうか?
かなり微妙...
(こぴぺ)

モード

text_attr(+)

ふむ.

定義

では,こいつの定義を写経しませう.

text_attr([]) :- !.
text_attr([Attr | Attrs]) :- !,
	text_attr(Attr),
	text_attr(Attrs).
text_attr(Attr) :-
	attr_code(Attr, Code),
	escape(Code, 'm').

attr_code(normal, '0') :- !.
attr_code(bold, '1') :- !.
attr_code(underline, '4') :- !.
attr_code(blink, '5') :- !.
attr_code(reverse, '7').

つまんね.

注意

テキスト属性 normal は,それまでの属性の設定をリセットする.また他の属性と一緒に用いてはならない.そのほかの属性は組み合わせて用いられる.

やっぱり Windows 版の SWI-Prolog で動くのかは微妙...

では使用例を写経しませう.

write_blink_reverse(X) :-
	text_attr([blink, reverse]),
	write(X).

reset_attributes :-
	text_attr(normal).

使ってみませう.

7 ?- write_blink_reverse(hoge).
hoge

Yes
8 ?- reset_attributes.


Yes

ぐはぁっ,やっぱりダメっぽい.