File: webify.pl

package info (click to toggle)
gnuplot 6.0.2%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 14,940 kB
  • sloc: ansic: 95,319; cpp: 7,590; makefile: 2,470; javascript: 2,328; sh: 1,531; lisp: 664; perl: 304; pascal: 191; tcl: 88; python: 46
file content (123 lines) | stat: -rwxr-xr-x 3,873 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/perl -w
#
# Convert a single gnuplot demo script to a web page
# Usage:
#	webify xxx
#
# Reads xxx.dem and creates xxx.html along with associated 
# png images output to xxx.<n>.png 
#
# If gpsavediff is present also create a set of scripts
# xxx.<n>.gnu corresponding to the minimal set of commands 
# needed to generate that png image.
#
# If gnuplot_demo.css is present, link to it as a stylesheet.
#
# Ethan A Merritt <merritt@u.washington.edu>
# December 2003
#
# EAM Jan 2004
#   use gpsavediff if available
#   link to gnuplot_demo.css if available
#
# EAM Aug 2005
# If DEMOTERM is present as an environmental variable, then use
#    set term DEMOTERM
# rather than the default terminal settings
#    setenv DEMOTERM "pngcairo font 'arial,10' transparent size 600,400"
#    ./webify.pl image
#
# EAM Apr 2009
#    new layout for generated web pages
#
use Env qw(DEMOTERM GNUPLOT_LIB);

use Time::localtime;
use HTML::Entities;

# Use the in-tree copy of gnuplot if there is one
	my $gnuplot = ( -x "../../src/gnuplot" ) ? "../../src/gnuplot" : "gnuplot" ;

	if ((!defined $ENV{GNUPLOT_LIB}) || $GNUPLOT_LIB eq "") {
	    $GNUPLOT_LIB = "..";
	}
	my $date = ctime();
	my $plot = 1;

# input and output files
	open(IN,  "<$GNUPLOT_LIB/$ARGV[0].dem") or die "can't open $GNUPLOT_LIB/$ARGV[0].dem";
	open(OUT, ">$ARGV[0].html") or die "can't open $ARGV[0].html";
	binmode IN, ":encoding(UTF-8)";
	binmode OUT,":encoding(UTF-8)";

# open pipe to gnuplot and set terminal type
	open(GNUPLOT, "|$gnuplot") or die "can't find gnuplot";
	binmode GNUPLOT,":encoding(UTF-8)";
	if ((defined $ENV{DEMOTERM}) && $DEMOTERM ne "") {
	    print GNUPLOT "set term $DEMOTERM\n";
	} else {
	    print GNUPLOT "set term pngcairo font 'arial,10' transparent size 600,400\n";
	}
	print GNUPLOT "set output \"$ARGV[0].$plot.png\"\n";

# suppress animations
 	print GNUPLOT "NO_ANIMATION = 1\n";

# find out if gpsavediff is available in current path
	my $savescripts = T;
	{local $^W=0; $savescripts = open(FOO, "|gpsavediff") }
	close FOO if ($savescripts);

# Boiler plate header
	print OUT "<html>\n<head>\n<title>gnuplot demo script: $ARGV[0].dem </title>\n";
	print OUT "<meta charset=\"UTF-8\" />\n";
	print OUT "<link rel=\"stylesheet\" href=\"gnuplot_demo.css\" type=\"text/css\">\n"
		  if (-e "gnuplot_demo.css");
	print OUT "</head>\n";
	print OUT "<body>\n";
	print OUT "<a href=index.html><image src=return.png alt=\"Back to demo index\" class=\"icon-image\"></a>\n";
	print OUT "<h2>gnuplot demo script: <font color=blue>$ARGV[0].dem</font> </h2>\n";
	print OUT "<i>autogenerated by webify.pl on $date</i>";

# try to find gnuplot version
	$version = `$gnuplot --version`;
	print OUT "\n<br><i>gnuplot version $version</i>";
	print OUT "<hr>\n";

# Start processing
	print OUT "<table><tr><td class='LIMG'>";
	print OUT "<img src=\"$ARGV[0].$plot.png\" alt=\"\">\n";
	print OUT "</td><td>";
	print OUT "<pre>\n";

	while (<IN>) {
		if (/^ *pause -1/) {
			if ($savescripts) {
			    print OUT "<br><p>Click <a href=$ARGV[0].$plot.gnu>here</a> ",
				  "for minimal script to generate this plot</p>\n";
			    print GNUPLOT "save \"| gpsavediff > $ARGV[0].$plot.gnu\"\n";
			}
			print OUT "</pre></td></tr></table>\n<br clear=all>\n<hr>\n";
			$plot++;
			print OUT "<table><tr><td class='LIMG'>";
			print OUT "<img src=\"$ARGV[0].$plot.png\" alt=\"\">\n";
			print OUT "</td><td>\n";
			print OUT "<pre>\n";
			print GNUPLOT "set output \"$ARGV[0].$plot.png\"\n";
		} elsif (/^pause/) {
			print GNUPLOT "set output \"$ARGV[0].$plot.png\"\n";
		} elsif (/^ *reset/) {
			print GNUPLOT;
		} else {
			print OUT HTML::Entities::encode($_);
			print GNUPLOT;
		}
	}

# Amazingly enough, that's it.
# Unlink leftover empty plot before leaving.
	close GNUPLOT;
	unlink("$ARGV[0].$plot.png");
	print OUT "</pre></td></tr></table>\n";
	print OUT "</body>\n</html>\n";