2010-05-31 19:29:57 +00:00
|
|
|
class Graph < Nanoc3::Filter
|
|
|
|
identifier :graph
|
2010-06-24 05:43:49 +00:00
|
|
|
@@tmpfic="/tmp/graphtemp.dot"
|
2012-10-11 08:14:06 +00:00
|
|
|
def solarized(str)
|
|
|
|
str.gsub(
|
|
|
|
%r{color="base03"},'color="#002b36"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base02"},'color="#073642"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base01"},'color="#586e75"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base00"},'color="#657b83"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base0"},'color="#839496"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base1"},'color="#93a1a1"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base2"},'color="#eee8d5"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="base3"},'color="#fdf6e3"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="yellow"},'color="#b58900"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="orange"},'color="#cb4b16"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="red"},'color="#dc322f"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="magenta"},'color="#d33682"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="violet"},'color="#6c71c4"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="blue"},'color="#268bd2"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="cyan"},'color="#2aa198"'
|
|
|
|
).gsub(
|
|
|
|
%r{color="green"},'color="#859900"'
|
|
|
|
)
|
|
|
|
end
|
2010-05-31 19:29:57 +00:00
|
|
|
def run(content, params={})
|
2010-09-21 14:52:25 +00:00
|
|
|
content.gsub(%r{<graph( title="([^"]*)")?>(.+?)</graph>}m) do |full|
|
2010-06-25 22:43:16 +00:00
|
|
|
# FileUtils.rm(@@tmpfic)
|
2010-09-21 14:52:25 +00:00
|
|
|
title=$2
|
|
|
|
str=$3
|
2010-05-31 19:29:57 +00:00
|
|
|
filename=title.gsub(/[^a-zA-Z0-9_]/,"_")
|
2010-06-24 05:43:49 +00:00
|
|
|
File.open(@@tmpfic,'w') do |f|
|
|
|
|
f.write %[ digraph Source {
|
2010-05-31 19:29:57 +00:00
|
|
|
fontsize=10;
|
|
|
|
rankdir="LR";
|
2012-10-11 08:14:06 +00:00
|
|
|
graph [truecolor bgcolor="#fafafc"];
|
2012-10-18 13:30:51 +00:00
|
|
|
node [width=0, height=0, fontname="CMU Serif Italic", shape="circle", color="#657b83", style="filled" fillcolor="#fafafc", fontcolor="#657b83"] ;
|
2012-10-11 08:14:06 +00:00
|
|
|
edge [fontname="CMU Serif Italic", arrowsize=.5, color="#657b83",fontcolor="#657b83"] ; ]
|
|
|
|
f.write solarized(str)
|
2010-06-24 05:43:49 +00:00
|
|
|
f.write %[}]
|
|
|
|
end
|
|
|
|
FileUtils.mkdir_p('output'+@item.path+'graph')
|
2010-05-31 19:29:57 +00:00
|
|
|
webpath=@item.path + 'graph/' + filename + '.png'
|
|
|
|
path='output'+webpath
|
2012-10-11 14:52:20 +00:00
|
|
|
if str.match(/pos=/)
|
|
|
|
prog="neato"
|
|
|
|
else
|
|
|
|
prog="dot"
|
|
|
|
end
|
|
|
|
# puts "#{prog} -Tpng -o #{path} /tmp/graphtemp.dot"
|
|
|
|
system("#{prog} -Tpng -o #{path} /tmp/graphtemp.dot")
|
2011-05-30 12:12:24 +00:00
|
|
|
# puts %{<img alt="#{title}" src="#{webpath}"/>}
|
2012-10-11 09:09:56 +00:00
|
|
|
%{<figure><img alt="#{title}" src="#{webpath}"/><figcaption>#{title}</figcaption></figure>}
|
2010-05-31 19:29:57 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|