annotate newpage.rb @ 364:d69fd7b1ac4d dev yatex-1.78

yatex-1.78
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 26 Dec 2014 01:02:52 +0900
parents f8420028f0fb
children 77a2fd4fd634
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
138
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
1 #!/usr/bin/env ruby
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
2 # THIS is very very tentative. Insufficient examination of function.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
3 # Create new HTML file referring other HTML file in the same directory.
139
e9c1e80f232e Add short documentation.
yuuji@gentei.org
parents: 138
diff changeset
4 # (C)2010 by HIROSE Yuuji [yuuji@yatex.org]
140
f8420028f0fb Fix path to css.
yuuji@gentei.org
parents: 139
diff changeset
5 # Last modified Mon Sep 6 16:16:33 2010 on firestorm
364
d69fd7b1ac4d yatex-1.78
HIROSE Yuuji <yuuji@gentei.org>
parents: 140
diff changeset
6 # $Id: newpage.rb,v 33c8875f52f9 2012-01-12 12:26 +0900 yuuji $
139
e9c1e80f232e Add short documentation.
yuuji@gentei.org
parents: 138
diff changeset
7 # http://www.yatex.org
138
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
8 # Example:
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
9 # newpage.rb Create new index.html by copying template.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
10 # newpage.rb foo.html Create new foo.html whose by copying header
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
11 # and footer from index.html.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
12 # newpage.rb d/sub.html Create new directory d (if necessary) and
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
13 # d/sub.html by copying header/footer from
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
14 # index.html in a same directory or parent
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
15 # directory rewriting href to css file
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
16 # considering relative path.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
17 # newpage.rb -o [file] Forcibly overwrite existing file.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
18 # newpage.rb -c cssfile Set `cssfile' as defualt css.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
19 # newpage.rb -t template Set `template' as HTML template.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
20 require 'fileutils'
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
21
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
22 mydir=File.dirname($0)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
23 myname=File.basename($0, ".rb")
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
24
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
25
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
26 index = 'index.html'
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
27 cssdefault = nil
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
28 overwrite = nil
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
29 template = __FILE__ #File.expand_path(myname+".html", mydir)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
30
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
31 def guesscss(dir)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
32
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
33 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
34
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
35 while ARGV[0] && /^-/ =~ (a0=ARGV[0].dup) && ARGV.shift
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
36 break if /^--$/ =~ a0
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
37 while /^-[A-Za-z]/ =~ a0
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
38 case a0
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
39 when "-c" # css
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
40 ARGV.shift; cssdefault = ARGV[0]
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
41 when "-t" # template
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
42 ARGV.shift; cssdefault = ARGV[0]
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
43 when "-o" # overwrite
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
44 overwrite = true
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
45 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
46 a0.sub!(/-.(.*)/, '-\\1')
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
47 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
48 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
49
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
50 outfile = ARGV[0]||index
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
51 if !overwrite && test(?s, outfile) then
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
52 STDERR.printf("File \`%s' exists. Use -o option to overwrite.\n", outfile)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
53 exit 1
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
54 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
55
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
56 # set css default file
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
57 dots = 0
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
58 of = outfile
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
59 dots+=1 while "." != (of=File.dirname(of))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
60 cssdir = "../"*dots
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
61
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
62 # set copy source
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
63 outdir = File.dirname(outfile)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
64 if "index.html" == File.basename(outfile)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
65 src = (dots == 0 ? template : "index.html")
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
66 elsif test(?s, outdir+"/index.html")
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
67 src = outdir+"/index.html"
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
68 else
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
69 src = template
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
70 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
71
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
72 FileUtils.mkdir_p(outdir)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
73
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
74 cssfile = cssdir+"main.css"
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
75 name = File.basename(outfile, ".html")
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
76 begin
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
77 open(outfile, "w") do |out|
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
78 #IO.foreach(src) do |line|
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
79 if src == __FILE__
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
80 input = DATA
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
81 else
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
82 input = open(src, "r")
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
83 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
84 begin
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
85 html = input.readlines.join
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
86 html.sub!(%r|^<h1.*<\/h1>|i, sprintf("<h1>%s</h1>\n", name))
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
87 if !html.gsub!("__CSSFILE__", cssfile)
140
f8420028f0fb Fix path to css.
yuuji@gentei.org
parents: 139
diff changeset
88 html.gsub!(/href=(['\"])(.*\.css)\1/, 'href="'+cssdir+'\2"')
138
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
89 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
90 html.gsub!("__TITLE__", name)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
91 out.print html
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
92 ensure
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
93 input.close
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
94 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
95 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
96 printf(<<_EOS_, outfile, name)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
97 <a href="%s">%s</a>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
98 _EOS_
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
99 rescue
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
100 p $!
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
101 STDERR.printf(<<'_EOS_', outfile, outfile)
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
102 Cannot output to [%s]. Do
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
103 chmod +w %s
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
104 or
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
105 chmod +w .
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
106 or change output directory.
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
107 _EOS_
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
108 exit 1
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
109 end
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
110
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
111 __END__
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
112 <html>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
113 <head>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
114 <title>__TITLE__</title>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
115 <style type="text/css">
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
116 <!--
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
117 /* Local CSS here */
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
118 -->
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
119 </style>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
120 <link rel="stylesheet" type="text/css" href="__CSSFILE__">
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
121 </head>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
122
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
123 <body>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
124 <h1>__TITLE__</h1>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
125
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
126 <!--#include virtual="/~yuuji/signature.html"-->
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
127 </body>
b7b54906ac3b add newpage.rb
yuuji@gentei.org
parents:
diff changeset
128 </html>

yatex.org