yatex

annotate newpage.rb @ 570:2ed79846fd53

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