#---------------------------------------------------------------------
#     Copyright (C) GFD Dennou Club, 2005-2007. 2012, All rights reserved.
#---------------------------------------------------------------------
#= Makefile for generating HTML from RD with Ruby 1.9
#
# Please see the next URL:
#   http://www.gfd-dennou.org/library/dcmodel/doc/TEBIKI.dcmodel-rd-guide.htm
#
# * Author
#   * Yasuhiro MORIKAWA <morikawa _at_ gfd-dennou.org>
#   * Masaki ISHIWATARI <momoko   _at_ gfd-dennou.org>
#   * Shin-ya MURAKAMI  <murashin _at_ gfd-dennou.org>
# * History
#   * 2012/02/07 (Shin-ya MURAKAMI)  drastic overhaul for Ruby 1.9
#   * 2007/01/16 (Yasuhiro MORIKAWA) $KCODE is specified by $OUTCODE.
#   * 2007/01/01 (Yasuhiro MORIKAWA) RDOPTSJA and RDOPTSEN are added.
#   * 2006/11/08 (Yasuhiro MORIKAWA) RUBYLIB become valid.
#   * 2006/08/04 (Yasuhiro MORIKAWA) "RDHindexParser" is modified.
#   * 2006/06/22 (Yasuhiro MORIKAWA) "DEFAULTMSGJA", "DEFAULTMSGEN" are added.
#   * 2006/06/21 (Yasuhiro MORIKAWA) "HtmFileJA", "HtmFileEN" are added.
#   * 2006/06/20 (Yasuhiro MORIKAWA) "H1ToTitle" is modified
#   * 2006/06/04 (Yasuhiro MORIKAWA) Modified for XHTML 1.0 Transitional
#   * 2006/06/03 (Yasuhiro MORIKAWA) Modified for XHTML 1.0 Transitional
#   * 2006/03/19 (Yasuhiro MORIKAWA) Method of insert header, footer is modified
#   * 2006/03/19 (Yasuhiro MORIKAWA) "HEADERJA" and "HEADEREN" are added
#   * 2006/03/09 (Yasuhiro MORIKAWA) sample of "FOOTERJA" and "FOOTEREN" are modified
#   * 2006/03/08 (Yasuhiro MORIKAWA) "rd2html-ext-lib" can be used
#   * 2006/02/07 (Yasuhiro MORIKAWA) User parser is added
#   * 2006/01/04 (Yasuhiro MORIKAWA) Target "clean" and "clean.all" are modified
#   * 2006/01/02 (Yasuhiro MORIKAWA) Target "clean" and "clean.all" are modified
#   * 2005/11/06 (Yasuhiro MORIKAWA) Default CSS is modified to local site
#   * 2005/11/06 (Yasuhiro MORIKAWA) URL of reference of rdtool is updated
#   * 2005/10/12 (Yasuhiro MORIKAWA) JAPart and ENPart is modified
#   * 2005/10/12 (Yasuhiro MORIKAWA) FOOTEREN is modified
#   * 2005/10/10 (Yasuhiro MORIKAWA) default FOOTERs are modified
#   * 2005/08/14 (Yasuhiro MORIKAWA) Link to rd-hindex.rb page is added
#   * 2005/08/10 (Yasuhiro MORIKAWA) Ruby and RD Path checker is added
#   * 2005/08/10 (Yasuhiro MORIKAWA) RD Header Index inserter is added
#   * 2005/08/10 (Yasuhiro MORIKAWA) Date parser is response to multi-language
#   * 2005/08/10 (Yasuhiro MORIKAWA) Date parser is added
#   * 2005/07/07 (Yasuhiro MORIKAWA) "SUBDIRS" is deleted
#   * 2005/07/07 (Yasuhiro MORIKAWA) "chmod" and "chgrp" are added
#   * 2005/06/23 (Yasuhiro MORIKAWA) Suffix of JA file is change from "htm.ja" to "htm"
#   * 2005/06/23 (Yasuhiro MORIKAWA) Japanese commends are added
#   * 2005/06/12 (Yasuhiro MORIKAWA) Create
# 
# * Note
#   * タブは4スペース、埋め込みRubyコードは2スペースでインデント。
# 
# 
######################################################################
#
#== Settings
#
# [JAPANESE] 各種設定項目

