閃いた事 エンドユーザ向けドキュメントの自動生成
私はクラス図を二つ作らなければいけない立場なのです。それは、開発者向けとエンドユーザ向けです。
同じ物でもと思いますが、プロパティ等日本語ではないことで、エンドユーザ向けのドキュメントとなりません。
同じ物でもと思いますが、プロパティ等日本語ではないことで、エンドユーザ向けのドキュメントとなりません。
そこで、cacheが生成するxmlファイルのDescription(///で始まるコメント)をプロパティ名にすることによって、日本語のドキュメントが生成することにしました。
/// プロパティを持ったクラス。だが、まだメッソドは持っていない。
Class Simple.withProperty Extends %RegisteredObject [ ProcedureBlock ]
{
/// 名前
Property name As %String;
}
上のソースから下のjavaソースを生成するということです。
class withProperty{
public String 名前;
}
残念ながらクラス名の自動化は諦めました。JUDEに取り込んだときに機能する関連が途切れてしまうためです。しかたがないので、JUDEで取り込んでから、本来の使い方ではありませんが、ステレオタイプに入力することにしました。これで、手でクラス図を作成するという作業は大分軽減されると思います。
シェルスクリプト conv2java4u.sh
#!/bin/sh if [ $# -ne 1 ] then echo "ファイル名がありません。" echo "使用法:conv2java4u.sh ファイル名(.xmlは省略してください。)" exit fi nkf -s $1".xml" | sed -f preconv | awk -f cache2java4u > $1"4u.java"
sedファイル preconvは変更ありません。
awkファイル cache2java4u
/^<Class name/ {
print "class "$3"{"
inClass = 1
}
/^<\/Class/ {
print "}"
inClass = 0
}
/^<Property name/ {
propName = $3
inProperty = 1
}
/^<\/Property/ {
printf ("\tpublic %s %s;\n",propType , propName)
inProperty = 0
}
inProperty == 1 && /^<Type/ { propType = $2 }
inProperty == 1 && /^<Description/ {
foundDscrp = 1
}
foundDscrp == 1 && /\/Description/ {
propName = $1
foundDscrp = 0
}
これで、PropertyにDescriptionがあった場合には、Property名がDescriptionで変換されます。