diff newpage.rb @ 138:b7b54906ac3b dev

add newpage.rb
author yuuji@gentei.org
date Wed, 07 Jul 2010 22:27:25 +0900
parents
children e9c1e80f232e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/newpage.rb	Wed Jul 07 22:27:25 2010 +0900
@@ -0,0 +1,124 @@
+#!/usr/bin/env ruby
+# THIS is very very tentative.  Insufficient examination of function.
+# Create new HTML file referring other HTML file in the same directory.
+# Example:
+#	newpage.rb		Create new index.html by copying template.
+#	newpage.rb foo.html	Create new foo.html whose by copying header
+#				and footer from index.html.
+#	newpage.rb d/sub.html	Create new directory d (if necessary) and
+#				d/sub.html by copying header/footer from
+#				index.html in a same directory or parent
+#				directory rewriting href to css file
+#				considering relative path.
+#	newpage.rb -o [file]	Forcibly overwrite existing file.
+#	newpage.rb -c cssfile	Set `cssfile' as defualt css.
+#	newpage.rb -t template	Set `template' as HTML template.
+require 'fileutils'
+
+mydir=File.dirname($0)
+myname=File.basename($0, ".rb")
+
+
+index = 'index.html'
+cssdefault = nil
+overwrite = nil
+template = __FILE__ #File.expand_path(myname+".html", mydir)
+
+def guesscss(dir)
+  
+end
+
+while ARGV[0] && /^-/ =~ (a0=ARGV[0].dup) && ARGV.shift
+  break if /^--$/ =~ a0
+  while /^-[A-Za-z]/ =~ a0
+    case a0
+    when "-c"                   # css
+      ARGV.shift; cssdefault = ARGV[0]
+    when "-t"                   # template
+      ARGV.shift; cssdefault = ARGV[0]
+    when "-o"                   # overwrite
+      overwrite = true
+    end
+    a0.sub!(/-.(.*)/, '-\\1')
+  end
+end
+
+outfile = ARGV[0]||index
+if !overwrite && test(?s, outfile) then
+  STDERR.printf("File \`%s' exists.  Use -o option to overwrite.\n", outfile)
+  exit 1
+end
+
+# set css default file
+dots = 0
+of = outfile
+dots+=1 while "." != (of=File.dirname(of))
+cssdir = "../"*dots
+
+# set copy source
+outdir = File.dirname(outfile)
+if "index.html" == File.basename(outfile)
+  src = (dots == 0 ? template : "index.html")
+elsif test(?s, outdir+"/index.html")
+  src = outdir+"/index.html"
+else
+  src = template
+end
+
+FileUtils.mkdir_p(outdir)
+
+cssfile = cssdir+"main.css"
+name = File.basename(outfile, ".html")
+begin
+  open(outfile, "w") do |out|
+    #IO.foreach(src) do |line|
+    if src == __FILE__
+      input = DATA
+    else
+      input = open(src, "r")
+    end
+    begin
+      html = input.readlines.join
+      html.sub!(%r|^<h1.*<\/h1>|i, sprintf("<h1>%s</h1>\n", name))
+      if !html.gsub!("__CSSFILE__", cssfile)
+        html.gsub!(/href=(['\"])(.*\.css)\1/, 'href="\1"')
+      end
+      html.gsub!("__TITLE__", name)
+      out.print html
+    ensure
+      input.close
+    end
+  end
+  printf(<<_EOS_, outfile, name)
+<a href="%s">%s</a>
+_EOS_
+rescue
+  p $!
+  STDERR.printf(<<'_EOS_', outfile, outfile)
+Cannot output to [%s].  Do
+  chmod +w %s
+or
+  chmod +w .
+or change output directory.
+_EOS_
+  exit 1
+end
+
+__END__
+<html>
+<head>
+<title>__TITLE__</title>
+<style type="text/css">
+<!--
+/* Local CSS here */
+-->
+</style>
+<link rel="stylesheet" type="text/css" href="__CSSFILE__">
+</head>
+
+<body>
+<h1>__TITLE__</h1>
+
+<!--#include virtual="/~yuuji/signature.html"-->
+</body>
+</html>

yatex.org