INCLUDEFILE = 
include $(INCLUDEFILE) # Include file              (optional)
                       # [JA] インクルードファイル (任意)

GEN_JA  = 1        # 1: generate html in Japanese, 0: don't generate (necessary)
GEN_EN  = 1        # 1: generate html in English, 0: Not Create      (necessary)
                   # [JA] 1 ならば対応する言語のhtmlファイルを作成, 
                   #      0 ならば作成しない (選択必須)

INDEX_DEPTH = 0    # a depth of levels of the headers for an index 
                   # at the header of the html file (selective)
                   #   0:None, 1-3:Header Level
                   #   Note: CSS item is "ol.rd2html_hindex [ul ..]"
                   #
                   # [JA] ヘッダに生成する目次のレベルの深さ (選択必須)
                   #   0:作成しない, 1-3:ヘッダレベルに対応
                   #   備考: CSS 設定は "ol.rd2html_hindex [ul ..]" で

HEADER_JA  = "<small> \
              [ <a href=\"$(HTML_FILE_EN)\">English</a> | Japanese ] \
              [ <a href=\"/\">地球流体電脳倶楽部</a> ] /\
                <a href=\"http://www.gfd-dennou.org/library/davis/stpk\">stpk</a> /\
                <a href=\"SIGEN.htm\">SIGEN.htm</a> ] \
              </small>"
                   # [JA] JA 用 HTML ヘッダー (任意)
                   #   $(HTML_FILE_JA) は RD から生成される日本語 HTML ファイル名
                   #   $(HTML_FILE_EN) は RD から生成される英語 HTML ファイル名

HEADER_EN  = "<small> \
              [ English | <a href=\"$(HTML_FILE_JA)\">Japanese</a> ] \
              [ <a href=\"http://www.gfd-dennou.org\">GFD Dennou Club</a> /\
                <a href=\"http://www.gfd-dennou.org/library/davis/stpk\">stpk</a> ] \
              </small>"
#                   # HTML Header  (optional)
#                   #   $(HTML_FILE_JA) is Japanese HTML file generated from RD
#                   #   $(HTML_FILE_EN) is English HTML file generated from RD

#FOOTER_JA  = "<hr /> <small> \
#              dcmodel Development Group / GFD Dennou Staff  \
#              <img src=\"/library/dcmodel/htmltools/dcstaff_email.png\" \
#                  alt=\"dcstaff&\#64;&\#103;&\#102;&\#100;-dennou.org\" \
#                  align=\"middle\" /> <br /> \
#              Last modified: $(MOD_DATE_JA) ($(MOD_USER_JA)), Since: $(CREATED_DATE_JA) ($(AUTHOR_JA))</small>"
#                    # [JA] JA 用 HTML フッター (任意)
#                    #   $(MOD_DATE_JA) は電脳 RD 書式で書かれた最上部の日時
#                    #   (JA part 部分内)
#                    #   $(CREATED_DATE_JA) は電脳 RD 書式で書かれた最下部の日時
#                    #   (JA part 部分内)

#FOOTER_EN  = "<hr /> <small> \
#              dcmodel Development Group / GFD Dennou Staff  \
#             <img src=\"/library/dcmodel/htmltools/dcstaff_email.png\" \
#                  alt=\"dcstaff&\#64;&\#103;&\#102;&\#100;-dennou.org\" \
#                  align=\"middle\" /> <br /> \
#             Last modified: $(MOD_DATE_EN), Since: $(CREATED_DATE_EN) </small>"
#                    # HTML Footer  (optional)
#                    # $(MOD_DATE_EN) is date in Dennou RD on top (EN part)
#                    # $(CREATED_DATE_EN) is date in Dennou RD at bottom (EN part)

