TOP>>概略>>WALRUSとは何か <概略>ツアーOBAQ構成定義アプリケーションサーバリファレンスサイトマップ

コンテンツ作成ツール


コンテンツ作成ツールとしてのWALRUS

このマニュアルはWALRUSで作成されています。 WALRUSを使用すると、このマニュアルのような構造を持った一連のコンテンツを 最低限の労力で作成しメンテナンスして行くことができます。

このマニュアルについて

このマニュアルのページにある要素を見ていくと、次のような要素から成りたっています。

  1. フットトレース

    上部の左側にあるのがフットトレースです。 ここには、現在見ているページの所属するグループが深さの順に表示されています。

  2. グローバルナビゲーション

    上部右側がグローバルナビゲーションです。 ここには、最上位のグループへのリンクが表示されています。 ここの表示内容は常に同じですが、 現在見ているページの所属するグループだけは、リンクがなく<XXXX>という形式でマークがついています。

  3. タイトル

    1. 2.の下にそのページのタイトルが表示されています。

  4. ローカルナビゲーション

    左側には現在所属するグループの文書の一覧が表示されています。

  5. 本文

    右側には、本文があります。

この中の1.〜4.については、WALRUSが自動生成しています。

構成定義ファイル

サイト全体の構造を記述するのが次のようなファイルです。

ManualFolder gaiyou                       
 title=WALRUSとは何か                     
 source_dir=.                             
 description = <<END                      
ここでは、WALRUSとは何かを説明します。    
END                                       

ManualIndex index.html                    

ManualDoc gaiyo1.html                     
 title=WALRUSとは                         

ManualDoc gaiyo2.html                     
 title=テンプレート展開                   

ManualDoc gaiyo3.html                     
 title=コンテンツ作成ツール               

スクリプト

定義ファイルの他に、100行ほどのスクリプトを書いています。 例えば、グローバルナビゲーションを生成しているのは、次のスクリプトです。

def_acq :global_navigation, <<-END
  groups.collect do |g|
    if g == mygroup
       "<" + g.title + ">"
    else
       link(relative_path_to(g.index)) { g.title }
    end
  end
END

テンプレート

上記のスクリプトに次のようなHTMLテンプレートを組み合わせて、最終的な文書ができます。

<div align="center">
  <table width="100%" border=1>
    <tr>
      <td align="center" id="global_navigation">GROUP</td>
    </tr>
   </table>
</div>

スクリプトのHTMLが完全に分離しているので、 例えば、<table>要素で構成しているリンクを<ul>によるリストに変更するとか、 上部だけでなく下部にも同じナビゲーションバーを置くというような変更が、 テンプレートファイルを修正するだけで行なえます。

RDとの連動

このマニュアルの本文はRDで記述されています。 RDは記述が簡単ですが、HTML生成ツールと考えるとやや柔軟性に欠ける所もあります。

Walrusでは、RD文書の処理にはRDToolのパーサーを使用していますが、 タグを指定した後処理を行なうことができます。

例えば、RD内にソースを引用する場合、verbatimという機能を使用しますが、 その内容は次のように出力されます。

<pre>
  puts "Hello, world"
</pre>

walrusでは、RD標準の処理の後に「<pre>要素は<div class=pre>〜</div>で囲 む」という指定を行なうことができます。その結果次のようになります。

<div class="pre"><pre>
 puts "Hello, world"
</pre></div>

後は、この"pre"というclassに対してCSSでさまざまな指定することで、引用 部を強調して見やすくすることができます。実際、このマニュアルでは引用部 は、枠で囲まれマージンを多くとり背景が白になっています。

この指定を行なっているスクリプト(構成定義ファイル)は次のようなものです。

ElementFilterItem -- tagname=pre
  .def filter(obj, element) {{
    element.set_tag(:div)
    element[:class] = "pre"
    element.init_body {
      e(:pre) {
         element.body
      }
    }
  }} 

ページトップへ