diff --git a/lib/mpost.rb b/lib/mpost.rb new file mode 100644 index 000000000..278a8a3bc --- /dev/null +++ b/lib/mpost.rb @@ -0,0 +1,46 @@ +class Graph < Nanoc3::Filter + identifier :graph + @@tmpfic="/tmp/graphtemp.mp" + def run(content, params={}) + content.gsub(%r{(.+?)}m) do |full| + # FileUtils.rm(@@tmpfic) + title=$2 + str=$3 + filename=title.gsub(/[^a-zA-Z0-9_]/,"_") + File.open(@@tmpfic,'w') do |f| + f.write %{ + color base03 :=(0.0 ,0.168627450980392,0.211764705882353); + color base02 :=(0.0274509803921569,0.211764705882353,0.258823529411765); + color base01 :=(0.345098039215686 ,0.431372549019608,0.458823529411765); + color base00 :=(0.396078431372549 ,0.482352941176471,0.513725490196078); + color base0 :=(0.513725490196078 ,0.580392156862745,0.588235294117647); + color base1 :=(0.576470588235294 ,0.631372549019608,0.631372549019608); + color base2 :=(0.933333333333333 ,0.909803921568627,0.835294117647059); + color base3 :=(0.992156862745098 ,0.964705882352941,0.890196078431372); + color yellow :=(0.709803921568627 ,0.537254901960784,0.0); + color orange :=(0.796078431372549 ,0.294117647058824,0.0862745098039216); + color red :=(0.862745098039216 ,0.196078431372549,0.184313725490196); + color magenta:=(0.827450980392157 ,0.211764705882353,0.509803921568627); + color violet :=(0.423529411764706 ,0.443137254901961,0.768627450980392); + color blue :=(0.149019607843137 ,0.545098039215686,0.823529411764706); + color cyan :=(0.164705882352941 ,0.631372549019608,0.596078431372549); + color green :=(0.52156862745098 ,0.6 ,0.0); + + beginfig(1) + } + f.write str + f.write %{\nendfig;\nend\n} + end + FileUtils.mkdir_p('output'+@item.path+'graph') + webpath=@item.path + 'graph/' + filename + '.png' + path='output'+webpath + if str.match(/pos=/) + prog="neato" + else + prog="dot" + end + system("cd /tmp && mpost graphtemp.mp && convert -density 150 graphtemp.1 #{path}") + %{
#{title}
#{title}
} + end + end +end