CSS      = /library/dcmodel/htmltools/dcmodel.css
                    # Cascading Style Sheet (necessary)
                    # [JA] カスケーディングスタイルシート (必須)

FILE_MODE = 664      # Set mode          (optional)
                    # [JA] chmod する値 (任意)

GOWNER   =          # Set group         (optional)
                    # [JA] chgrp する値 (任意)

RUBY     = ruby1.9.1  # Path to Ruby       (necessary)
                    # [JA] Ruby へのパス (必須)

RD2      = rd2      # Path to rdtool       (necessary)
                    # [JA] rdtool へのパス (必須)

#RD2LIB   = rd/rd2html-lib        # 標準ライブラリ
RD2LIB   = rd/rd2html-ext-lib    # 拡張ライブラリ
                    # Library of rd2html      (selective)
                    # [JA] rd2html ライブラリ (選択)

RUBYLIB  =
                    # Set "RUBYLIB"         (optional)
                    # [JA] "RUBYLIB" の設定 (任意)

#RDOPTS  =
#RDOPTS  = --ref-extension --native-inline
RDOPTS  = -r rd/head-filter --ref-extension --native-inline --head-element
#RDOPTS  = -r rd/head-filter
                    # Additional rd2 options          (optional)
                    # [JA] rd2 コマンドへのオプション (任意)

RDOPTS_JA = --with-part=HTMLJA:html
                    # Additional rd2 options for JA         (optional)
                    # [JA] JA 用 rd2 コマンドへのオプション (任意)

RDOPTS_EN = --with-part=HTMLEN:html
                    # Additional rd2 options for EN         (optional)
                    # [JA] EN 用 rd2 コマンドへのオプション (任意)

INPUT_FILE_ENCODING = UTF-8 # input file encoding of charset (necessary)
                             # [JA] rd2 コマンドの CHARSET (必須)
                             #      オリジナルのrdファイルのエンコーディング

OUTPUT_FILE_ENCODING = UTF-8 # 出力HTMLファイルのエンコーディング

OUTCODE = utf8       # character encoding of output [jis|euc|sjis|utf8] (necessary)
                    # [JA] rd 出力時のエンコーディング  [jis|euc|sjis|utf8]  (必須)
                    # rd向けのエンコーディング指定(村上注)
                    # OUTPUF_FILE_ENCODINGと本質的に同じにしておく必要がある。

DEFAULT_MSG_JA = "No Document"
                    # [JA] JA 用 デフォルトメッセージ (任意)
                    #   RD 内に内容が無い場合に書き出されるメッセージ.

DEFAULT_MSG_EN = "No Document"
                   # Default Messages  (optional)
                   #   Messages that are output when no content
                   #   is included in RD file.

# End Settings  [JA] 設定項目ここまで
######################################################################
#== Commands
# common command line strings
RD2HTML = $(RD2) -r $(RD2LIB) --with-css=$(CSS) --with-part=HTML:html \
	      --out-code=$(OUTCODE) --html-charset=$(INPUT_FILE_ENCODING) $(RDOPTS)
RD2JA  = $(RD2HTML) --with-part=JA:rd $(RDOPTS_JA) # option for Japanese
RD2EN  = $(RD2HTML) --with-part=EN:rd $(RDOPTS_EN) # option for English

RM     = /bin/rm
RMOPT  = -f
#RM    = echo # for debug
#RMOPT =      # for debug

INDEX_TEMP_FNAME = rdhindex.tmp

######################################################################
#== Filenames to which it is assumed to be used in HEADER**, FOOTER**
#
HTML_FILE_JA = $(<:.rd=.html)
#HTML_FILE_EN = $(<:.rd=.html.en)

