#がエクスクラメーションマーク!に置き換えられていることを除くと、C言語のプリプロセッサに非常によく似ています。
$で始めることを強く推奨します。
データの種類は3つあります。
globalというキーワードを付けることもできます。
|
🎉 Copied!
|
|
次の構文で、変数が未定義の場合のみ代入することができます:
!$a ?= "foo"
|
🎉 Copied!
|
|
0 は false を意味します1など)と、すべての文字列("1"、あるいは"0"でさえも)はtrueを意味します()&&||ifの判定式の例を参照)
%false()%true()%not(<exp>)
|
🎉 Copied!
|
|
!whileと!endwhileキーワードを使用して繰り返しを記述できます。
|
🎉 Copied!
|
|
[Adapted from QA-10838]
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
[Ref. QA-14088]
$で開始する必要があります$で開始する必要があります
|
🎉 Copied!
|
|
プロシージャ内で定義された変数はローカル変数になります。ローカル変数はプロシージャの終了時に破棄されます。
$で開始する必要があります$で開始する必要があります
|
🎉 Copied!
|
|
簡単な関数の定義は、一行で記述することができます:
|
🎉 Copied!
|
|
プロシージャと同様に、デフォルトで変数はローカル変数になります(関数の終了時に破棄されます)。しかし、関数からグローバル変数にアクセスすることもできます。
localキーワードを使用すると、同じ名前のグローバル変数が存在したとしてもローカル変数として定義することができます。
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
引数リストの最後尾から連続した複数個の引数に、デフォルト値を設定することができます。
|
🎉 Copied!
|
|
unquotedキーワードを使用すると、プロシージャや関数の引数をクォーテーション記号で囲まずに記述できるようになります。
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
!includeを使用すると、ダイアグラムにファイルをインクルードすることができます。URLを使用してインターネット/イントラネット上のファイルをインクルードすることもできます。インターネット上の認証が必要なリソースにアクセスすることもできます。詳細はURL認証機能を確認してください。
例えば、複数のダイアグラムに、まったく同じクラスが現れるような状況を考えてください。
クラスの定義を何度も記述するのではなく、
別のファイルに定義しておくことができます。
|
🎉 Copied!
|
|
File List.iuml
interface List
List : int size()
List : void clear()
List.iumlは、複数のダイアグラムにインクルードすることができます。
このファイルに変更があった場合、インクルード先のすべてのダイアグラムに変更が及びます。
インクルードされるファイルに複数の@startuml/@endumlブロックを記述し、
インクルード時に!0(0はブロックの番号)を追加すると、特定のブロックをインクルードすることができます。!0は最初のブロックを表します。
例えば、!include foo.txt!1とすると、foo.txtに記述された2番目の@startuml/@endumlブロックがインクルードされます。
@startuml(id=MY_OWN_ID)という記法で、@startuml/@endumlブロックにIDを付与することもできます。このブロックをインクルードするには、インクルード時に!MY_OWN_IDを追加し、!include foo.txt!MY_OWN_IDのようにします。
デフォルトでは、一つのファイルは一度だけインクルードできます。一つのファイルを複数回インクルードしたい場合は、!includeの代わりに!include_manyを使用します。!include_onceディレクティブを使用すると、ファイルが複数回インクルードされた場合にエラーを発生させることができます。
!startsub NAMEと!endsubを使用してテキストのセクションを作成し、他のファイルで!includesubによってインクルードすることができます。例:
file1.puml:
@startuml
A -> A : stuff1
!startsub BASIC
B -> B : stuff2
!endsub
C -> C : stuff3
!startsub BASIC
D -> D : stuff4
!endsub
@enduml
file1.puml は、次の記述と同じ結果になります:
@startuml
A -> A : stuff1
B -> B : stuff2
C -> C : stuff3
D -> D : stuff4
@enduml
一方で、これを利用して次のような file2.puml を作ることができます: file2.puml
@startuml
title this contains only B and D
!includesub file1.puml!BASIC
@enduml
このファイルは、次の記述と同じ結果になります:
@startuml
title this contains only B and D
B -> B : stuff2
D -> D : stuff4
@enduml
%で始まります。
| 名称 | 説明 | 例 | 戻り値 |
%chr
|
与えられたUnicode値に対応する文字を返します。 |
%chr(65)
|
A
|
%darken
|
与えられた色を暗くした色を返します。第二引数に暗くする割合を指定します。 |
%darken("red", 20)
|
#CC0000
|
%date
|
現在日付を返します。オプションで日付のフォーマットを指定できます。 |
%date("yyyy.MM.dd' at 'HH:mm")
|
現在日時 |
%dec2hex
|
10進数の数値(Int)に対する16進数文字列(String)を返します。 |
%dec2hex(12)
|
c
|
%dirpath
|
現在のディレクトリパスを取得します。 |
%dirpath()
|
現在のパス |
%feature
|
ある機能が、現在実行中のPlantUMLのバージョンで利用できるかどうか確認します。 |
%feature("theme")
|
true
|
%false
|
常にfalseを返します。
|
%false()
|
false
|
%file_exists
|
ファイルがローカルファイルシステムに存在するかどうか確認します。 |
%file_exists("c:/foo/dummy.txt")
|
ファイルが存在する場合true
|
%filename
|
現在のファイル名を取得します。 |
%filename()
|
現在のファイル名 |
%function_exists
|
関数が存在するかどうか確認します。 |
%function_exists("$some_function")
|
関数が定義されている場合true
|
%get_variable_value
|
変数の値を取得します。 |
%get_variable_value("$my_variable")
|
変数の値 |
%getenv
|
環境変数の値を取得します。 |
%getenv("OS")
|
環境変数OSの値
|
%hex2dec
|
16進数文字列(String)に対する10進数の数値(Int)を返します。 |
%hex2dec("d") or %hex2dec(d)
|
13
|
%hsl_color
|
HSL形式の色(%hsl_color(h, s, l)、%hsl_color(h, s, l, a))をRGBa形式に変換します。
|
%hsl_color(120, 100, 50)
|
#00FF00
|
%intval
|
StringをIntに変換します。 |
%intval("42")
|
42 |
%is_dark
|
色が暗い色かどうか判定します。 |
%is_dark("#000000")
|
true
|
%is_light
|
色が明るい色かどうか判定します。 |
%is_light("#000000")
|
false
|
%lighten
|
与えられた色を明るくした色を返します。第二引数に明るくする割合を指定します。 |
%lighten("red", 20)
|
#CC3333
|
%loadJSON
|
ローカルファイルまたはURLから、JSONデータを読み込みます。 |
%loadJSON("http://localhost:7778/management/health")
|
JSONデータ |
%lower
|
文字列を小文字に変換します。 |
%lower("Hello")
|
この例の場合hello
|
%newline
|
改行文字列を返します。 |
%newline()
|
改行文字列 |
%not
|
真偽値の論理否定を返します。 |
%not(2+2==4)
|
この例の場合false
|
%reverse_color
|
RGBを使用して色を反転します。 |
%reverse_color("#FF7700")
|
#0088FF
|
%reverse_hsluv_color
|
HSLuvを使用して色を反転します。 |
%reverse_hsluv_color("#FF7700")
|
#602800
|
%set_variable_value
|
グローバル変数に値を設定します。 |
%set_variable_value("$my_variable", "some_value")
|
空文字列 |
%size
|
文字列またはJSON構造体のサイズを返します。 |
%size("foo")
|
この例の場合3
|
%string
|
文字列に変換します。 |
%string(1 + 2)
|
この例の場合3
|
%strlen
|
文字列の長さを返します。 |
%strlen("foo")
|
この例の場合3
|
%strpos
|
文字列を検索し、出現位置を返します。 |
%strpos("abcdef", "ef")
|
4 (efの出現位置)
|
%substr
|
部分文字列を取り出します。2つまたは3つの引数を取ります。 |
%substr("abcdef", 3, 2)
|
この例の場合"de"
|
%true
|
常にtrueを返します。
|
%true()
|
true
|
%upper
|
文字列を大文字に変換します。 |
%upper("Hello")
|
この例の場合HELLO
|
%variable_exists
|
変数が存在するかどうか確認します。 |
%variable_exists("$my_variable")
|
定義済みの変数が存在する場合true
|
%version
|
実行中のPlantUMLのバージョンを返します。 |
%version()
|
例:1.2020.8
|
%invoke_procedure() | Dynamically invoke a procedure by its name, passing optional arguments to the called procedure. | %invoke_procedure("$go", "hello from Bob...") | Depends on the invoked procedure |
| %call_user_func() | Invoke a return function by its name with given arguments. | %call_user_func("bold", "Hello") | Depends on the called function |
| %splitstr | Split a string into an array based on a specified delimiter. | %splitstr("abc~def~ghi", "~") | ["abc", "def", "ghi"] |
!logを使用すると、ダイアグラム生成時にログを出力することができます。これは、ダイアグラム自体にはまったく影響を与えません。その代わりに、コマンドラインの出力ストリームにログが出力されます。これはデバッグのために有用です。
|
🎉 Copied!
|
|
!dump_memoryを使用すると、ダイアグラム生成中のメモリの全内容をダンプ出力することができます。!dump_memoryの後に任意の文字列を追加することもできます。これは、ダイアグラム自体にはまったく影響を与えませんが、デバッグのために有用です。
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
!importディレクティブを使用してダイアグラムにインポートすることができます。
ライブラリのインポート後、そのzip/jarファイルに含まれるファイルを!includeすることができます。
例:
@startuml
!import /path/to/customLibrary.zip
' この記述で、"customLibrary.zip"が検索パスに追加されます。
!include myFolder/myFile.iuml
' myFolder/myFile.iuml は、"customLibrary.zip"の中かローカルのファイルシステムに
' 存在していることが期待されます。
...
plantuml.include.pathを使って検索パスを指定できます。
例:
java -Dplantuml.include.path="c:/mydir" -jar plantuml.jar atest1.txt
この-Dオプションは、-jarオプションより前に記述する必要があります。 -jarオプションの後に記述した-Dオプションは、PlantUMLプリプロセッサの定数定義に使用されます。
##を使用して、マクロ引数に文字列を結合できます。
|
🎉 Copied!
|
|
%invoke_procedure(), %call_user_func()]%invoke_procedure()プロシージャを使用して、プロシージャを動的に呼び出すことができます。
このプロシージャは、最初の引数に実際に呼び出すプロシージャ名を取ります。それに続く残りの引数は、呼び出されるプロシージャの引数として渡されます。
例:
|
🎉 Copied!
|
|
|
🎉 Copied!
|
|
return関数に対しては、
%call_user_func()を使用します:
|
🎉 Copied!
|
|
$a + $bの評価は$aと$bの型に依存して行われます。
|
🎉 Copied!
|
|
!themeディレクティブを使用するとダイアグラムのデフォルトテーマを変更することができます。
|
🎉 Copied!
|
|
詳細はテーマの説明を確認してください。
!defineと!definelongは使用しないでください。代わりに!function`、!procedure?code??もしくは変数定義を使用します。 !defineはreturn!functionに置き換えてください。!definelongは!procedureに置き換えてください。!includeで複数のインクルードが可能になったので、!include_manyを使う必要はありません。!includeはURLを受け取れるようになったので!includeurlを使う必要はありません。%date%などのいくつかの機能は、組み込みの関数(%date()など)に置き換えられました。!definelongマクロを引数無しで呼ぶ場合、必ず括弧を使用する必要があります.my_own_definelong()ではなくmy_own_definelongのように括弧を省略してしまうと、新しいプリプロセッサでは認識されません。%splitstr builtin function
|
🎉 Copied!
|
|
Similar to:
|
🎉 Copied!
|
|
[Ref. QA-15374]
%splitstr_regex builtin function
|
🎉 Copied!
|
|
Similar to:
|
🎉 Copied!
|
|
[Ref. QA-18827]
%get_all_theme builtin function%get_all_theme() builtin function to retreive a JSON array of all PlantUML theme.
|
🎉 Copied!
|
|
[from version 1.2024.4]
%get_all_stdlib builtin function%get_all_stdlib() builtin function to retreive a JSON array of all PlantUML stdlib names.
|
🎉 Copied!
|
|
%get_all_stdlib(detailed) to retreive a JSON object of all PlantUML stdlib.
|
🎉 Copied!
|
|
[from version 1.2024.4]
%random builtin function%random builtin function to retreive a random integer.
| Nb param. | Input | Output |
| 0 | %random() | returns 0 or 1 |
| 1 | %random(n) | returns an interger between 0 and n - 1 |
| 2 | %random(min, max) | returns an interger between min and max - 1 |
|
🎉 Copied!
|
|
[from version 1.2024.2]
%boolval builtin function%boolval builtin function to manage boolean value.
|
🎉 Copied!
|
|
[Ref. PR-1873, from version 1.2024.7]
| Escape function | Output |
%dollar()
|
$
|
%percent()
|
%
|
%backslash()
|
\
|