Ruby | Gviz さんが用意してくれている Graphviz に関する定数をありがたく使う
概要
Gviz さんが用意してくれている Graphviz に関する定数をありがたく使います。
Graphviz には非常に多くの設定値が用意されています。
Gviz さんは、その設定値を定数として保持しているため、 Ruby のコード内で
定数を取得してループして使用・・・・など、便利に利用できます。
Gviz さんが定数を隠し持っている場所。
https://github.com/melborne/Gviz/blob/master/lib/gviz/graphviz_attrs.rb
たぶん、定数クラスなので割り切ってインデントをなしにしているところが興味深いコード。
定数出力祭
ソースコード
require "gviz"
require "pp"
Gviz.constants.each do |const|
print const, ":"
pp Gviz.const_get(const)
end
出力
COLOR_NAME_BASE:{"aliceblue"=>["aliceblue"], # 略 ...
# :
# : 略
# :
Node:Gviz::Node
Edge:Gviz::Edge
VERSION:0.3.4
Command:Gviz::Command
定数を利用したプログラムを作成
前提
下記の記事作成時点で、定数の存在を知らなかったので
下記で作成したソースをリファクタリングしてみます
コード(修正前)
・定数を知らずに自前で定義してました
# :
# : 略
# :
layouts = %i(circo dot fdp neato osage patchwork sfdp twopi)
# :
# : 略
# :
コード(修正前)
・定数に置き換えました
# :
# : 略
# :
layouts = Gviz::LAYOUTS.delete_if { |e|e =~ /nop/ }
# :
# : 略
# :
出力結果
リファクタリングしただけなので出力は下記記事のままです。