######################################################################
#== Ruby liner script for replacing title in HTML
#
# [JA] 引数 (1 つのみ) にとった HTML ファイルの一番上の <h1> の内容を
#      読み取り, その内容を <title> タグに代入する.
#
#      さらに, <title>〜</title> (非アスキー文字を含む可能性あり) が
#      <meta http-equiv="content-type" content="〜"> 指定よりも
#      前に含まれる場合, この 2 つを入れ替える.
#
H1_TO_TITLE  = $(RUBY) -E $(OUTPUT_FILE_ENCODING) \
	-e 'body = open(ARGV[0]){|io| io.read}; \
	    mod = if /\<h1.*?\>(.*?)\<\/h1.*?\>/ =~ body then ;\
	            h1 = $$1 ;\
	            h1 = h1.chomp.gsub!(/\<.*?\>/){|s| s = ""} ;\
	            body.gsub(/\<title\>.*<\/title\>/, \
	                      "\<title\>" + h1 + "<\/title\>") ;\
	          else ;\
	            body ;\
	          end ;\
	    \
	    if /(\<title\>.*?\<\/title\>)/im =~ mod then ;\
	      title = $$1 ;\
	      title_reg = Regexp.new(title.gsub(/\(/, "\\(").gsub(/\)/, "\\)"), 5) ;\
	      if /(\<meta\s+http-equiv=\"content-type\"\s+content=\".*?\"\s+\/\>)/im =~ mod then ;\
	        meta = $$1 ;\
	        meta_reg = Regexp.new(meta.gsub(/\(/, "\\(").gsub(/\)/, "\\)"), 5) ;\
	        mod.sub!(meta_reg, title) ;\
	        mod.sub!(title_reg, meta) ;\
	      end ;\
	    end ;\
	    \
	    open(ARGV[0], "w"){|io| io.puts(mod)}'
#H1_TO_TITLE = echo -n ""

######################################################################
#== Ruby liner script for add header to existing HTML
#
# [JA] 1 つ目の引数にとった文字列を既存の HTML ファイル (2 つめの引数)
#      の <body> タグ直下に挿入する.
#
INSERT_HEADER = $(RUBY) -E $(OUTPUT_FILE_ENCODING) \
	   -e 'body = open(ARGV[1]){|io| io.read}; \
	       mod = body.sub(/\<body\>/, \
	             "\<body\>\n\n" + ARGV[0].to_s) ;\
	       open(ARGV[1], "w"){|io| io.puts(mod)}'

######################################################################
#== Ruby liner script for add footer to existing HTML
#
# [JA] 1 つ目の引数にとった文字列を既存の HTML ファイル (2 つめの引数)
#      の <body> タグ直下に挿入する.
#
INSERT_FOOTER  = $(RUBY) -E $(OUTPUT_FILE_ENCODING) \
	-e 'body = open(ARGV[1]){|io| io.read}; \
	    mod = body.sub(/\<\/body\>/, ARGV[0].to_s + "\n\n\</body\>") ;\
	    open(ARGV[1], "w"){|io| io.puts(mod)}'

######################################################################
#== Ruby liner script for getting JA part
#
# [JA] 引数 (複数可) または引数が無い場合標準入力から得られた文字列
#      のうち, =begin, =end でくくられた部分と =begin JA, =end JA
#      でくくられた部分を標準出力に出力する.
#
PART_JA = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	 -e 'inbody = false ;\
	     puts "=begin" ;\
	     lines = readlines ;\
	     lines.each {|line| ;\
	       inbody = true  if /^=begin\s*$$/ =~ line ;\
	       inbody = true  if /^=begin\s+JA\s*$$/ =~ line ;\
	       inbody = false if /^=end\s*$$/ =~ line ;\
	       inbody = false if /^=end\s+JA\s*$$/ =~ line ;\
	       next if line =~ /^=(begin|end)\s*$$/ ;\
	       next if line =~ /^=(begin\s+|end\s+)\w+\s*$$/ ;\
	       if inbody then; puts line; end ;\
	     } ;\
	     puts "=end"'

