Kahua4 アプリケーションを作る

前回でやっと基本的な部分の説明が終わりました。


今回から、やっとアプリケーションの作成に移れます。


appname/appname/appname.kahuaがアプリケーションのソースコードです。


ソースコードに入る前に、拡張子がkahuaなのでVimユーザは設定をしておきます。Kahua.orgの関係者はEmacsユーザばかりらしく、Vim関係については書いていないですorz。
とりあえず、以下を~/.vimrcに追加しておけば*.kahuaschemeシンタックスで表示されます。

au BufRead,BufNewFile *.kahua set filetype=scheme


さてソースコードを見ていきます。

(load "appname/version.kahua")

(define page-template
  (kahua:make-xml-template
    (kahua-template-path "appname/page.xml")))

(define-entry (version)
              (kahua:xml-template->sxml
                page-template
                :title (title/ (@/ (id "title"))
                               "appname")
                :body (div/ (@/ (id "body"))
                            (h1/ (format "appname: version ~a"
                                         *appname-version*))
                            (a/cont/ (@@/ (cont greeting))
                                     "greeting"))))

(define-entry (greeting)
              (kahua:xml-template->sxml
                page-template
                :body (div/ (@/ (id "body"))
                            (h1/ "Hello, Kahua!")
                            (a/cont/ (@@/ (cont version))
                                     "version"))))

;
; initialization
;
   
(initialize-main-proc greeting)


まあ、説明はKahua.org Tutorial|step2を見れば早いのですが一応最低限だけ。

  • "define-entry"でページを生成できます。
  • "define-entry"で作成したページは"a/cont/"でリンクが張れます。
  • 表示するページはappname/templates/page.xmlにappname.kahuaの内容で修正して表示する。
  • ":title"とかはpage.xmlのidの値を示していて、そこを修正している。
  • なので、page.xmlに無い部分を修正はできないので、場合によってはpage.xmlの修正も必要。
  • 前回にも書いたけど、Kahuaのモジュールを追加するにはplugins/appname.scmに書く必要がある。Gauche側のを使う場合はappaname.kahuaに書いても良い。


まあざっとこんな感じ。
次回は情報がほとんど無く分かり辛かったformでボタンを押したときの動作の実現について書いていきます。