LoginSignup
2
2

More than 5 years have passed since last update.

Ruby | Gviz さんが用意してくれている Graphviz に関する定数をありがたく使う

Posted at

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

定数を利用したプログラムを作成

前提

下記の記事作成時点で、定数の存在を知らなかったので
下記で作成したソースをリファクタリングしてみます

Gviz で様々な layout を試してみる

コード(修正前)

・定数を知らずに自前で定義してました

# :
# : 略
# :
layouts = %i(circo dot fdp neato osage patchwork sfdp twopi)
# :
# : 略
# :

コード(修正前)

・定数に置き換えました

# :
# : 略
# :
layouts = Gviz::LAYOUTS.delete_if { |e|e =~ /nop/ }
# :
# : 略
# :

出力結果

リファクタリングしただけなので出力は下記記事のままです。

Gviz で様々な layout を試してみる

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2