######################################################################
#== Ruby liner script for getting EN part
#
# [JA] 引数 (複数可) または引数が無い場合標準入力から得られた文字列
#      のうち, =begin, =end でくくられた部分と =begin EN, =end EN
#      でくくられた部分を標準出力に出力する.
#
PART_EN = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	 -e 'inbody = false ;\
	     puts "=begin" ;\
	     lines = readlines ;\
	     lines.each {|line| ;\
	       inbody = true  if /^=begin\s*$$/ =~ line ;\
	       inbody = true  if /^=begin\s+EN\s*$$/ =~ line ;\
	       inbody = false if /^=end\s*$$/ =~ line ;\
	       inbody = false if /^=end\s+EN\s*$$/ =~ line ;\
	       next if line =~ /^=(begin|end)\s*$$/ ;\
	       next if line =~ /^=(begin\s+|end\s+)\w+\s*$$/ ;\
	       if inbody then; puts line; end ;\
	     } ;\
	     puts "=end"'

######################################################################
#== Ruby liner script for getting creation date in Dennou RD format
#
# [JA] 引数 (複数可) または引数が無い場合標準入力から得られた文字列
#      のうち, "* 2005/08/10 (氏名) ..." のように記述される一連の
#      文字列から一番下の日付を標準出力に出力する.
#
PARSER_CREATED_DATE = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	-e 'lines = readlines ;\
	    start = false ;\
	    date = "" ;\
	    lines.each{ |line| ;\
	      if /^\s*\#*\s*\*\s+(\d{2,4}[\/\-]\d{1,2}[\/\-]\d{1,2})\s+\(.+\)/ =~ line then ;\
	        start = true ;\
	        date = $$1 ;\
	      else ;\
	        if start then; print date; exit; end ;\
	    end ;\
	    } ;\
	    print "unknown"; exit'

CREATED_DATE_JA = `$(PART_JA) $< | $(PARSER_CREATED_DATE)`
CREATED_DATE_EN = `$(PART_EN) $< | $(PARSER_CREATED_DATE)`

######################################################################
#== Ruby liner script for getting update date in Dennou RD format
#
# [JA] 引数 (複数可) または引数が無い場合標準入力から得られた文字列
#      のうち, "* 2005/08/10 (氏名) ..." のように記述される一連の
#      文字列から一番上の日付を標準出力に出力する.

PARSE_MODIFIED_DATE = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	 -e 'lines = readlines ;\
	     lines.each{ |line| ;\
	       if /^\s*\#*\s*\*\s+(\d{2,4}[\/\-]\d{1,2}[\/\-]\d{1,2})\s+\(.+\)/ =~ line then ;\
	         print $$1; exit ;\
	       end ;\
	     } ;\
	     print "unknown"; exit'

MOD_DATE_JA = `$(PART_JA) $< | $(PARSE_MODIFIED_DATE)`
MOD_DATE_EN = `$(PART_EN) $< | $(PARSE_MODIFIED_DATE)`

######################################################################
#== Ruby liner script for getting creator in Dennou RD format
#
# [JA] 引数 (複数可) または引数が無い場合標準入力から得られた文字列
#      のうち, "* 2005/08/10 (氏名) ..." のように記述される一連の
#      文字列から一番下の氏名を標準出力に出力する.
#
PARSE_AUTHOR = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	 -e 'lines = readlines ;\
	     start = false ;\
	     user = "" ;\
	     lines.each{ |line| ;\
	       if /^\s*\#*\s*\*\s+(\d{2,4}[\/\-]\d{1,2}[\/\-]\d{1,2})\s+\((.+?)\)/ =~ line then ;\
	         start = true ;\
	         user = $$2 ;\
	       else ;\
	         if start then; print user; exit; end ;\
	       end ;\
	     } ;\
	     print "unknown"; exit'

AUTHOR_JA = `$(PART_JA) $< | $(PARSE_AUTHOR)`
AUTHOR_EN = `$(PART_EN) $< | $(PARSE_AUTHOR)`

