なでしこさんで色のリスト作成
今週も頭が悪く、怠け続けてしまい、書きたいことを書くための作業時間が取れず。
仕方ない、今日も元気に雑プログラムで繋いでいきますよ。
今回やったこと
なでしこで、システムで定義された色のリストを出力する。
プログラム
色のリスト作成 (プログラム貯蔵庫)
ポイント
システム関数が色を表すかの判定
●(Aを)色判定とは
Aで1文字右部分が「色」と等しいかを戻す。
ここまで。システム関数の名前を受け取り、その戻り値が色を表すかを判定する関数を用意する。
今回は、単純に名前が「色」で終わるかで判定している。
テーブルの枠組みの用意
「TABLE」のDOM部品作成してDOM親部品設定。
テーブルヘッダ欄は「THEAD」のDOM部品作成。
テーブル親は「TBODY」のDOM部品作成。
テーブルヘッダ欄にDOM親部品設定。
テーブルヘッダは「TR」のDOM部品作成。
["システム関数", "返り値", "色"]を反復
テーブルヘッダにDOM親部品設定。
「TH」のDOM部品作成してDOM親部品設定。
対象のラベル作成。
ここまで。テーブルを表す table 要素を作る。
その中に thead 要素と tbody 要素を入れる。
その thead 要素の中に、ヘッダ行を表す tr 要素を入れる。
その中に、ヘッダを表す th 要素を入れる。
th 要素の作成時は、同じような構造を並べるので、「反復」を用いて処理をまとめた。
色のリストの作成
システム関数一覧取得して{関数}色判定で配列フィルタ。
それを反復
「色は{対象}」をナデシコする。
テーブル親にDOM親部品設定。
テーブル行は「TR」のDOM部品作成。
それにDOM親部品設定。
「TD」のDOM部品作成してDOM親部品設定。
対象のラベル作成。
テーブル行にDOM親部品設定。
「TD」のDOM部品作成してDOM親部品設定。
色のラベル作成。
テーブル行にDOM親部品設定。
「TD」のDOM部品作成。
それの「背景色」に色をDOMスタイル設定。
ここまで。「システム関数一覧取得」で、システム関数の名前のリストを取得する。
「配列フィルタ」で、その中から色を表すと思われるものを抽出する。
抽出した名前ごとに「反復」し、テーブルに行を追加していく。
「ナデシコ」で対象の名前が表すシステム関数を実行し、その返り値を取得する。
テーブルに行を追加し、システム関数の名前と返り値をテキスト (ラベル) で入れる。
さらに、背景色をその色にする列も作る。
今回踏んだNG集
コードの動作確認は、Web簡易エディタ (v3.7.13) で行った。
色を表しそうなシステム関数のリストを変数に入れようとする
●(Aを)色判定とは
Aで1文字右部分が「色」と等しいかを戻す。
ここまで。
色リストはシステム関数一覧取得して{関数}色判定で配列フィルタ。を実行すると、
[エラー][文法エラー]main.nako3(5行目): 未解決の単語があります: [関数『システム関数一覧取得』して] 次の命令の可能性があります: - A(で|の)B(を|について)配列フィルタ
というエラーになった。
「ナデシコ」で戻り値を直接取得しようとする
「黒色」をナデシコして表示。を実行すると、
[実行時エラー]main.nako3(1行目): 不完全な文です。単語『黒色』が解決していません。
というエラーになった。
また、
●(Aの)値とは
Aを戻す。
ここまで。
「黒色の値」をナデシコして表示。を実行すると、空文字列が出力された。
「ナデシコ」はプログラムを実行するだけで、評価結果を返す命令ではないようである。
「ナデシコ」の使用後「DOM親要素設定」をせずに「DOM部品作成」する
『値は「ほげ」』をナデシコする。
値のラベル作成。を実行すると、「ほげ」が通常実行結果がされる場所ではなく、ページの最下部に表示された。
「ナデシコ」を用いると、なぜかDOM親要素が body 要素に設定されるようである。
おわりに
なでしこで、標準で定義されている色のリストを出力できた。
WEB色見本 原色大辞典 - HTMLカラーコード
などで紹介されている、ブラウザで定義されている色に比べたら少ないようである。
とはいえ、やたらと定義を増やしてもわかりにくくなるかもしれないし、使いたければブラウザで定義されている色の名前や色のRGB表現などを直接書けばいいので、悪くはないだろう。


コメント