#
改为感叹号!
。
$
开头。
变量有三种数据类型:
global
强调这一点。
🎉 Copied!
|
|
你还可以使用以下语法,仅在变量没有被定义时才对变量进行赋值:
!$a ?= "foo"
🎉 Copied!
|
|
0
表示false
1
) 或任何字符串(如"1"
, 甚至"0"
)* 表示true
。()
;&&
;||
。 if
测试中。)
%false()
%true()
%not(<exp>)
🎉 Copied!
|
|
!while
和!endwhile
关键字来实现重复循环。
🎉 Copied!
|
|
[改编自QA-10838]
🎉 Copied!
|
|
🎉 Copied!
|
|
[参考QA-14088]
$
开头$
开头
🎉 Copied!
|
|
函数里定义的变量作用域为local. 意味着随函数一同销毁.
$
开头$
开关
🎉 Copied!
|
|
可以简化函数定义为一行:
🎉 Copied!
|
|
像空函数一样, 变量默认为'local'本地变量 (随函数退出销毁). 并且, 你可以在函数中访问'global'全局变量. 并且, 如何一个全局变量已存在,你仍可以使用
local
关键字创建一个同名的本地变量.
🎉 Copied!
|
|
🎉 Copied!
|
|
只有在尾端的参数列表才可以定义默认值.
🎉 Copied!
|
|
unquoted
关键字指明一个函数的参数不需要使用引号.
🎉 Copied!
|
|
🎉 Copied!
|
|
!include
directive to include file in your diagram. Using URL, you can also include file from Internet/Intranet. Protected Internet resources can also be accessed, this is described in URL authentication.
Imagine you have the very same class that appears in many
diagrams. Instead of duplicating the description of this class, you can
define a file that contains the description.
🎉 Copied!
|
|
File List.iuml
interface List
List : int size()
List : void clear()
The file
List.iuml
can be included in many diagrams, and
any modification in this file will change all diagrams that include it.
You can also put several @startuml/@enduml
text block in an included file and then specify which block
you want to include adding !0
where 0
is the block number. The !0
notation denotes the first diagram.
For example, if you use !include foo.txt!1
, the second @startuml/@enduml
block
within foo.txt
will be included.
You can also put an id to some @startuml/@enduml
text block in an included file using
@startuml(id=MY_OWN_ID)
syntax and then include the block adding !MY_OWN_ID
when including the file,
so using something like !include foo.txt!MY_OWN_ID
.
By default, a file can only be included once. You can use !include_many
instead of !include
if you want to include some file several times. Note that there is also a !include_once
directive that raises an error if a file is included several times.
!startsub NAME
and !endsub
to indicate sections of text to include from other files using !includesub
. For example:
file1.puml:
@startuml
A -> A : stuff1
!startsub BASIC
B -> B : stuff2
!endsub
C -> C : stuff3
!startsub BASIC
D -> D : stuff4
!endsub
@enduml
file1.puml would be rendered exactly as if it were:
@startuml
A -> A : stuff1
B -> B : stuff2
C -> C : stuff3
D -> D : stuff4
@enduml
However, this would also allow you to have another file2.puml like this: file2.puml
@startuml
title this contains only B and D
!includesub file1.puml!BASIC
@enduml
This file would be rendered exactly as if:
@startuml
title this contains only B and D
B -> B : stuff2
D -> D : stuff4
@enduml
%
Name | Description | Example | Return |
%chr
|
Return a character from a give Unicode value |
%chr(65)
|
A
|
%darken
|
Return a darken color of a given color with some ratio |
%darken("red", 20)
|
#CC0000
|
%date
|
Retrieve current date. You can provide an optional format for the date |
%date("yyyy.MM.dd' at 'HH:mm")
|
current date |
You can provide another optional time (on epoch format) |
%date("YYYY-MM-dd", %now() + 1*24*3600)
|
tomorrow date | |
%dec2hex
|
Return the hexadecimal string (String) of a decimal value (Int) |
%dec2hex(12)
|
c
|
%dirpath
|
Retrieve current dirpath |
%dirpath()
|
current path |
%feature
|
Check if some feature is available in the current PlantUML running version |
%feature("theme")
|
true
|
%false
|
Return always false
|
%false()
|
false
|
%file_exists
|
Check if a file exists on the local filesystem |
%file_exists("c:/foo/dummy.txt")
|
true if the file exists
|
%filename
|
Retrieve current filename |
%filename()
|
current filename |
%function_exists
|
Check if a function exists |
%function_exists("$some_function")
|
true if the function has been defined
|
%get_variable_value
|
Retrieve some variable value |
%get_variable_value("$my_variable")
|
the value of the variable |
%getenv
|
Retrieve environment variable value |
%getenv("OS")
|
the value of OS variable
|
%hex2dec
|
Return the decimal value (Int) of a hexadecimal string (String) |
%hex2dec("d") or %hex2dec(d)
|
13
|
%hsl_color
|
Return the RGBa color from a HSL color %hsl_color(h, s, l) or %hsl_color(h, s, l, a)
|
%hsl_color(120, 100, 50)
|
#00FF00
|
%intval
|
Convert a String to Int |
%intval("42")
|
42
|
%is_dark
|
Check if a color is a dark one |
%is_dark("#000000")
|
true
|
%is_light
|
Check if a color is a light one |
%is_light("#000000")
|
false
|
%lighten
|
Return a lighten color of a given color with some ratio |
%lighten("red", 20)
|
#CC3333
|
%load_json
|
Load JSON data from local file or external URL |
%load_json("http://localhost:7778/management/health")
|
JSON data |
%lower
|
Return a lowercase string |
%lower("Hello")
|
hello in that example
|
%mod
|
Return the remainder of division of two integers (modulo division) |
%mod(10, 3)
|
1
|
%newline
|
Return a newline |
%newline()
|
a newline |
%not
|
Return the logical negation of an expression |
%not(2+2==4)
|
false in that example
|
%now
|
Return the current epoch time |
%now()
|
1685547132 in that example (when updating the doc.)
|
%ord
|
Return a Unicode value from a given character |
%ord("A")
|
65
|
%lighten
|
Return a lighten color of a given color with some ratio |
%lighten("red", 20)
|
#CC3333
|
%reverse_color
|
Reverse a color using RGB |
%reverse_color("#FF7700")
|
#0088FF
|
%reverse_hsluv_color
|
Reverse a color using HSLuv |
%reverse_hsluv_color("#FF7700")
|
#602800
|
%set_variable_value
|
Set a global variable |
%set_variable_value("$my_variable", "some_value")
|
an empty string |
%size
|
Return the size of any string or JSON structure |
%size("foo")
|
3 in the example
|
%string
|
Convert an expression to String |
%string(1 + 2)
|
3 in the example
|
%strlen
|
Calculate the length of a String |
%strlen("foo")
|
3 in the example
|
%strpos
|
Search a substring in a string |
%strpos("abcdef", "ef")
|
4 (position of ef )
|
%substr
|
Extract a substring. Takes 2 or 3 arguments |
%substr("abcdef", 3, 2)
|
"de" in the example
|
%true
|
Return always true
|
%true()
|
true
|
%upper
|
Return an uppercase string |
%upper("Hello")
|
HELLO in that example
|
%variable_exists
|
Check if a variable exists |
%variable_exists("$my_variable")
|
true if the variable has been defined exists
|
%version
|
Return PlantUML current version |
%version()
|
1.2020.8 for example
|
%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
to add some log output when generating the diagram. This has no impact at all on the diagram itself. However, those logs are printed in the command line's output stream. This could be useful for debug purpose.
🎉 Copied!
|
|
!dump_memory
to dump the full content of the memory when generating the diagram. An optional string can be put after !dump_memory
. This has no impact at all on the diagram itself. This could be useful for debug purpose.
🎉 Copied!
|
|
🎉 Copied!
|
|
!import
directive.
Once the library has been imported, you can !include
file from this single zip/jar.
Example:
@startuml
!import /path/to/customLibrary.zip
' This just adds "customLibrary.zip" in the search path
!include myFolder/myFile.iuml
' Assuming that myFolder/myFile.iuml is located somewhere
' either inside "customLibrary.zip" or on the local filesystem
...
plantuml.include.path
in the command line.
For example:
java -Dplantuml.include.path="c:/mydir" -jar plantuml.jar atest1.txt
Note the this -D option has to put before the -jar option. -D options after the -jar option will be used to define constants within plantuml preprocessor.
##
syntax.
🎉 Copied!
|
|
%invoke_procedure()
, %call_user_func()
]%invoke_procedure()
procedure.
This procedure takes as first argument the name of the actual procedure to be called. The optional following arguments are copied to the called procedure.
For example, you can have:
🎉 Copied!
|
|
🎉 Copied!
|
|
For return functions, you can use the corresponding special function
%call_user_func()
:
🎉 Copied!
|
|
$a + $b
depending of type of $a
or $b
🎉 Copied!
|
|
!theme
directive to change the default theme of your diagram.
🎉 Copied!
|
|
You will find more information on the dedicated page.
!define
and !definelong
anymore. Use !function
, !procedure
or variable definition instead. !define
should be replaced by return !function
and !definelong
should be replaced by !procedure
.!define
和 !definelong
. 使用 !function
和定义变量替换他们. !define
替换为 返回函数 而 !definelong
应该替换为 void function.!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]