######################################################################
#== Ruby liner script for getting updater in Dennou RD format
#
# [JA] 引数 (複数可) または引数が無い場合標準入力から得られた文字列
#      のうち, "* 2005/08/10 (氏名) ..." のように記述される一連の
#      文字列から一番上の氏名を標準出力に出力する.

PARSE_EDITOR = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	 -e 'lines = readlines ;\
	     lines.each{ |line| ;\
	       if /^\s*\#*\s*\*\s+(\d{2,4}[\/\-]\d{1,2}[\/\-]\d{1,2})\s+\((.+?)\)/ =~ line then ;\
	         print $$2; exit ;\
	       end ;\
	     } ;\
	     print "unknown"; exit'

MOD_USER_JA = `$(PART_JA) $< | $(PARSE_EDITOR)`
MOD_USER_EN = `$(PART_EN) $< | $(PARSE_EDITOR)`

######################################################################
#== Ruby liner script for getting RD Header index
#
# Reference: http://www.rubyist.net/~rubikitch/computer/rd-hindex/
#
# [JA] 標準入力内から目次を取得し, 1 つ目の引数をファイル名として
#      受け取り, そのファイル内の == より前に目次を組み込んだ内容を
#      標準出力に出力する.
#      2 つ目の引数は目次として取り込むヘッダのレベルの指定である.
#      1 〜 3 までが有効で, 0 や文字列などが代入された場合,
#      目次は組み込まれない.
#      3 つ目の引数は part の指定で, もしも本文が JA part 内にある場合は
#      JA などと指定する.
#      なお, 目次の ol には =begin HTML <ol class="rd2html_hindex">
#      =end HTMLというタグが入る.
#
#      参考: http://www.rubyist.net/~rubikitch/computer/rd-hindex/
#

RD_HL_TO_INDEX = $(RUBY) -E $(INPUT_FILE_ENCODING) \
	-e 'rdlevel = ARGV[1].to_i ;\
	    rdhindex = "=begin HTML\n<hr />\n<ol class=\"rd2html_hindex\">\n=end HTML\n" ;\
	    rdhindex << "=begin\n" ;\
	    while line = $$stdin.gets ;\
	      next if line =~ /^=(begin|end)$$/ ;\
	      if line =~ /^(=+)\s*(.+)$$/ ;\
	        level = $$1.length ; content = $$2 ;\
	        next if level == 1 || level > rdlevel + 1 ;\
	        rdhindex << "  " * (level - 2) + "* ((<\"\#{content}\">))\n" ;\
	      end ;\
	    end ;\
	    rdhindex << "=end\n" ;\
	    rdhindex << "=begin HTML\n</ol>\n<hr />\n=end HTML\n" ;\
	    rdhindex = "" if rdlevel == 0 ;\
	    \
	    body = open(ARGV[0]){|io| io.read};\
	    lines = body.split(/\n/) ;\
	    finished = false; inbody = false; \
	    results = "" ; rdbegin = "" ; rdend = "" ;\
	    lines.each{ |line| ;\
	      if line =~ /^=begin\s*$$/ ;\
	        rdbegin = "=begin" ; rdend = "=end" ;\
	      elsif line =~ /^=begin\s+(.*)/ ;\
	        rdbegin = "=begin " + $$1 ; rdend = "=end " + $$1 ;\
	      end ;\
	      if line =~ /^=end$$/ || line =~ /^=end\s+(.*)/ ;\
	        rdbegin = "" ; rdend = "" ;\
	      end ;\
	      inbody = true if line =~ /^=begin\s*$$/ || line =~ /^=begin\s+\#{ARGV[2]}$$/ ;\
	      inbody = false if line =~ /^=end(\s+\w+)*$$/ ;\
	      if /^==\s+/ =~ line && !(finished) && inbody then ;\
	        results << rdend + "\n" + rdhindex + "\n" + rdbegin + "\n" ;\
	        results << line + "\n" ;\
	        finished = true ;\
	      else ;\
	        results << line + "\n" ;\
	      end ;\
	      } ;\
	    puts results'

######################################################################
#== Postprocessor for RD_HL_TO_INDEX
#
# [JA] RD_HL_TO_INDEX で XHTML 1.0 Transitional 違反となってしまう部分を
#      修正する後処理スクリプト.
#      標準入力から HTML を受け取り, 違反項目を置換した後,
#      その結果を標準出力へ返す.

INDEX_POSTPROCESSOR = $(RUBY) -E $(OUTPUT_FILE_ENCODING) \
	-e  'lines = readlines ;\
	     exit! if lines.empty? ;\
	     body = lines.join ;\
	     body.gsub!(/(\<ol class=\"rd2html_hindex\"\>)\s*\<ul\>/im, "\\1" ) ;\
	     body.gsub!(/\<\/ul\>\s*\<\/ol\>/im, "\</ol\>") ;\
	     puts body'

######################################################################
#== Search "rd" files
__AllRDFiles__ = $(wildcard *.rd)
RDFiles = $(__AllRDFiles__:%.v.rd=)
GenerateFiles = $(HTML_JA) $(HTML_EN)
HTML_JA = $(RDFiles:.rd=.html)
#HTML_EN = $(RDFiles:.rd=.html.en)

##########################################################################
#== Rules
#
all: pathcheck $(GenerateFiles)

help:
	@echo ""
	@echo "  This Makefile needs following programs."
	@echo ""
	@echo "      Ruby   <URL:http://www.ruby-lang.org>"
	@echo "      rdtool <URL:https://github.com/uwabami/rdtool>"
	@echo ""
	@echo ""
	@echo "  make [all] :"
	@echo "             Create HTML files from RD "
	@echo ""


%.html: %.rd
	@if [ $(GEN_JA) != 0 ]; then \
	  echo -n "Insert RD Header Index Level:$(INDEX_DEPTH) Part:JA ..";\
	  $(PART_JA) $< | $(RD_HL_TO_INDEX) $< "$(INDEX_DEPTH)" JA > $<.$(INDEX_TEMP_FNAME) ;\
	  echo ' done';\
	  echo "$(RD2JA) $< > $@ || $(RM) $(RMOPT) $@";\
	  RUBYLIB=$(RUBYLIB) $(RD2JA) $<.$(INDEX_TEMP_FNAME) | \
	  $(INDEX_POSTPROCESSOR) > $@ || $(RM) $(RMOPT) $@ ;\
	  $(RM) $(RMOPT) $<.$(INDEX_TEMP_FNAME) ;\
	  if [ ! -f $@ ] && [ ! X$(DEFAULT_MSG_JA) = X"" ]; then \
	    echo -e "=begin JA\n$(DEFAULT_MSG_JA)\n=end" | $(RD2JA) > $@ || \
	    $(RM) $(RMOPT) $@ ;\
	  fi ;\
	  if [ -f $@ ]; then \
	    echo -n 'Copy <h1> to <title> ..' ; $(H1_TO_TITLE) $@ ; echo 'done';\
	    if [ ! X$(HEADER_JA) = X"" ]; then \
	        echo -n 'Add header ..' ;\
	        $(INSERT_HEADER) $(HEADER_JA) $@ ;\
	        echo ' done';\
	    fi ;\
	    if [ ! X$(FOOTER_JA) = X"" ]; then \
	        echo -n 'Add footer ..' ;\
	        $(INSERT_FOOTER) $(FOOTER_JA) $@ ;\
	        echo ' done';\
	    fi ;\
	  fi ;\
	  if [ -f $@ ] && [ ! X$(FILE_MODE) = X"" ]; then \
	    echo -n chmod $(FILE_MODE) $@ .. ; chmod $(FILE_MODE) $@ ; echo ' done';\
	  fi ;\
	  if [ -f $@ ] && [ ! X$(GOWNER) = X"" ]; then \
	    echo -n chgrp $(GOWNER) $@ .. ; chgrp $(GOWNER) $@ ; echo ' done';\
	  fi ;\
	fi

%.html.en: %.rd
	@if [ $(GEN_EN) != 0 ]; then \
	  echo -n "Insert RD Header Index Level:$(INDEX_DEPTH) Part:EN .." ;\
	  $(PART_EN) $< | $(RD_HL_TO_INDEX) $< "$(INDEX_DEPTH)" EN > $<.$(INDEX_TEMP_FNAME).en ;\
	  echo ' done';\
	  echo "$(RD2EN) $< > $@ || $(RM) $(RMOPT) $@" ;\
	  RUBYLIB=$(RUBYLIB) $(RD2EN) $<.$(INDEX_TEMP_FNAME).en | \
	  $(INDEX_POSTPROCESSOR) > $@ || $(RM) $(RMOPT) $@ ;\
	  $(RM) $(RMOPT) $<.$(INDEX_TEMP_FNAME).en ;\
	  if [ ! -f $@ ] && [ ! X$(DEFAULT_MSG_EN) = X"" ]; then \
	    echo -e "=begin EN\n$(DEFAULT_MSG_EN)\n=end" | $(RD2EN) > $@ || $(RM) $(RMOPT) $@ ;\
	  fi ;\
	  if [ -f $@ ]; then \
	  	echo -n 'Copy <h1> to <title> ..'; $(H1_TO_TITLE) $@ ; echo ' done';\
	    if [ ! X$(HEADER_EN) = X"" ]; then \
	      echo -n 'Add header ..' ;\
	      $(INSERT_HEADER) $(HEADER_EN) $@ ;\
	      echo ' done';\
	    fi ;\
	    if [ ! X$(FOOTER_EN) = X"" ]; then \
	      echo -n 'Add footer ..' ;\
	      $(INSERT_FOOTER) $(FOOTER_EN) $@ ;\
	      echo ' done';\
	    fi ;\
	  fi ;\
	  if [ -f $@ ] && [ ! X$(FILE_MODE) = X"" ]; then \
	    echo -n chmod $(FILE_MODE) $@ .. ; chmod $(FILE_MODE) $@ ; echo ' done';\
	  fi ;\
	  if [ -f $@ ] && [ ! X$(GOWNER) = X"" ]; then \
	    echo -n chgrp $(GOWNER) $@ .. ; chgrp $(GOWNER) $@ ; echo ' done';\
	  fi ;\
	fi

clean:
	@if [ ! X"$(wildcard *~ *.bak)" = X"" ]; then \
	  echo $(RM) $(wildcard *~ *.bak) ;\
	  $(RM) $(wildcard *~ *.bak) ;\
	fi

clean.all: clean
	@if [ ! X"$(wildcard $(GenerateFiles))" = X"" ]; then \
	  echo $(RM) $(wildcard $(GenerateFiles)) ;\
	  $(RM) $(wildcard $(GenerateFiles)) ;\
	fi

pathcheck:
	@echo -n "Ruby path check .. "
	@if ! which $(RUBY) > /dev/null 2>&1 ; then \
	  echo "" ;\
	  echo "   Error: RUBY=\"$(RUBY)\" is invalid path." ;\
	  echo "" ;\
	  echo "   Please install Ruby (see http://www.ruby-lang.org), " ;\
	  echo "   or set valid path." ;\
	  echo "" ;\
	  exit 1 ;\
	fi
	@echo " done"
	@echo -n "RD2 command path check .. "
	@if ! which $(RD2) > /dev/null 2>&1 ; then \
	  echo "" ;\
	  echo "   Error: RD=\"$(RD2)\" is invalid path." ;\
	  echo "" ;\
	  echo "   Please install RDtool (see http://raa.ruby-lang.org/project/rdtool/), " ;\
	  echo "   or set valid path." ;\
	  echo "" ;\
	  exit 1 ;\
	fi
	@echo " done"

######################################################################
#== Mode setting for Emacs
# Local Variables:
# mode: makefile
# tab-width: 4
# End:
