Compare commits

...

939 Commits

Author SHA1 Message Date
PlantUML c2416b58fd
Merge pull request #1764 from The-Lum/Evol
feat: add new JSON Object method (`deepMerge`) on plantuml/json
2024-05-05 23:53:42 +02:00
The-Lum 2c666eb968 feat: add new JSON Object method (`deepMerge`)
Report of:
- minimal-json/PR 98

[Thanks to @pbi-qfs]
2024-05-05 20:53:27 +00:00
PlantUML 09331c5577
Merge pull request #1763 from The-Lum/Evol
feat: add new JSON builtin function (`%json_merge`)
2024-05-05 17:32:38 +02:00
The-Lum 3dba008497 feat: add new JSON builtin function (`%json_merge`) 2024-05-05 09:21:07 +00:00
PlantUML ec2f906704
Merge pull request #1761 from The-Lum/Evol
feat: add new JSON builtin function (`%json_set`)
2024-05-03 19:53:43 +02:00
The-Lum dcfe17b73c feat: add new JSON builtin function (`%json_set`)
From this request:
- https://github.com/plantuml/plantuml/issues/328#issuecomment-2089276726
2024-05-03 17:06:30 +00:00
PlantUML 34e3cfc9f4
Merge pull request #1757 from The-Lum/Evol
fix: add `int` and `string` management on `%json_add`
2024-04-25 00:06:15 +02:00
The-Lum 6c4eaebd8f fix: add `int` and `string` management on `%json_add`
That fixes:
- https://github.com/plantuml/plantuml/issues/328#issuecomment-2071079413

Here is a fix for `int` and `string`, in order to manage:

```puml
%json_add({"age" : 30}, name, 123) '=> {"age":30,"name":123}
```

```puml
%json_add({"age" : 30}, name, Sally) '=> {"age":30,"name":"Sally"}
```

[FYI @philCryoport]
Reagrds,
Th.
2024-04-24 19:52:11 +00:00
PlantUML 81e7e76c50
Merge pull request #1742 from The-Lum/Evol
feat: add new JSON builtin functions (`%str2json`, `%json_add` and `%json_remove`)
2024-04-16 14:20:30 +02:00
PlantUML c7d43f3d39
Merge pull request #1740 from Benjamin-Davies/chen-common-commands
Add support for more common commands in Chen EER diagrams
2024-04-16 13:51:36 +02:00
The-Lum 24239ff0bd feat: add new JSON builtin functions (`%str2json`, `%json_add` and `%json_remove`)
From those requests:
- https://forum.plantuml.net/15436/allow-update-json-object-or-array-value
- https://forum.plantuml.net/17474/modify-json-variables-in-preprocessor
- https://forum.plantuml.net/18418/request-%25set_json_keys-function-json-writing-capabilities
- #328
- #1733
2024-04-15 05:33:02 +00:00
Benjamin Davies 494c0c981e
Add support for more common commands in Chen EER diagrams
Fixes #1729
2024-04-15 12:43:17 +12:00
Arnaud Roques 91e87b9691 refactor: remove dead code 2024-04-14 11:29:32 +02:00
Arnaud Roques 171a35971b refactor: enhance external process handling using ProcessBuilder 2024-04-14 10:50:33 +02:00
PlantUML 3adf9c93c7
Merge pull request #1736 from travkin79/patch/1735
Fix #1735 - Fix hiding some of multiple stereotypes in clusters (rectangles, packages, etc.)
2024-04-11 22:43:19 +02:00
Dietrich Travkin 46ac4a391f Fix #1735 - Only hide the stereotype text block if it does not contain visible stereotypes 2024-04-11 17:21:35 +02:00
PlantUML 9f53546ff6
Merge pull request #1732 from The-Lum/PatchBranch
Improve `Chen diagram` management & Rename `%splitstrregex` to `%splitstr_regex`
2024-04-10 17:51:46 +02:00
The-Lum 6802c2b578 fix: rename `%splitstrregex` builtin function to `%splitstr_regex`
According to:
- https://forum.plantuml.net/18827/%25splitstr-please-add-regex-support-as-second-argument?show=18838#c18838
2024-04-10 13:25:15 +00:00
The-Lum 52fdd3bbe4 feat: Improve `Chen diagram` management
According to `Chen` diagram and new PlantUML Keywords from:
- #1718

Add `Chen` diagram on:
- Syntax _(improve Language Descriptor (to follow plantuml/backlog#4))_
- Sub-diagram
- Readme

_(Similar to #1669)_
_[FYI @Benjamin-Davies]_
2024-04-10 13:15:06 +00:00
PlantUML f862254e22
Merge pull request #1731 from The-Lum/Random
feat: add `%splitstrregex` builtin function
2024-04-09 17:11:29 +02:00
PlantUML 64f3a8fc0e
Merge pull request #1730 from rubikscuber/fix-#1713
fix #1713
2024-04-09 16:51:07 +02:00
The-Lum f3ee15f97b feat: add `%splitstrregex` builtin function
From this request:
- https://forum.plantuml.net/18827/%25splitstr-please-add-regex-support-as-second-argument

Ack. & Ref.:
- https://forum.plantuml.net/15374/delimited-string-split-into-an-array
- https://forum.plantuml.net/18827/%25splitstr-please-add-regex-support-as-second-argument
- https://www.javacodeexamples.com/java-stringtokenizer-using-regex-pattern/3570
2024-04-09 14:04:18 +00:00
PlantUML e982bb326d
Merge pull request #1727 from theavege/fix/sunlust
fix json and yaml
2024-04-09 14:18:17 +02:00
rubikscuber 7c9866ac69
fix #1713 2024-04-09 14:12:21 +02:00
Artem V. Ageev d50aa2e289 fix json and yaml 2024-04-08 15:27:16 +03:00
Arnaud Roques 9432e0b1e5 chore: version 1.2024.4 2024-04-06 16:39:52 +02:00
Arnaud Roques 460d53f12b refactor: Replace computeIfAbsent with manual check for Java 1.7 compatibility 2024-04-06 13:28:57 +02:00
PlantUML 06d06e729b
Merge pull request #1724 from travkin79/patch/fix-NPE
Avoid NPE when a remote input stream cannot be read (while reading a remote style file)
2024-04-06 13:22:10 +02:00
PlantUML 8bc1c27c23
Merge pull request #1701 from DaumAlexande/create_script_xmi
Add a tool-independent XMI format
2024-04-06 13:12:26 +02:00
Arnaud Roques 04eada12ab refactor: Replaced stream usage with loops for Java 1.7 compatibility (!) 2024-04-06 13:02:19 +02:00
Dietrich Travkin 33e5903e80 Avoid NPE when a remote input stream cannot be read
Avoids the following stacktrace:
java.lang.NullPointerException
	at java.base/java.io.Reader.<init>(Reader.java:168)
	at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:88)
	at net.sourceforge.plantuml.utils.BlocLines.load(BlocLines.java:79)
	at net.sourceforge.plantuml.style.CommandStyleImport.executeArg(CommandStyleImport.java:89)
2024-04-04 17:52:10 +02:00
PlantUML 7755ae5be4
Merge pull request #1720 from diguage/select-line
Supports double-clicking to select all elements and links on a line. Fix #1719
2024-03-24 23:39:08 +01:00
diguage 3cc580ebd1 Supports double-clicking to select all elements and links on a line 2024-03-24 21:47:50 +08:00
PlantUML 4afe3ef7fe
Merge pull request #1718 from Benjamin-Davies/cheneer
Implement Chen Notation for ER-diagrams
2024-03-21 22:30:28 +01:00
Benjamin Davies 4b5bcd3bca
Fix compatibility with Java 8 2024-03-21 19:38:05 +13:00
Benjamin Davies e14c8ef0a5
Re-add chronology diagram
This was accidentally removed in a merge
2024-03-21 19:34:33 +13:00
Benjamin Davies 234cb3adea
Add tests for each new command 2024-03-21 17:55:42 +13:00
Benjamin Davies d39bfbc3b5
Add test for aliases 2024-03-20 16:57:41 +13:00
Benjamin Davies cbe84c240a
Fix attribute labels 2024-03-20 16:54:40 +13:00
Benjamin Davies 83255431f7
Document purpose of shared methods 2024-03-20 16:08:43 +13:00
Benjamin Davies 90a88ce4ee
Support long name and alias in Chen-EER 2024-03-16 18:42:55 +13:00
Benjamin Davies 8312e8c22f
Correctly detect cheneer diagrams 2024-03-16 17:38:41 +13:00
Benjamin Davies 60de4baff9
Merge branch 'master' into cheneer 2024-03-16 16:59:49 +13:00
PlantUML 3499373851
Merge pull request #1710 from The-Lum/PatchBranch
fix: math two-dimensional matrices and add tests
2024-03-10 19:23:12 +01:00
The-Lum f82f1a9a76 fix: math two-dimensional matrices and add test
Report of https://github.com/The-Lum/ASCIIMathTeXImg/commit/6f3bb01d
That fixes #1706

Regards,
Th.
2024-03-10 17:09:12 +00:00
PlantUML 1188a05a60
Merge pull request #1705 from ouss1002/bug-custom-functions-name
Prevent IndexOutOfBoundsException in equation rendering by checking non-empty 'texsymbol' strings
2024-03-08 19:10:32 +01:00
BOUDJENIBA Oussama d85f96256e
Prevent IndexOutOfBoundsException in equation rendering by checking non-empty 'texsymbol' strings
This commit introduces a check before accessing the first character of 'texsymbol' strings in equation rendering, preventing IndexOutOfBoundsException when custom functions names are used which can lead to an empty string. This change ensures that equations custom variables names ending with standard function strings are handled gracefully without errors
2024-03-04 09:58:29 +01:00
Daum Alexander (DCL ATV SC D RAD CSFW FW) 3216eea2d9 Add XMI_SCRIPT support to DescriptionDiagrams 2024-02-28 13:20:08 +01:00
Daum Alexander (DCL ATV SC D RAD CSFW FW) 124aa0384c Introduce XMI_SCRIPT file type
XMI_SCRIPT is intented to be used to generate XMI files, that contain as
much metadata (UML standard compliant), that can be generated by
plantuml.
2024-02-28 11:06:13 +01:00
Arnaud Roques a0be1ed677 feat: timing set background color of concise
https://forum.plantuml.net/18682/timing-set-background-color-of-concise
https://forum.plantuml.net/18676/supporting-markdown-syntax
2024-02-27 20:39:02 +01:00
Arnaud Roques 2a49ef06da fix negative values causing syntax error in robust "has" list
https://forum.plantuml.net/18701/negative-values-causing-syntax-error-in-robust-has-list?show=18705
2024-02-27 19:42:44 +01:00
Arnaud Roques 6c945e2508 fix: Activity Diagram: Style of multiline Box
https://github.com/plantuml/plantuml/issues/1697
2024-02-26 22:50:31 +01:00
Arnaud Roques f385bc0dba chore: use Collections.emptyList() instead of new ArrayList() 2024-02-24 12:03:21 +01:00
Arnaud Roques 3cc68235dd refactor: prepare preprocessor error improvement 2024-02-22 20:28:03 +01:00
Arnaud Roques a48dd52d9f refactor: prepare preprocessor error improvement (almost finished :-)
https://github.com/plantuml/plantuml/pull/1668
2024-02-22 20:06:59 +01:00
Arnaud Roques 6329d9a8d5 refactor: prepare preprocessor error improvement (in progress)
https://github.com/plantuml/plantuml/pull/1668
2024-02-22 19:32:38 +01:00
Arnaud Roques 436fb37f1a refactor: prepare preprocessor error improvement (in progress)
https://github.com/plantuml/plantuml/pull/1668
2024-02-22 18:33:29 +01:00
PlantUML 35909a50c7
Merge pull request #1696 from The-Lum/Random
feat: add `%get_all_stdlib` builtin function
2024-02-22 16:48:45 +01:00
The-Lum fea505ab77 feat: add `%get_all_stdlib` builtin function 2024-02-22 15:11:26 +00:00
Arnaud Roques be69889e7f tests: fix stdlib test
https://github.com/plantuml/plantuml/pull/1692#issuecomment-1952831187
2024-02-21 22:23:31 +01:00
PlantUML c6f9684026
Merge pull request #1693 from The-Lum/docs
docs: add "PlantUML package and PlantUML on the GNU/Linux distribution" page [skip ci]
2024-02-20 20:00:03 +01:00
Arnaud Roques 2a961129f2 chore: improve error message when missing stdlib
https://github.com/plantuml/plantuml/pull/1692#issuecomment-1952831187
2024-02-20 19:52:29 +01:00
PlantUML 5fe5cafe70
Merge pull request #1692 from The-Lum/PatchBranch
tests: add not working example about stdlib
2024-02-20 19:45:32 +01:00
The-Lum 415886e5d0
docs: add "PlantUML package and PlantUML on the GNU/Linux distribution" page
To answer to:
- #1572

Here is the links of plantuml version on:
- the _[most popular]_ software package management systems
- the _[most popular]_ GNU/Linux distributions
2024-02-17 15:14:56 +01:00
The-Lum 8fe9faec1b tests: add not working example about stdlib 2024-02-16 21:59:49 +00:00
Arnaud Roques ee43dd0b99 chore: fix some tests on Windows 2024-02-16 22:10:07 +01:00
Arnaud Roques 04f718781f refactor: remove dead code 2024-02-16 20:20:56 +01:00
PlantUML 99698d97bb
Merge pull request #1691 from The-Lum/PatchBranch
fix: suppress `@[start|end]uml` on `sunlust` theme
2024-02-16 18:46:05 +01:00
The-Lum 4ce77d3fa8
fix: suppress `@[start|end]uml` on `sunlust` theme
That fix:
- https://forum.plantuml.net/18683/sunlust-theme-question
2024-02-16 18:05:22 +01:00
Arnaud Roques c6f150fd4e chore: version 1.2024.3 2024-02-15 20:43:50 +01:00
Arnaud Roques ad4a1bde57 feat: adding undocumented support for gzip URL 2024-02-15 20:35:36 +01:00
Arnaud Roques cfa16d0f60 chore: version 1.2024.2 2024-02-14 19:05:53 +01:00
PlantUML ac8e785372
Merge pull request #1689 from The-Lum/Random
feat: add  `%get_all_theme` builtin function
2024-02-14 18:55:32 +01:00
The-Lum 53bcc028cf fix: typo on `GetAllThemeTest` filename 2024-02-14 06:19:34 +00:00
The-Lum ab09e2ef1f feat: add `%get_all_theme` builtin function 2024-02-14 06:14:19 +00:00
PlantUML ab60639f5e
Merge pull request #1675 from plantuml/dependabot/gradle/org.junit.jupiter-junit-jupiter-5.10.2
chore(deps): bump org.junit.jupiter:junit-jupiter from 5.10.1 to 5.10.2
2024-02-13 18:04:05 +01:00
dependabot[bot] ababa00835
chore(deps): bump org.junit.jupiter:junit-jupiter from 5.10.1 to 5.10.2
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.10.1 to 5.10.2.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.10.1...r5.10.2)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-13 16:51:50 +00:00
PlantUML 76d1daf5ae
Merge pull request #1674 from plantuml/dependabot/gradle/org.assertj-assertj-core-3.25.3
chore(deps): bump org.assertj:assertj-core from 3.24.2 to 3.25.3
2024-02-13 17:51:15 +01:00
PlantUML 17d317e53a
Merge pull request #1686 from The-Lum/PatchBranch
refactor: Create `test/utils` directory and `CommandHelpThemeTest` on a more accurate folder
2024-02-13 17:41:13 +01:00
PlantUML 4e5bf030b6
Merge branch 'master' into PatchBranch 2024-02-13 17:27:07 +01:00
PlantUML cfd3ad2e4d
Merge pull request #1687 from The-Lum/ImproveDoc
docs: fix links _(due to emoji)_
2024-02-13 14:23:03 +01:00
The-Lum af3c49c2aa
docs: fix links _(due to emoji)_ 2024-02-13 14:19:22 +01:00
The-Lum 7be48049ff
fix: emergency change to be compatible with `actions/labeler` v5
Emergency change to be compatible with `actions/labeler` v5

Observed on:
- #1620
2024-02-13 13:11:30 +01:00
PlantUML 956e23c33c
Merge pull request #1644 from plantuml/dependabot/github_actions/actions/cache-4
chore(deps): bump actions/cache from 3 to 4
2024-02-13 12:10:21 +01:00
The-Lum e70f23b8fe refactor: Change `HelpTest` to `CommandHelpThemeTest` on a more accurate folder
To continue:
- #1655

Change `HelpTest.java` to `CommandHelpThemeTest.java`
Put on a more accurate folder:
- `net.sourceforge.plantuml.help`
2024-02-13 11:04:02 +00:00
PlantUML 75b00f08d1
Merge pull request #1626 from plantuml/dependabot/github_actions/actions/upload-artifact-4
chore(deps): bump actions/upload-artifact from 3 to 4
2024-02-13 11:44:47 +01:00
PlantUML 29f90e50a9
Merge pull request #1620 from plantuml/dependabot/github_actions/actions/labeler-5
chore(deps): bump actions/labeler from 4 to 5
2024-02-13 11:18:08 +01:00
The-Lum e11d974ce5 refactor: place `net.sourceforge.plantuml.test` on `test.utils`
Create `test` folder with:
- `example`
- `utils`

And put all `net.sourceforge.plantuml.test` on `test.utils`.
_[no other change]_
2024-02-12 19:13:02 +00:00
PlantUML 36b1fe5e3b
Merge pull request #1681 from theavege/add/sunlust
add Description
2024-02-11 23:21:28 +01:00
PlantUML a65935cb09
Merge pull request #1684 from chenrui333/update-graphviz-version-detection
fix: update graphviz version check pattern
2024-02-11 23:15:11 +01:00
Rui Chen 097550284e
fix: update graphviz version check pattern
Right now, the `graphviz` version detection failed to match with `10.x.x`, thus relaxing the version check regex.

Signed-off-by: Rui Chen <rui@chenrui.dev>
2024-02-11 19:44:40 +01:00
Arnaud Roques d65951f520 feat: Update C4-PlantUML to v2.9.0
https://github.com/plantuml/plantuml-stdlib/pull/93
2024-02-11 12:20:28 +01:00
Artem V. Ageev d443d23232
Merge branch 'plantuml:master' into add/sunlust 2024-02-09 11:28:34 +02:00
Artem V. Ageev 0ba45e0796
Update puml-theme-sunlust.puml
add Description theme
2024-02-09 11:28:11 +02:00
Arnaud Roques 68fdb662fe chore: version 1.2024.1 2024-02-08 22:37:13 +01:00
PlantUML 6d035c34a1
Merge pull request #1677 from theavege/add/sunlust
Add files via upload
2024-02-08 19:59:52 +01:00
Artem V. Ageev 1c0c7d828c
Add files via upload 2024-02-08 20:36:50 +02:00
Arnaud Roques 306f8b292e feat: improve standard library
https://github.com/plantuml/plantuml-stdlib/issues/88
https://github.com/plantuml/plantuml-stdlib/pull/90
https://github.com/plantuml/plantuml-stdlib/pull/91
2024-02-07 22:51:18 +01:00
Arnaud Roques 81e1c967c3 feat: add eip in standard library
https://github.com/plantuml/plantuml-stdlib/issues/88
2024-02-06 23:02:32 +01:00
dependabot[bot] 1690ca3cc3
chore(deps): bump org.assertj:assertj-core from 3.24.2 to 3.25.3
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.24.2 to 3.25.3.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.24.2...assertj-build-3.25.3)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-05 02:49:43 +00:00
PlantUML c447e4489b
Merge pull request #1673 from The-Lum/Random
feat: `Random` function: add test and private declaration
2024-02-04 22:15:01 +01:00
The-Lum 3bd3edb740 feat: `Random` function: add test and private declaration
Add:
- `RandomFunctionTest` test file
- private declaration for random lib.

Ref.:
- #1667

Improve:
- dbaf8ac2cd
- #1668
2024-02-03 14:06:49 +00:00
PlantUML ad383d2dc8
Merge pull request #1669 from The-Lum/PatchBranch
Improve `Chronology diagram` management
2024-02-02 23:44:52 +01:00
PlantUML 80acb87fbb
Merge pull request #1668 from The-Lum/Random
feat: Improve new `Random` function
2024-02-01 23:40:55 +01:00
The-Lum 23c86ba5b9 Improve `Chronology diagram` management
Adding `Chronology diagram` on:
- Syntax
- Sub-diagram
- Readme
2024-02-01 22:36:05 +00:00
The-Lum c10ac1769d
fix: import the file `RandomFunction` 2024-02-01 23:31:08 +01:00
The-Lum 376ee9d8c2
Update `TContext.java` with `RandomFunction` 2024-02-01 23:13:41 +01:00
The-Lum 9e18d34936
Update and rename Random.java to RandomFunction.java
Feat: improve to accept 0, 1, 2 args
2024-02-01 23:10:43 +01:00
Arnaud Roques dbaf8ac2cd feat: add some %random function
https://github.com/plantuml/plantuml/issues/1667
2024-02-01 22:29:55 +01:00
Arnaud Roques dbbdf1277b chore: version 1.2024.0 2024-02-01 19:30:28 +01:00
Arnaud Roques 7a200019e6 Merge branch 'master' of https://github.com/plantuml/plantuml 2024-02-01 18:53:33 +01:00
Arnaud Roques 5fae97f44e fix: Gantt Layout issue when Print between is used with Printscale weekly
https://github.com/plantuml/plantuml/issues/1664
2024-02-01 18:52:57 +01:00
PlantUML de6316ccac
Merge pull request #1655 from The-Lum/PatchBranch
fix: Restore missing file `HelpTest.java` on an accurate folder.
2024-01-27 15:34:37 +01:00
The-Lum e9139c8a38 fix: Restore missing file `HelpTest.java` on an accurate folder.
_Ref._:
- 9c62daa35d
- e739cd8f5d
2024-01-27 13:36:57 +00:00
Arnaud Roques dbb535473c fix: clear cache when StringBounder has changed
https://github.com/plantuml/plantuml/issues/1575
https://forum.plantuml.net/18480/teoz-produces-odd-legend-for-sequence-diagrams
2024-01-27 13:48:28 +01:00
The-Lum 6d158d1196
docs: add `package-info.java` on `chronology` 2024-01-24 12:35:16 +01:00
The-Lum f805d983fd
docs: add `readme.md` on `chronology` 2024-01-24 12:29:33 +01:00
Arnaud Roques 4026878300 perf: stop recompiling pattern at runtime
https://github.com/plantuml/plantuml/issues/1642
2024-01-18 22:32:45 +01:00
dependabot[bot] 4217882d8a
chore(deps): bump actions/cache from 3 to 4
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-18 02:11:38 +00:00
Arnaud Roques bf2312a252 feat: edgy standard library improvement
https://github.com/plantuml/plantuml-stdlib/pull/86
2024-01-16 22:19:10 +01:00
PlantUML 24d7e948af
Merge pull request #1643 from The-Lum/PatchBranch
add: Language Descriptor Improvement (adding `action` and `process`)
2024-01-16 17:56:26 +01:00
The-Lum 9502ed812b add: Language Descriptor Improvement (adding `action` and `process`) 2024-01-16 16:22:19 +00:00
Arnaud Roques 48dc07da95 fix: note placement in listfiles 2024-01-09 18:46:10 +01:00
Arnaud Roques 6c73caa943 fix: minor issues about multiples stereotype and improve new shapes action and process
https://github.com/plantuml/plantuml/issues/1538
https://github.com/plantuml/plantuml/issues/1631
2024-01-08 21:11:41 +01:00
Arnaud Roques d07cda5f5f feat: adding action and process keywords
https://github.com/plantuml/plantuml/issues/1631
2024-01-06 12:02:26 +01:00
Arnaud Roques 533c27cba5 feat: adding edgy tools in stdlib
https://github.com/plantuml/plantuml-stdlib/pull/84
2024-01-03 18:21:29 +01:00
Arnaud Roques 26189b1e64 fix: improve local style management for activity diagrams
https://github.com/plantuml/plantuml/issues/1629
2023-12-19 19:08:24 +01:00
Arnaud Roques b65aaff80b fix: improve local style for activity diagrams
https://github.com/plantuml/plantuml/issues/1623
2023-12-18 18:24:29 +01:00
dependabot[bot] 371bafaade
chore(deps): bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-15 02:43:21 +00:00
Arnaud Roques cc80d86bc3 chore: prepare next development cycle 2023-12-12 21:35:19 +01:00
Arnaud Roques 5128891a0f chore: version 1.2023.13 2023-12-11 19:24:54 +01:00
Arnaud Roques a87f844064 fix: missing label in activity diagrams
https://github.com/plantuml/plantuml/issues/1622#issuecomment-1847091587
2023-12-11 19:03:13 +01:00
Arnaud Roques a061b11305 chore: formatting issue 2023-12-11 18:47:30 +01:00
Arnaud Roques 428381ca44 Merge branch 'tmp2' 2023-12-11 18:36:41 +01:00
Arnaud Roques c20b3d9642 feat: work on chronology 2023-12-11 18:34:23 +01:00
PlantUML c20153a841
Merge pull request #1624 from The-Lum/PatchBranch
fix and test refactor: on `GetJsonKey`,  `Chr`  and `Ord`
2023-12-08 23:07:53 +01:00
The-Lum 5c7245623a test refactor: simplify test using `TimTestUtils`
For: `Chr` and `Ord`
2023-12-08 21:44:05 +00:00
The-Lum 3f836a44cc fix: allow (`int` corresponding of) unicode value for `Chr` builtin fct
That fixes partialy #1571.
2023-12-08 21:20:22 +00:00
The-Lum 1cb61d5609 fix: allow different type inside array for `GetJsonKey` builtin fct 2023-12-08 21:08:36 +00:00
dependabot[bot] cb5b881e46
chore(deps): bump actions/labeler from 4 to 5
Bumps [actions/labeler](https://github.com/actions/labeler) from 4 to 5.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-05 02:46:52 +00:00
PlantUML 3a4c614fc1
Merge pull request #1617 from plantuml/dependabot/github_actions/actions/setup-java-4
chore(deps): bump actions/setup-java from 3 to 4
2023-12-04 19:00:14 +01:00
PlantUML db6567c183
Merge pull request #1618 from DaumAlexande/use_xmlunit
test: Use XMLUnit to compare XMI
2023-12-04 18:48:57 +01:00
PlantUML 6c593c49d2
Merge pull request #1619 from The-Lum/ImproveDoc
docs: improve `@deprecated` description
2023-12-04 14:40:26 +01:00
The-Lum de5d791eb4 docs: improve `@deprecated` description 2023-12-04 13:23:17 +00:00
Daum Alexander (DCL ATV SC D RAD CSFW FW) 7b1f67a57e test: Use XMLUnit to compare XMI
The XMLUnit DiffBuilder used can ignore element order, but still checks
for correct nesting, which the string sorting could not.
2023-12-04 11:07:43 +01:00
The-Lum 1899280e21
fix: minor fix `final` variable definition 2023-12-03 10:48:30 +01:00
dependabot[bot] 35505fd24c
chore(deps): bump actions/setup-java from 3 to 4
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-30 02:17:43 +00:00
PlantUML d2dd274881
Merge pull request #1616 from Jef-git/master
Feat: Adding SUPPORT.md file
2023-11-29 17:31:00 +01:00
jef.overweg b29df7758a Feat: Adding SUPPORT.md file 2023-11-29 16:28:01 +01:00
PlantUML d7727c5c87
Merge pull request #1613 from The-Lum/PatchBranch
feat: Allow JSON Array on JSON preproc. (affectation on plantuml variable, on foreach, ...)
2023-11-27 23:19:57 +01:00
The-Lum a7d434cff1 fix: comment indent 2023-11-27 20:06:09 +00:00
The-Lum a570cea56f feat: Allow JSON Array on JSON preproc.
(affectation on plantuml variable, on foreach, ...)
2023-11-27 20:02:54 +00:00
Arnaud Roques ee7022f19e chore: fix test 2023-11-27 18:57:42 +01:00
Arnaud Roques e991c4699b feat: several gantt improvement 2023-11-27 18:41:15 +01:00
Arnaud Roques f0b3e6900c feat: improve gantt language 2023-11-26 18:57:11 +01:00
Arnaud Roques bcb3b92dbc fix: disable creole for file listing
https://github.com/plantuml/plantuml/issues/1448#issuecomment-1820720969
2023-11-23 21:16:49 +01:00
Arnaud Roques a98d8ccdd5 fix: fix MaximumWidth style for legend
https://github.com/plantuml/plantuml/issues/1608
2023-11-23 21:04:56 +01:00
Arnaud Roques b48ea95112 fix: fix bad note shape in sequence diagram
https://github.com/plantuml/plantuml/issues/1609
2023-11-23 20:42:31 +01:00
Arnaud Roques 422c74eba4 fix: minor issue about Gantt D+00 syntax 2023-11-23 20:11:10 +01:00
Arnaud Roques 8b5a1521e7 fix: several Gantt improvement
https://forum.plantuml.net/18397/gantt-how-handle-resource-starts-terminates-specific-date
https://forum.plantuml.net/17571/is-it-possible-to-set-gantt-tasks-to-be-incomplete-by-default?show=17571#q17571
https://forum.plantuml.net/18128/gantt-diagram-vertical-separator-styling?show=18128#q18128
2023-11-23 17:50:00 +01:00
PlantUML e4c246750e
Merge pull request #1601 from plantuml/dependabot/github_actions/actions/github-script-7
chore(deps): bump actions/github-script from 6 to 7
2023-11-20 15:54:12 +01:00
PlantUML cc1d0099e4
Merge pull request #1607 from The-Lum/ImproveDoc
docs: improve doc (JavaDoc, GH) [`package-info.java`, `readme.md`] (for flowdiagram, color, creole, sprite)
2023-11-20 15:43:26 +01:00
The-Lum 37714ac1e2 docs: add `package-info.java` and `readme.md`
(for `klimt/sprite`)
2023-11-19 15:37:20 +00:00
The-Lum 54117a5e8b fix: fix some links to `zext` instead of `ext`. 2023-11-19 15:10:09 +00:00
The-Lum d5e42c9d7e fix: change `readme.md` to `zext` dir 2023-11-19 14:38:44 +00:00
The-Lum bb56bf2973
Merge branch 'plantuml:master' into ImproveDoc 2023-11-19 15:12:13 +01:00
Arnaud Roques aea7e540ac chore: delete last ext files 2023-11-19 11:48:47 +01:00
Arnaud Roques b74f9634fb chore: restore lost readme.md files 2023-11-19 11:34:16 +01:00
Arnaud Roques d61ebc40a0 refactor: rename ext packages to zext to improve javadoc display 2023-11-19 11:22:11 +01:00
Arnaud Roques f35856e6b9 chore: better End Of Line management 2023-11-19 11:15:28 +01:00
The-Lum 78a32d2743 docs: add `package-info.java` and `readme.md` 2023-11-17 10:31:18 +00:00
Arnaud Roques 546174d17f fix: better support for package with ELK layout
https://forum.plantuml.net/13709/eclipse-layout-kernel?show=18389#a18389
2023-11-16 18:23:58 +01:00
Arnaud Roques f91a19413b feat: add osa2 icon library 2023-11-16 18:01:11 +01:00
PlantUML db9c59c1bb
Merge pull request #1605 from The-Lum/ImproveDoc
docs: improve doc (JavaDoc, GH) [`package-info.java`, `readme.md`] (for External code)
2023-11-16 12:33:02 +01:00
The-Lum 6e85bcaac9 docs: add `package-info.java` and `readme.md`
For external code:
- acearth,
- zxing,
- jcckit,
- ditaa.
2023-11-16 11:08:55 +00:00
Benjamin Davies 273f8b4bf1
Add tests 2023-11-16 20:32:18 +13:00
Benjamin Davies 9ad84822fa
Introduce CHEN_CIRCLE entity type 2023-11-16 18:49:00 +13:00
Benjamin Davies 96785da1c7
Add multiple subclasses command 2023-11-16 18:42:47 +13:00
Benjamin Davies 9e8a313681
Add subset associations 2023-11-16 17:41:11 +13:00
Benjamin Davies 3734465441
Style associations 2023-11-16 13:36:34 +13:00
Benjamin Davies de74e7fae9
Change leaf style based on stereotype 2023-11-16 13:24:12 +13:00
Benjamin Davies c6bd537509
Draw relationships as diamonds 2023-11-16 12:16:35 +13:00
Benjamin Davies 6361f826be
Add new leaf types 2023-11-16 11:29:37 +13:00
Benjamin Davies fb9fd7e13e
Merge remote-tracking branch 'upstream/master' into cheneer 2023-11-16 10:05:21 +13:00
Benjamin Davies 153b96af3e
Fix stereotype handling 2023-11-16 10:03:30 +13:00
PlantUML e17b2a4e22
Merge pull request #1604 from The-Lum/ImproveDoc
docs: fix package names on `package-info.java` of `cheerpj` and `smetana`
2023-11-15 22:02:15 +01:00
Benjamin Davies 4d01e6fd6c
Merge entity and relationship commands 2023-11-16 09:49:18 +13:00
Benjamin Davies e26ccf756a
Tweak Chen EER syntax to be more consistent with existing diagram types 2023-11-16 09:43:54 +13:00
The-Lum 8a1a9dfc8b docs: add `package-info.java` for `gen.annotation` (smetana)
- add `package-info.java` for `gen.annotation`
- add `@see` on `h` and `smetana/core`
2023-11-15 20:35:20 +00:00
The-Lum b92731aecd Merge branch 'ImproveDoc' of https://github.com/The-Lum/plantuml into ImproveDoc 2023-11-15 20:07:39 +00:00
The-Lum 2f4a56f692 docs: fix package names (for `cheerpj`, `smetana`)
fix package names on `package-info.java` of `cheerpj` and `smetana`
2023-11-15 20:03:00 +00:00
PlantUML 1c4162c2ff
Add Javadoc link 2023-11-15 20:42:22 +01:00
Arnaud Roques 162c3f9238 Merge branch 'master' of https://github.com/plantuml/plantuml 2023-11-15 19:50:58 +01:00
Arnaud Roques 333d0b1a1f chore: update javadoc even for snapshot 2023-11-15 19:50:47 +01:00
PlantUML 1cfab8ba80
Merge pull request #1603 from The-Lum/ImproveDoc
docs: improve doc (JavaDoc, GH) [`package-info.java`, `readme.md`] (for `Smetana`, `API/CheerpJ`)
2023-11-15 18:28:15 +01:00
PlantUML cebe19f466
Merge branch 'master' into ImproveDoc 2023-11-15 18:20:55 +01:00
Arnaud Roques 135604e727 Merge branch 'master' of https://github.com/plantuml/plantuml 2023-11-15 18:19:41 +01:00
Arnaud Roques b63f2ab4cd chore: filter javadoc generation 2023-11-15 18:18:55 +01:00
The-Lum acb95b44ce docs: add `package-info.java` and `readme.md`
For `API/CheerpJ`
2023-11-15 13:53:30 +00:00
The-Lum 91ead31632
docs: update `README.md`: add javadoc link for snapshot 2023-11-15 13:52:49 +01:00
Arnaud Roques 3a10503cc8 chore: suppress frame for javadoc 2023-11-14 21:34:47 +01:00
Arnaud Roques 4f0f8d7821 chore: remove windows test and generate javadoc with frames 2023-11-14 21:31:05 +01:00
Arnaud Roques 61b1e4f0f0 chore: try to add javadoc to GitHub Pages 2023-11-14 19:29:54 +01:00
The-Lum e0b299d2ef
docs: update `README.md`: add javadoc link + emoji
- Add javadoc link
- Add emoji (conform to the 'https://plantuml.com' page)
2023-11-14 17:25:13 +01:00
The-Lum 91d46a866e docs: add `package-info.java` and `readme.md`
For `Smetana`:
- `src/h`
- `src/gen`
- `src/smetana/core`
2023-11-14 14:34:15 +00:00
dependabot[bot] 486b020a84
chore(deps): bump actions/github-script from 6 to 7
Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-14 02:04:54 +00:00
Arnaud Roques 4f46b6726e refactor: remove dead code 2023-11-11 20:23:35 +01:00
Arnaud Roques 137d84101f style: remove unused import 2023-11-11 19:56:03 +01:00
PlantUML 2d47edd326
Merge pull request #1592 from plantuml/dependabot/gradle/org.junit.jupiter-junit-jupiter-5.10.1
chore(deps): bump org.junit.jupiter:junit-jupiter from 5.10.0 to 5.10.1
2023-11-10 09:36:48 +01:00
PlantUML 76a27d5d9d
Merge pull request #1599 from The-Lum/ImproveDoc
docs: improve doc (JavaDoc, GH) [`package-info.java`, `readme.md`]
2023-11-10 10:19:21 +02:00
The-Lum c885afd3d2 docs: add `package-info.java` and `readme.md`
(for `png` to `zopfli`)

Todo or remaining directory:
- api
- compositediagram
- core
- decoration
- flowdiagram
- golem
- klimt
- mda
- text
- utils
- webp
2023-11-09 20:11:23 +00:00
dependabot[bot] cb35beca6c
chore(deps): bump org.junit.jupiter:junit-jupiter from 5.10.0 to 5.10.1
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.10.0 to 5.10.1.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.10.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 02:25:05 +00:00
The-Lum 7666511512
Merge branch 'plantuml:master' into ImproveDoc 2023-11-02 21:40:25 +01:00
The-Lum 3a095fd7cb docs: add `package-info.java` and `readme.md`
(for `dedication` to `png`)
2023-11-02 20:38:00 +00:00
PlantUML b8b98d0c18
Merge pull request #1587 from travkin79/patch/1580
#1580 Fix hiding stereotypes
2023-10-30 13:33:40 +02:00
Dietrich Travkin 0a795acbb3 Fix merge problem 2023-10-30 10:48:47 +01:00
Dietrich Travkin 7a7f59f00b Merge commit '89406657e7a26c74119a87637f8f96c94055b45b' into patch/1580 2023-10-30 10:45:34 +01:00
Dietrich Travkin 263662d6d3 #1580 Make source code compatible to Java 1.7 (forgot one stream usage) 2023-10-30 10:39:34 +01:00
Dietrich Travkin 8b87aa0c1c #1580 Make source code compatible to Java 1.7 2023-10-30 10:18:27 +01:00
PlantUML 89406657e7
Merge pull request #1588 from travkin79/patch/1475
#1475 Fix show statement
2023-10-27 11:39:41 +02:00
Dietrich Travkin 570d056f3d #1475 Fix show statement 2023-10-27 11:23:43 +02:00
Dietrich Travkin f47ca8c339 #1580 Fix hiding stereotypes 2023-10-27 11:00:17 +02:00
Arnaud Roques f8d87217a7 refactor: remove unused code 2023-10-22 12:15:29 +02:00
Arnaud Roques e92dcd400b refactor: remove unused code 2023-10-22 11:54:17 +02:00
Arnaud Roques 8f5c3379ed refactor: remove unused logo dead code 2023-10-22 11:28:29 +02:00
Arnaud Roques 9a75a9c577 Merge remote-tracking branch 'origin/attic-proposal' 2023-10-22 11:21:03 +02:00
Arnaud Roques 38ea5ae823 chore: prepare next development cycle 2023-10-22 10:33:24 +02:00
PlantUML 920bb2b33c
Proposal for attic.md 2023-10-21 20:48:16 +02:00
Arnaud Roques 2b2f291911 chore: gradle.properties has been skipped 2023-10-20 16:39:19 +02:00
Arnaud Roques 8b092894ed chore: version 1.2023.12 2023-10-20 15:58:10 +02:00
Arnaud Roques 1e6ffb0bec fix: add some hard-coded dot path for MacOS
https://github.com/plantuml/plantuml/issues/1583
2023-10-20 15:44:00 +02:00
Arnaud Roques 4adacbabe5 fix: improve error management for non-GPL version 2023-10-20 15:29:27 +02:00
The-Lum 28cc4638d6 docs: add `package-info.java` and `readme.md`
(for `abel` to `command`)
2023-10-17 10:16:34 +00:00
PlantUML 2bb375b7ba
Merge pull request #1579 from plantuml/dependabot/npm_and_yarn/dot-github/actions/configure-workflow/babel/traverse-7.23.2
chore(deps-dev): bump @babel/traverse from 7.15.4 to 7.23.2 in /.github/actions/configure-workflow
2023-10-17 11:42:39 +02:00
dependabot[bot] f7c578e3ad
chore(deps-dev): bump @babel/traverse
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.15.4 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 09:33:08 +00:00
The-Lum 172ac26e03
docs: create `ant` `readme.md` 2023-10-05 22:21:34 +02:00
Arnaud Roques 92e8838b6e Merge branch 'master' of https://github.com/plantuml/plantuml 2023-10-05 20:09:43 +02:00
Arnaud Roques a63177052e chore: update mockito version except for Java 8 2023-10-05 20:09:06 +02:00
PlantUML 4b1f3eda8b
Update BUILDING.md 2023-10-05 20:03:28 +02:00
Arnaud Roques cb395b103a chore: unify build.gradle.kts 2023-10-05 19:55:48 +02:00
PlantUML 50d1a1caa8
Update build.gradle.kts
Print Java version for tests
2023-10-05 17:05:30 +02:00
PlantUML 368a7827b8
Merge pull request #1570 from plantuml/dependabot/gradle/org.apache.ant-ant-1.10.14
chore(deps): bump org.apache.ant:ant from 1.10.13 to 1.10.14
2023-10-05 12:13:01 +02:00
PlantUML 44cda2ce59
Merge pull request #1568 from plantuml/dependabot/gradle/org.apache.xmlgraphics-fop-2.9
chore(deps): bump org.apache.xmlgraphics:fop from 2.8 to 2.9
2023-10-05 11:53:59 +02:00
dependabot[bot] 7bba098125
chore(deps): bump org.apache.xmlgraphics:fop from 2.8 to 2.9
Bumps org.apache.xmlgraphics:fop from 2.8 to 2.9.

---
updated-dependencies:
- dependency-name: org.apache.xmlgraphics:fop
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 09:41:06 +00:00
PlantUML 6f2dfca7c8
Merge pull request #1566 from plantuml/dependabot/gradle/org.apache.xmlgraphics-batik-all-1.17
chore(deps): bump org.apache.xmlgraphics:batik-all from 1.16 to 1.17
2023-10-05 11:40:03 +02:00
dependabot[bot] 3a302fba74
chore(deps): bump org.apache.ant:ant from 1.10.13 to 1.10.14
Bumps org.apache.ant:ant from 1.10.13 to 1.10.14.

---
updated-dependencies:
- dependency-name: org.apache.ant:ant
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 09:28:45 +00:00
PlantUML 637b408532
Merge pull request #1565 from plantuml/dependabot/gradle/org.junit.jupiter-junit-jupiter-5.10.0
chore(deps): bump org.junit.jupiter:junit-jupiter from 5.9.2 to 5.10.0
2023-10-05 11:27:55 +02:00
PlantUML e6eb7b960d
Merge pull request #1564 from plantuml/dependabot/github_actions/actions/checkout-4
chore(deps): bump actions/checkout from 3 to 4
2023-10-05 11:13:45 +02:00
PlantUML ee4c62d904
Merge pull request #1563 from plantuml/dependabot/github_actions/peter-evans/close-issue-3
chore(deps): bump peter-evans/close-issue from 2 to 3
2023-10-05 10:49:03 +02:00
PlantUML cbcda3c2ed
Merge pull request #1562 from plantuml/dependabot/github_actions/docker/login-action-3
chore(deps): bump docker/login-action from 2 to 3
2023-10-05 10:35:04 +02:00
PlantUML f2aa804ec1
Merge pull request #1561 from plantuml/dependabot/github_actions/docker/build-push-action-5
chore(deps): bump docker/build-push-action from 4 to 5
2023-10-05 10:24:19 +02:00
PlantUML 2623cc94dd
Merge pull request #1560 from plantuml/dependabot/github_actions/docker/metadata-action-5
chore(deps): bump docker/metadata-action from 4 to 5
2023-10-05 10:14:10 +02:00
dependabot[bot] 86d0e3bb3f
chore(deps): bump peter-evans/close-issue from 2 to 3
Bumps [peter-evans/close-issue](https://github.com/peter-evans/close-issue) from 2 to 3.
- [Release notes](https://github.com/peter-evans/close-issue/releases)
- [Commits](https://github.com/peter-evans/close-issue/compare/v2...v3)

---
updated-dependencies:
- dependency-name: peter-evans/close-issue
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 08:05:24 +00:00
PlantUML 73940b84cb
Merge pull request #1559 from plantuml/dependabot/github_actions/actions/add-to-project-0.5.0
chore(deps): bump actions/add-to-project from 0.4.1 to 0.5.0
2023-10-05 10:04:45 +02:00
dependabot[bot] fc61a6929f
chore(deps): bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 07:53:08 +00:00
PlantUML a126763265
Merge pull request #1558 from plantuml/dependabot/github_actions/docker/setup-qemu-action-3
chore(deps): bump docker/setup-qemu-action from 2 to 3
2023-10-05 09:52:19 +02:00
PlantUML 76ca2de8e9
Update BUILDING.md 2023-10-05 09:46:08 +02:00
dependabot[bot] 131d3d38d8
chore(deps): bump docker/setup-qemu-action from 2 to 3
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 07:42:28 +00:00
dependabot[bot] fd7cd4a2bf
chore(deps): bump docker/metadata-action from 4 to 5
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4 to 5.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 07:42:12 +00:00
PlantUML 9a05b92b26
Merge pull request #1557 from plantuml/dependabot/github_actions/docker/setup-buildx-action-3
chore(deps): bump docker/setup-buildx-action from 2 to 3
2023-10-05 09:41:33 +02:00
PlantUML 31f6639db0
Update BUILDING.md
Add some note about Java Compatibility
2023-10-05 09:39:44 +02:00
PlantUML 2813d11b4f
Merge pull request #1555 from plantuml/dependabot/npm_and_yarn/dot-github/actions/configure-workflow/tough-cookie-4.1.3
chore(deps-dev): bump tough-cookie from 4.0.0 to 4.1.3 in /.github/actions/configure-workflow
2023-10-05 09:27:06 +02:00
dependabot[bot] 3f04d32add
chore(deps): bump org.apache.xmlgraphics:batik-all from 1.16 to 1.17
Bumps org.apache.xmlgraphics:batik-all from 1.16 to 1.17.

---
updated-dependencies:
- dependency-name: org.apache.xmlgraphics:batik-all
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 01:55:45 +00:00
dependabot[bot] 279d1d2f51
chore(deps): bump org.junit.jupiter:junit-jupiter from 5.9.2 to 5.10.0
Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 01:55:43 +00:00
dependabot[bot] 9ca7125385
chore(deps): bump docker/login-action from 2 to 3
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 01:46:24 +00:00
dependabot[bot] 0507c7b505
chore(deps): bump docker/build-push-action from 4 to 5
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 01:46:21 +00:00
dependabot[bot] 0366571f50
chore(deps): bump actions/add-to-project from 0.4.1 to 0.5.0
Bumps [actions/add-to-project](https://github.com/actions/add-to-project) from 0.4.1 to 0.5.0.
- [Release notes](https://github.com/actions/add-to-project/releases)
- [Commits](https://github.com/actions/add-to-project/compare/v0.4.1...v0.5.0)

---
updated-dependencies:
- dependency-name: actions/add-to-project
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 01:46:12 +00:00
dependabot[bot] 2f2d3a8773
chore(deps): bump docker/setup-buildx-action from 2 to 3
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 01:46:05 +00:00
dependabot[bot] 16c76fdd5d
chore(deps-dev): bump tough-cookie
Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.0.0 to 4.1.3.
- [Release notes](https://github.com/salesforce/tough-cookie/releases)
- [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce/tough-cookie/compare/v4.0.0...v4.1.3)

---
updated-dependencies:
- dependency-name: tough-cookie
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-04 21:48:53 +00:00
Arnaud Roques 136e2198f3 chore: fix missing resources in non-GPL versions
https://github.com/plantuml/plantuml/issues/1554
2023-10-04 23:47:19 +02:00
Arnaud Roques 2daf715f00 chore: restore GPL v2 version 2023-10-04 20:05:20 +02:00
Arnaud Roques 8adfb59f5b chore: restore GPL v2 version 2023-10-04 19:47:57 +02:00
Arnaud Roques 5d38bb6ef4 fix: minor issue on nesting packages
https://github.com/plantuml/plantuml/issues/1550
2023-10-04 19:11:39 +02:00
PlantUML c72487595b
Merge pull request #1549 from The-Lum/ImproveDoc
docs: first commit in order to improve doc (JavaDoc, GH)
2023-10-03 17:16:30 +02:00
The-Lum 649bbb17b2 doc: fix some missing full stop 2023-10-03 14:30:06 +00:00
The-Lum 5fd1fb06de
Merge branch 'plantuml:master' into ImproveDoc 2023-10-03 16:08:09 +02:00
PlantUML 21b9b0bd6e
Merge pull request #1552 from The-Lum/PatchBranch
test: improve [unit] testing, add new test dependencies, add a [possible] logger plugin to gradle, add doc
2023-10-03 14:15:27 +02:00
The-Lum 7cc329bd83 test: add documentation with `TESTING.md` 2023-10-02 19:37:46 +00:00
The-Lum 6d5213d407 test: add a logger plugin to gradle
- allow `radarsh/gradle-test-logger-plugin` (at discretion: by default in comment)
2023-10-02 19:30:50 +00:00
The-Lum a34f13873c test: improve [unit] testing
Update and refresh this old PR:
- plantuml/plantuml#277

Add on test dependencies:
- [x] [`io.github.glytching:junit-extensions`](https://github.com/glytching/junit-extensions)
- [x] [`Mockito`](https://github.com/mockito/mockito)
  - `org.mockito:mockito-core`
  - `org.mockito:mockito-junit-jupiter`

Add a first test on:
- `test/utils/LineLocationImplTest.java`
2023-10-02 19:15:20 +00:00
Arnaud Roques 1deedf8a65 chore: explanation about graphviz.dat 2023-09-28 18:59:34 +02:00
Arnaud Roques 870d09d272 fix: improve minor issues in Gantt 2023-09-28 00:16:33 +02:00
The-Lum 55598085f5
docs: fix relative path on `activitydiagram` readme 2023-09-26 13:17:18 +02:00
The-Lum 18a838fa7d
Rename README.md to readme.md 2023-09-26 12:44:16 +02:00
The-Lum 78ce8b8c37
docs: add `README.md` for `activitydiagram3` 2023-09-26 12:21:57 +02:00
The-Lum a40c98b373
docs: add `README.md` for `activitydiagram` 2023-09-26 12:15:34 +02:00
The-Lum b19770e228
docs: add `package-info.java` for `activitydiagram3` 2023-09-26 10:21:13 +02:00
The-Lum 7387b14081
docs: add `package-info.java` for `activitydiagram` 2023-09-26 10:19:10 +02:00
PlantUML 8bdbbd2635
Update README.md
Restore links from badges
2023-09-25 09:26:56 +02:00
PlantUML 58098ce990
Merge pull request #1544 from The-Lum/PatchBranch
chore: add new labels for `PR` [no CI]
2023-09-24 19:04:00 +02:00
The-Lum c08e495e3b
docs: fix title levels 2023-09-22 16:16:59 +02:00
PlantUML 82e43aaa7e
Update BUILDING.md 2023-09-21 19:15:18 +02:00
PlantUML 27486a4161
Update README.md 2023-09-21 19:02:34 +02:00
PlantUML c23f8d477f
Update BUILDING.md 2023-09-21 18:50:10 +02:00
Arnaud Roques 233565b206 chore: add ANT build script
https://github.com/plantuml/plantuml/issues/1542
2023-09-21 18:39:48 +02:00
The-Lum 0ca72f0288
docs: add explanation for some diagram names (reverted to last version) [no CI]
Add explanation for some diagram names _(reverted to last version)_:
- EBNF 
- Regex
- ...

[no CI]
2023-09-21 11:53:05 +02:00
PlantUML 7fb89f2762
Update README.md 2023-09-19 22:58:38 +02:00
PlantUML 8b6abb2b8a
Update README.md 2023-09-19 22:56:18 +02:00
PlantUML 3dcd95d0b6
Create BUILDING.md 2023-09-19 22:39:30 +02:00
The-Lum 30c95d3e35 chore: add new labels for PR
- `m:test`
- `m:license`
2023-09-18 10:23:08 +00:00
PlantUML b63dd91f00
Merge pull request #1539 from The-Lum/PatchBranch
test: add some unit tests of `tim/stdlib` functions
2023-09-17 23:07:49 +02:00
The-Lum f91e0db9eb test: first commit for some unit tests of `tim/stdlib` functions
- `AlwaysFalse`
  - `AlwaysTrue`
  - `Dec2hex`
  - `Feature`
  - `GetJsonKey`
  - `GetJsonType`
  - `Hex2dec`
  - `Lower`
  - `Size`
  - `Upper`
  - TBC...
2023-09-17 19:18:35 +00:00
The-Lum 957726fda0 test: create `_TemplateStdlibTest` to help test of `tim/stdlib` 2023-09-16 08:26:32 +00:00
The-Lum ec260ff0c9 test: add assert help function to test `tim/stdlib` 2023-09-16 08:18:20 +00:00
The-Lum 3090643256 test: create `JunitUtils` to help test with Junit
- [x]  create `JunitUtils`to help test with Junit
  - create `StringJsonConverter` class to use with `@ConvertWith`
2023-09-15 20:54:33 +00:00
Arnaud Roques 6781e85680 chore: prepare next development cycle 2023-09-13 21:24:43 +02:00
Arnaud Roques 057a076817 chore: prepare release 1.2023.11 2023-09-13 20:35:31 +02:00
Arnaud Roques 41ba2020b6 fix: minor issues
https://github.com/plantuml/plantuml/issues/1531
https://github.com/plantuml/plantuml/issues/1535
2023-09-11 19:39:02 +02:00
Arnaud Roques 04a071c4a4 feat: update c4 stdlib to v2.8.0
8d03254cf6
2023-09-11 19:28:35 +02:00
PlantUML e43c6b9ba5
Merge pull request #1536 from The-Lum/PatchBranch
docs: create CITATION.cff [no CI]
2023-09-08 12:51:11 +02:00
The-Lum ecc0ad9020
Merge branch 'plantuml:master' into PatchBranch 2023-09-08 12:37:48 +02:00
PlantUML b9cb85cf99
Merge pull request #1530 from childenProtos/add-graphviz-to-epl-release
fix: Adds copy task for graphviz.dat to epl build
2023-09-07 07:52:29 +02:00
Christian 8b9f40d63b fix: Adds copy task for graphviz.dat to epl build 2023-09-07 07:46:25 +07:00
The-Lum 2e2453049e
docs: create `CITATION.cff` [no CI]
Here is a proposal to the file:
- [x] `CITATION.cff` 

Fix partially plantuml/plantuml#1524
2023-09-05 13:22:23 +02:00
Arnaud Roques 4b58055b9f mod: Handle @start/@end syntax error better
https://github.com/plantuml/plantuml/pull/1522
2023-08-28 19:14:15 +02:00
PlantUML 9b761b7f92
Merge pull request #1522 from The-Lum/Dev
mod: Handle `@start/@end` syntax error better
2023-08-28 18:01:09 +02:00
The-Lum 5149c49858 fix: change `No @startuml/@enduml found` message to `No valid @start/@end found, please check the version` for more readability
- [x] Rename `noStartumlFound` function to `noValidStartFound`
- [x] Rename `No @startuml/@enduml found` message to `No valid @start/@end found, please check the version`

Notes:
- Impact also the PicoWebserver;
- _For future enhancement perhaps use `resource` or list of message instead of repeating a message in many different places..._
2023-08-28 15:30:27 +00:00
The-Lum 90198c40d8 refactor: change formatting of `should_readFirstDiagram_decode_correctly_different_line_endings` for more readability 2023-08-28 15:01:45 +00:00
The-Lum 0c7f026f6c test: add new tests on `@start/@end` with a failing test to fix
- Add passing tests
- Add fail test _(to uncomment)_
2023-08-28 14:52:45 +00:00
Arnaud Roques 39fd1138cb chore: use annotation for dead code
https://github.com/plantuml/plantuml/issues/1521#issuecomment-1694600302
2023-08-27 11:07:44 +02:00
Benjamin Davies c91b5e2015
Fix diagram layout not working 2023-08-27 12:28:32 +12:00
Benjamin Davies d4110d5ceb
Add associations between entities 2023-08-27 00:03:40 +12:00
Benjamin Davies 07b25de38a
Add entities, attributes and relations to graph 2023-08-26 23:02:11 +12:00
Arnaud Roques 8172f9492a feat: add embedded GraphViz for EPL version
https://github.com/plantuml/plantuml/issues/1517
2023-08-26 12:20:59 +02:00
Arnaud Roques ee3eef8652 feat: enable DITAA in LGPL version
https://github.com/plantuml/plantuml/issues/1514
2023-08-26 12:03:19 +02:00
PlantUML 33f0d5b204
Merge pull request #1520 from Benjamin-Davies/docs
Add some documentation
2023-08-26 11:19:39 +02:00
Arnaud Roques ecb22dfd46 fix: amend test 2023-08-26 11:18:40 +02:00
Arnaud Roques 86513bfbc8 wip: fix minor issues
https://forum.plantuml.net/17187/verticals-separators-gantt-chart-appear-certain-conditions?show=18171#c18171
https://forum.plantuml.net/18163/no-colored-border-on-state-start-end
2023-08-26 10:59:08 +02:00
Benjamin Davies 4e3d8c94f6
Parse Chen EER diagrams 2023-08-26 18:54:16 +12:00
Benjamin Davies cf0e1c7ddc
Fix typo 2023-08-26 16:37:02 +12:00
Benjamin Davies a879026e8c
Fix grammatical mistake 2023-08-26 16:24:10 +12:00
Benjamin Davies fb1ac6d1d2
Clean up license attributions 2023-08-26 16:22:30 +12:00
Benjamin Davies 1a3f5dfd60
Document "PSystem" implied original meaning 2023-08-26 16:15:13 +12:00
Benjamin Davies 5386b9e7e2
Document plasma package 2023-08-26 15:48:49 +12:00
Benjamin Davies ef8879f3b3
Document PSystemBuilder 2023-08-26 15:24:25 +12:00
Benjamin Davies cbab1c333f
Document base package 2023-08-26 14:50:34 +12:00
Benjamin Davies 1d1daf492b
Modify wording to match variable names 2023-08-26 12:31:47 +12:00
Benjamin Davies 8f295eb313
Document regex package 2023-08-26 12:26:23 +12:00
PlantUML 51e8676c17
Merge pull request #1518 from The-Lum/Dev
mod: Language Descriptor Improvement (adding some words), fix: Cypher warning
2023-08-25 17:04:39 +02:00
The-Lum adf71509c7 fix: Suppress of the `together` word to avoid warning of Cypher 2023-08-25 13:34:33 +00:00
The-Lum f3ebbb69fd Merge branch 'Dev' of https://github.com/The-Lum/plantuml into Dev 2023-08-25 13:06:46 +00:00
The-Lum 6de021381f mod: Language Descriptor Improvement (adding some words)
- [x] Add end form for: caption, title, footer, header
- [x] Add stereotypes, circles, circled, member, attribute, field, method, public, private, protected
to be conform with:
  - a27ff9b7f2/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java (L77)
  - a27ff9b7f2/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByVisibility.java (L68)
- [x] Change `map` from keyword to type
- [x] Add new type: protocol, struct, exception, metaclass, json
- [x] Add new diagram: hcl, ebnf, regex, files

Related issue:
- https://forum.plantuml.net/18151/using-cypher-does-not-always-recognize-restricted-words

Following this PR, on the same topic:
- https://github.com/plantuml/plantuml/pull/586
2023-08-25 12:54:51 +00:00
Arnaud Roques 38c5765a99 fix: minor issues
https://github.com/plantuml/plantuml/issues/1515
https://forum.plantuml.net/18157/last-label-on-last-elseif-branch-does-not-get-rendered
2023-08-24 19:01:41 +02:00
PlantUML a27ff9b7f2
Merge pull request #1509 from DRKV333/master
Fixed nested togethers not working
2023-08-04 09:18:41 +02:00
Kálmán Vince 5096c1b9a4 Fixed printing togethers in nested groups 2023-08-04 00:34:25 +02:00
Kálmán Vince 719927895b Fixed nested togethers not working 2023-08-02 19:43:17 +02:00
PlantUML a9f4ea985d
Merge pull request #1507 from alfonsodelavega/add_license_headers
Add license headers to generated codebases
2023-08-02 15:07:14 +02:00
alfonsodelavega 20b62c6491 Add license headers to generated codebases 2023-08-01 13:26:08 +02:00
PlantUML e04d49a6c0
Merge pull request #1506 from HeinrichAD/enhancement/seq-response-message-below-arrow
Let the user define if a message is a request or response
2023-08-01 10:28:25 +02:00
HeinrichAD 9fe1686e40 define -> arrows as request and <- as response
Instead of defining that every message from the left to the right side is always a request and every message from the right to the left side is always a response, I propose to used the arrow direction from the PlantUML diagram code.

Each arrow with the arrow direction on the right (`->`) is a request and each arrow with the arrow direction on the left (`<-`) is a response.

This way the users can define themselves what is a request and what is a response.
2023-07-31 22:09:30 +02:00
PlantUML 49115dfc7d
Merge pull request #1502 from The-Lum/Dev
refactor: use `CSV Source` for Math and UrlBuilder tests, test: add tests for the builtin function `%chr`
2023-07-27 17:58:58 +02:00
The-Lum 63da3270a6 test: add tests for the builtin function `%chr`
_[TODO: fix `%chr` to allow Unicode chars, the corresponding tests are here.]_
2023-07-27 15:41:03 +00:00
The-Lum c6cfd3cec6 refactor: use CSV Source for Math and UrlBuilder tests
For better readability and maintainability, use `@CsvSource` for:
- Math tests
- UrlBuilder tests

_[FYI: `testGetUrl42` and `testGetUrl50` seems to be identical!, I suppress one]_
2023-07-27 15:25:42 +00:00
Arnaud Roques 74bcd0f668 fix: change GraphViz strategy
https://github.com/plantuml/plantuml/issues/1491
2023-07-26 19:12:10 +02:00
PlantUML 44ba32d053
Merge pull request #1497 from The-Lum/BuiltinOrd
fix: `ord` builtin function: allow Unicode values, add test
2023-07-26 14:11:07 +02:00
The-Lum 8742e77f3c fix: `ord` builtin function: allow Unicode values, add test
By this indication:
- https://github.com/plantuml/plantuml/pull/1487#issuecomment-1648082049

Fix `ord` builtin function:
- allow Unicode values
- add tests
2023-07-26 11:27:56 +00:00
Arnaud Roques a327d636a7 fix: wip on https://github.com/plantuml/plantuml/issues/1491 2023-07-25 18:52:47 +02:00
Arnaud Roques 1b58f96369 fix: small regression on https://github.com/plantuml/plantuml/issues/1467 2023-07-24 18:54:24 +02:00
PlantUML f28738eb9b
Merge pull request #1490 from travkin79/patch/1467
Patch #1467
2023-07-24 17:16:53 +02:00
Dietrich Travkin 4765c77d92 Simplify code a little 2023-07-24 17:03:58 +02:00
Dietrich Travkin 659b723dd3 Avoid too early shield size calculation in some additional cases (#1467) 2023-07-24 17:03:58 +02:00
Dietrich Travkin 151fa30a5d Make source code Java-7-compatible 2023-07-24 17:03:58 +02:00
PlantUML 49ab6c9c6e
Merge pull request #1487 from The-Lum/BuiltinOrd
feat: add `ord` builtin function
2023-07-24 16:45:24 +02:00
The-Lum 823d27afa9 fix: `ord` builtin function: retrieve then cast of the value
By this indication:
- https://github.com/plantuml/plantuml/pull/1487#issuecomment-1646545778

Fix `ord` builtin function:
- retrieve then cast of the value
2023-07-24 14:24:35 +00:00
PlantUML afada208c3
Merge pull request #1489 from travkin79/patch/1467
Patch for #1467
2023-07-24 16:16:24 +02:00
Dietrich Travkin 38cb4811f7 Fix calculating shield (margin) size for nodes that are targets of qualified associations (#1467) 2023-07-24 15:05:33 +02:00
Dietrich Travkin d7efa7e9a2 Fix qualifier labels' margin calculation (#1467) 2023-07-24 14:56:06 +02:00
Dietrich Travkin bac7a4d751 Fix qualifier label's association ends (#1467)
Otherwise, qualifier labels of qualified associations pointing left or up are drawn on the wrong end of the association.
2023-07-24 14:55:20 +02:00
Arnaud Roques 85a6b1dada fix: improve notes on conditional
https://forum.plantuml.net/4696/notes-on-conditionnal-elements?show=18077#c18077
2023-07-22 11:42:32 +02:00
The-Lum 6e7254377c feat: add `ord` builtin function
Attempt to add `ord` builtin function.
2023-07-21 21:17:40 +00:00
Arnaud Roques ef07e2cd1b feat: update stdlib (C4 and logos) 2023-07-19 23:07:32 +02:00
Arnaud Roques 29bcbfee89 chore: prepare version 1.2023.10 2023-07-12 17:58:33 +02:00
Arnaud Roques 835f82a8d6 fix: add together in LanguageDescriptor and improve CommandStyleImport 2023-07-12 17:46:57 +02:00
PlantUML 11b70de43f
Merge pull request #1456 from soloturn/java20
Java20
2023-07-09 11:03:52 +02:00
soloturn 75443a5d28 java-20 deprecates new URL(), use new URI()
cite from the ticket towards openjdk:
The URL class does not itself encode or decode any URL components
according to the escaping mechanism defined in RFC2396. It is the
responsibility of the caller to encode any fields, ...

In Java SE 1.4 a new class, java.net.URI, has been added to mitigate
some of the shortcoming of java.net.URL. Conversion methods to create
an URL from an URI were also added.

references:
* https://inside.java/2023/02/15/quality-heads-up/
* https://bugs.openjdk.org/browse/JDK-8294241
2023-07-08 22:58:42 +02:00
soloturn 32c856503f ignore vscode files 2023-07-08 22:58:42 +02:00
soloturn 5d445ae801 java-20, create uri directly, not via url. 2023-07-08 22:58:42 +02:00
soloturn f530bf4d30 java-20, update to gradle-8.2. 2023-07-08 22:58:42 +02:00
PlantUML ebeea26ecb
Merge pull request #1472 from travkin79/patch/1470
Add reading remote style files from URLs (Fix #1470)
2023-07-04 11:43:43 +02:00
Dietrich Travkin 0972786515 Replace URL with SURL to securely access URLs 2023-07-04 10:42:38 +02:00
PlantUML b45451312a
Merge pull request #1473 from travkin79/patch/1336
Adapt workflows to release the differently licensed plantuml versions
2023-07-04 10:26:46 +02:00
Dietrich Travkin a217809de6 Adapt workflows to release the differently licensed plantuml lib versions 2023-07-04 10:15:07 +02:00
Dietrich Travkin d92242ec35 Add reading remote style files from URLs (Fix #1470) 2023-07-04 00:38:23 +02:00
PlantUML 85671b866c
Merge pull request #1471 from travkin79/patch/1336
Add building differently licensed plantuml versions (#1336)
2023-07-03 22:29:46 +02:00
Dietrich Travkin d662206000 Add building differently licensed plantuml versions 2023-07-03 11:23:07 +02:00
Arnaud Roques 1ef8dd39f9 fix: wip
https://github.com/plantuml/plantuml/issues/1448
https://github.com/plantuml/plantuml/issues/1436
2023-06-27 22:04:12 +02:00
Arnaud Roques 968a958b9d fix: wip
https://github.com/plantuml/plantuml/issues/1465
https://github.com/plantuml/plantuml/issues/1464
https://github.com/plantuml/plantuml/issues/1459
https://github.com/plantuml/plantuml/issues/1460
2023-06-21 20:50:30 +02:00
PlantUML 21461b83fc
Merge pull request #1457 from The-Lum/FilesTree
upd: add `regex`, `files` on Embedded Diagram; Add `regex` diagram link on Readme
2023-06-14 16:05:12 +02:00
The-Lum c006e3dfad
upd: Add `regex` diagram link
upd: Add `regex` diagram link
2023-06-14 15:09:00 +02:00
The-Lum 3574987267
upd: Add `regex`, `files` on Embedded Diagram
upd: for Embedded Diagram, add:
-  `regex`
-  `files`
2023-06-14 15:03:59 +02:00
Arnaud Roques 74574c4f57 chore: Version 1.2023.9 2023-06-13 20:31:05 +02:00
Arnaud Roques 6475c392fc chore: add tests for testCanWeReadThisEnvironmentVariable 2023-06-13 20:20:32 +02:00
Arnaud Roques ff6e71e626 fix: only allow to read some environment variables 2023-06-13 12:55:32 +02:00
Arnaud Roques fbe7fa3b25 feat: remove legacy ALLOW_INCLUDE use PLANTUML_SECURITY_PROFILE instead
https://github.com/plantuml/plantuml-server/issues/232
2023-06-13 12:41:34 +02:00
Arnaud Roques b32500bb61 fix: improve filelist support and nwdiag 2023-06-12 22:49:47 +02:00
Arnaud Roques 793b78abc5 feat: work not yet complete
https://forum.plantuml.net/10049/2019-pipemap-diagrams-containing-links-give-zero-exit-code
2023-06-11 20:51:41 +02:00
Arnaud Roques 4a246c7cb9 fix: wip
https://forum.plantuml.net/17926/sprite-transparent-only-jar-defined-sprites-are-working
https://github.com/plantuml/plantuml/issues/1448
https://forum.plantuml.net/17932/nwdiag-possible-misbehavior
2023-06-11 20:44:08 +02:00
Arnaud Roques c95bbfe585 fix: minor issues
https://github.com/plantuml/plantuml/issues/1442
https://github.com/plantuml/plantuml/issues/1436
2023-05-31 20:51:54 +02:00
Arnaud Roques aedaeec598 chore: update test for pipemap 2023-05-22 19:09:32 +02:00
Arnaud Roques 892dd6c8e9 fix: improve pipemap option
https://github.com/plantuml/plantuml/issues/1429
2023-05-22 18:48:42 +02:00
Arnaud Roques 92c5183386 chore: suppress some versions 2023-05-21 22:48:14 +02:00
Arnaud Roques 63a09e24c5 chore: Version 1.2023.8 2023-05-21 10:54:21 +02:00
Arnaud Roques 18a7f99b55 fix: improve theme support 2023-05-18 13:32:30 +02:00
Arnaud Roques 95026709a6 chore: question about improving Version.java and gradle.properties 2023-05-17 22:17:15 +02:00
Arnaud Roques f72fec23c3 fix: improve theme support
https://forum.plantuml.net/17811/theme-supports-no-calculated-from-path-and-stdlib-from-path
2023-05-17 22:11:36 +02:00
Arnaud Roques 35ec8a700c chore: simply Version.java implementation 2023-05-17 21:34:24 +02:00
Arnaud Roques eb85d9c9c5 chore: build only GPL and MIT version for beta 2023-05-17 21:19:43 +02:00
Arnaud Roques 2a358adf3c chore: restore tests under linux 2023-05-15 18:49:53 +02:00
Arnaud Roques 2adee2f574 chore: improve multilicence and add improve theme support
https://forum.plantuml.net/17811/theme-supports-no-calculated-from-path-and-stdlib-from-path
2023-05-15 18:37:07 +02:00
Arnaud Roques 2803fa7e7b chore: add javadoc for MIT because of OSSRH 2023-05-12 21:46:37 +02:00
Arnaud Roques 5ec920045b chore: only publish to OSSRH when release 2023-05-12 21:27:18 +02:00
Arnaud Roques 782087680d chore: manual set of gradle.properties 2023-05-12 21:16:44 +02:00
Arnaud Roques 9c52adf7ec chore: restore version which is still not working 2023-05-12 20:44:57 +02:00
Arnaud Roques e313ffc635 chore: fix syntax 2023-05-12 20:32:38 +02:00
Arnaud Roques 37f8e4fd2e chore: try to make OSSRH working 2023-05-12 20:29:40 +02:00
Arnaud Roques 11b9baa3ff chore: print pom_version 2023-05-12 20:19:00 +02:00
Arnaud Roques 871c298203 chore: add trace to publish 2023-05-12 19:53:58 +02:00
Arnaud Roques b4bdcb3428 chore: disable windows tests 2023-05-12 19:31:06 +02:00
Arnaud Roques c60d959c95 chore: version 1.2023.7 2023-05-12 19:28:51 +02:00
Arnaud Roques a66215a373 feat: update C4 stdlib 2023-05-12 19:21:29 +02:00
Arnaud Roques 962f6df46b chore: only test Java 8 on Windows 2023-05-12 17:09:21 +02:00
Arnaud Roques d9eecbdeeb chore: restore tests and update release.sh 2023-05-12 16:50:31 +02:00
Arnaud Roques 66f426fe6d chore: build MIT signature 2023-05-12 16:32:51 +02:00
Arnaud Roques 60aa5edca0 chore: add MIT signatures 2023-05-12 16:21:45 +02:00
Arnaud Roques 2fa62e9173 chore: add MIT in cache 2023-05-12 16:12:11 +02:00
Arnaud Roques 72f2d856f3 chore: generate MIT version 2023-05-12 16:03:57 +02:00
Arnaud Roques b3a0c52d40 chore: run tests and build artifact in parallel 2023-05-12 14:06:41 +02:00
Arnaud Roques c57f5b4691 chore: remove tests 2023-05-12 13:59:52 +02:00
Arnaud Roques f43aa3b928 chore: temporary remove tests, remove gradle publish for snapshot 2023-05-12 13:58:24 +02:00
Arnaud Roques bb33824e87 chore: slightly simplify release-snapshot.sh 2023-05-12 13:42:34 +02:00
Arnaud Roques 488029b9b0 fix: work in progress
https://github.com/plantuml/plantuml/issues/1405
https://github.com/plantuml/plantuml/issues/1423
2023-05-11 21:06:04 +02:00
PlantUML 3b3ab396b9
Merge pull request #1424 from bondden/theme-mono
Added monochrome monospaced theme for better shapes control
2023-05-11 14:11:27 +02:00
bondden 0c873713e0 Added monochrome monospaced theme for better shapes control 2023-05-11 18:40:18 +07:00
Arnaud Roques 475f814b65 fix: minor bug fix
https://github.com/plantuml/plantuml/issues/1422
2023-05-10 20:43:48 +02:00
Arnaud Roques 26874fe610 fix: minor issues
https://github.com/plantuml/plantuml/issues/1401#issuecomment-1523451970
https://github.com/plantuml/plantuml/issues/1399
2023-05-07 23:30:37 +02:00
Arnaud Roques c158ce4383 chore: init snapshot 2023-04-18 23:04:32 +02:00
Arnaud Roques 82d660de00 chore: temporary suppress native images 2023-04-18 22:05:28 +02:00
Arnaud Roques d2a5e0cd2e chore: suppress MIT 2023-04-18 21:43:40 +02:00
Arnaud Roques b7da8b6898 chore: suppress MIT 2023-04-18 21:40:11 +02:00
Arnaud Roques 2751c47ebc chore: hard code version 2023-04-18 21:01:39 +02:00
Arnaud Roques e1d1d5aa93 chore: temporary remove mit version 2023-04-18 19:13:44 +02:00
Arnaud Roques beb3cb25e2 feat: version 1.2023.6 2023-04-18 18:14:10 +02:00
Arnaud Roques e23d7e56fc fix: minor issues
https://github.com/plantuml/plantuml/issues/1367
https://github.com/plantuml/plantuml/issues/1389
2023-04-11 19:57:58 +02:00
PlantUML 6a2ef30d73
chore: no native or MIT version when snapshot 2023-04-11 15:49:32 +02:00
PlantUML 44f6e295d2
chore: test CI 2023-04-11 15:18:14 +02:00
Eric Vantillard 7631517673 chore: build native images on release and snapshot 2023-04-11 15:16:33 +02:00
Eric Vantillard 8f4ef6f8f3 chore: ci workflow will publish on release and snapshot 2023-04-11 14:52:23 +02:00
Arnaud Roques 87caaebdb9 fix: change month display
https://github.com/plantuml/plantuml/issues/1380
2023-04-10 19:51:43 +02:00
The-Lum 19d7fba544
chore: Add MIT License (`jar`, `source`) version on CI [skip actions] (#1375)
* Add MIT version on CI

* chore: add gradle project for plantuml-mit

* chore: add publish to gradle project plantuml-mit

* chore: suppress test on u20 win19, add MIT on release script

Suppress ubuntu20 and win2019 test
Test of symbolic link on release script for MIT license
Delete now not used files:
- ci-mit.yml
- license-mit.yml
- build-mit.gradle.kts

* fix: side effect of MIT on Native CI

* fix(build): update paths to mit jars

---------

Co-authored-by: Eric Vantillard <eric.vantillard@evaxion.fr>
2023-04-05 12:13:14 +02:00
Eric Vantillard b308944fd0 chore: add labeler workflow 2023-04-05 10:23:20 +02:00
Eric Vantillard ac83a5d64e fix: revert Version.java change
Postpone this modification until `ci.yml`will be ready.
2023-04-05 09:21:53 +02:00
Arnaud Roques 905510cd8b feat: extract version and compile time to a resource file 2023-04-04 23:13:35 +02:00
Eric Vantillard b9a27f0440 chore: only build native and publish artefacts on release
[skip ci]
2023-04-04 15:23:09 +02:00
Eric Vantillard f3a27b00ab
chore: add github discussion link
Add a link to github discussions into the issue templates configuration.
2023-04-04 00:01:42 +02:00
Arnaud Roques 5600f0999e fix: multiple breaks in repeat
https://github.com/plantuml/plantuml/issues/1369
2023-04-03 23:29:34 +02:00
Arnaud Roques 7062ec070b chore: sjpp compiled to Java 8 2023-04-03 23:10:58 +02:00
PlantUML b16150e9cf
Merge pull request #1381 from evantill/feature/workflows
chore: add `workflow configuration` test code
2023-04-03 19:45:27 +02:00
Eric Vantillard f312b3fbb6 chore(configure-workflow): prepare first version for testing in prod
Add more triggers to the test workflow
2023-04-03 19:25:36 +02:00
Eric Vantillard 6837e3de05 chore(configure-workflow): prepare first version for testing in prod 2023-04-03 19:25:36 +02:00
Eric Vantillard b2d90ef23a chore(configure-workflow): add logs for testing events handling 2023-04-03 19:25:36 +02:00
Eric Vantillard 51e80997ef chore(configure-workflow): remove unused files from action template 2023-04-03 19:25:36 +02:00
Eric Vantillard a66258f1de chore(configure-workflow): add workflow to test configure-workflow action 2023-04-03 19:25:36 +02:00
Eric Vantillard cd8b1a2012 chore(configure-workflow): scaffold configure-workflow github action 2023-04-03 19:25:36 +02:00
PlantUML aad2a9e19f
Merge pull request #1379 from evantill/feature/workflows
chore: fix details in github workflows
2023-04-03 16:08:36 +02:00
Eric Vantillard a299d6b4c5 chore: use unique jobs id
Github workflow jobs should be unique across all jobs. HAs a default naming convention, use the workflow file basename.
2023-04-03 13:04:42 +02:00
Eric Vantillard 6fec6ea27e chore: only use major version in github action references 2023-04-03 12:38:51 +02:00
Arnaud Roques 06978b87d0 chore: fix add-to-project version 2023-03-31 18:25:59 +02:00
Arnaud Roques 949df26035 chore: add issues to project Backlog when adding p:backlog label 2023-03-31 18:10:16 +02:00
Arnaud Roques 72599ce706 chore: label "p:backlog" on issue automatically close issue with comment 2023-03-31 17:55:18 +02:00
Arnaud Roques 81bd00e252 fix: restore correct cache behavior
https://github.com/plantuml/plantuml/issues/1368
2023-03-29 20:19:05 +02:00
PlantUML 32429afbb0
Merge pull request #1365 from fgreinacher/fix/properties-env
feat: support alternate environment variable names
2023-03-27 17:05:07 +02:00
Florian Greinacher 4e879c3cfd feat: support alternate environment variable names
The current variable names with dots can not be used in some shells.
2023-03-27 12:09:05 +02:00
PlantUML 524fff45b8
Merge pull request #1363 from ggrossetie/patch-1
Replace POM_VERSION by RELEASE_VERSION
2023-03-26 19:28:02 +02:00
Guillaume Grossetie 8400e40bf9
Replace POM_VERSION by RELEASE_VERSION 2023-03-26 19:11:14 +02:00
PlantUML fd587ce66f
Merge pull request #1362 from ggrossetie/native-images-macos-win
Build macOS and Windows native images
2023-03-26 18:18:29 +02:00
Guillaume Grossetie 124945d408 Build macOS and Windows native images 2023-03-26 17:50:30 +02:00
PlantUML 108d07971c
Merge pull request #1360 from ggrossetie/publish-native-image-release
Build the native image as part of the release process
2023-03-25 22:13:40 +01:00
Guillaume Grossetie d0d555c439
Fix version 3.5.10 -> 3.10.0 2023-03-25 21:06:29 +01:00
Guillaume Grossetie 79f773c033 Build the native image as part of the release process 2023-03-25 18:55:28 +01:00
Arnaud Roques 47f2995aa3 fix: fix several issues
https://github.com/plantuml/plantuml/issues/1357
https://github.com/plantuml/plantuml/issues/1353
https://github.com/plantuml/plantuml/issues/1352
https://forum.plantuml.net/17654/malformed-layout-and-missing-arrows-on-large-amount-of-edges
https://github.com/plantuml/plantuml/issues/1349
https://github.com/plantuml/plantuml/issues/1348
https://github.com/plantuml/plantuml/issues/1355
https://github.com/plantuml/plantuml/issues/166
2023-03-24 19:07:32 +01:00
Arnaud Roques 003222a00f fix: wip on various issues
https://github.com/plantuml/plantuml/issues/1352
https://github.com/plantuml/plantuml/issues/1348
2023-03-22 19:25:52 +01:00
Arnaud Roques cdec3380ec fix: improve smetana support
https://github.com/plantuml/plantuml/issues/1348
2023-03-21 23:47:11 +01:00
Arnaud Roques 897a4736bc fix: patch several issues
https://github.com/plantuml/plantuml/issues/1286
https://github.com/plantuml/plantuml/issues/166
https://github.com/plantuml/plantuml/issues/171
2023-03-20 23:19:33 +01:00
PlantUML 05fbba535e
Discord button at Markdown format 2023-03-20 18:20:41 +01:00
PlantUML 27b82b76d9
Add discord button 2023-03-20 18:07:38 +01:00
PlantUML 97f3172020
Merge pull request #1345 from ggrossetie/native-image
Build a native image (Linux)
2023-03-20 10:34:18 +01:00
Guillaume Grossetie a889148768 Build a native image (Linux) 2023-03-19 14:52:51 +01:00
Arnaud Roques e739cd8f5d fix: restore some help commands
https://github.com/plantuml/plantuml/issues/1331
https://github.com/plantuml/plantuml/issues/1232
2023-03-19 13:13:13 +01:00
Arnaud Roques e16b1d0b75 fix: remove buggy margin
https://github.com/plantuml/plantuml/issues/1334
2023-03-18 19:46:30 +01:00
Arnaud Roques e53a679331 refactor: improve smetana support for JSON 2023-03-18 11:25:17 +01:00
Arnaud Roques 7447766553 fix: allow notes with ELK
https://github.com/plantuml/plantuml/issues/1331
2023-03-17 22:53:25 +01:00
Arnaud Roques 89ff4699a0 fix: allow notes with smetana
https://github.com/plantuml/plantuml/issues/1332
2023-03-17 22:48:24 +01:00
Arnaud Roques 68c35a5ac3 fix: partial correction
https://github.com/plantuml/plantuml/issues/1335
2023-03-17 22:42:27 +01:00
Arnaud Roques 707d612229 fix: improve ditaa management
https://github.com/plantuml/plantuml/issues/1331
2023-03-17 18:14:13 +01:00
Arnaud Roques a202116a0c fix: improve dot message status 2023-03-16 21:33:59 +01:00
Arnaud Roques 0f9f96dade fix: improve return code management 2023-03-16 21:25:46 +01:00
Arnaud Roques 9a3c27eebf chore: compile MIT version 2023-03-16 21:11:33 +01:00
Arnaud Roques d98c743b9f chore: compile MIT version 2023-03-16 21:08:35 +01:00
Arnaud Roques ac851b0e44 chore: compile MIT version 2023-03-16 21:02:10 +01:00
Arnaud Roques dc0a105ced Merge branch 'master' of https://github.com/plantuml/plantuml 2023-03-16 20:56:21 +01:00
Arnaud Roques 62d43e22a8 chore: Build MIT version 2023-03-16 20:55:14 +01:00
Eric Vantillard 606c7d7af1 chore: add issue templates 2023-03-16 03:04:56 +01:00
Arnaud Roques ba0fd1efb4 fix: partially improve smetana code
https://forum.plantuml.net/17600/note-and-position-not-rendering-correctly-on-cheerpj
2023-03-15 19:03:47 +01:00
Arnaud Roques 9adc8dd067 refactor: prepare haxe version 2023-03-14 18:52:44 +01:00
Arnaud Roques 8f074cfbdf fix: improve note syntax in sequence diagrams
https://forum.plantuml.net/17587/notes-linked-to-messages-in-sequence-diagrams
2023-03-14 18:50:51 +01:00
Arnaud Roques 4e0af3328c fix: improve port management
https://github.com/plantuml/plantuml/discussions/1325
2023-03-14 18:48:52 +01:00
Arnaud Roques 534fc27942 fix: Improve line endings in the output files
https://github.com/plantuml/plantuml/pull/1183
2023-03-14 18:46:55 +01:00
PlantUML 44b4051016
Merge pull request #1324 from evantill/master
build: update issue triage workflow
2023-03-14 08:14:31 +01:00
Eric Vantillard f69b4f207e build: update issue triage workflow
The previous version use a deprecated action.
Now we use the github script action (provided by github).
2023-03-14 00:43:05 +01:00
Arnaud Roques da21293630 fix: still in progress
https://forum.plantuml.net/17566/global-%24variable-default-variable-produces-error-a001
https://github.com/plantuml/plantuml/issues/1320
2023-03-13 21:46:30 +01:00
Arnaud Roques 66918ad185 docs: explain how to contribute
https://github.com/plantuml/plantuml/discussions/1321
2023-03-13 19:25:54 +01:00
PlantUML ba6dd38c17
Merge pull request #1323 from evantill/master
build: add issue triage workflow
2023-03-13 19:16:02 +01:00
Eric Vantillard 0ac3e13bf6 build: add issue triage workflow 2023-03-13 18:00:31 +01:00
Arnaud Roques 9c62daa35d Fix UGraphic hierarchy 2023-03-12 12:41:34 +01:00
Arnaud Roques 5febaa9aeb Preprocessing with __MIT__ is now working 2023-03-12 12:15:51 +01:00
Arnaud Roques 957dfea0b5 Add project name and description 2023-03-09 19:44:20 +01:00
Arnaud Roques be8454cb59 update to 1.2023.3 2023-03-09 19:04:46 +01:00
PlantUML c50b364a56
Merge pull request #1314 from evantill/master
fix: missing signature in OSSRH publication (#1313)
2023-03-08 23:05:25 +01:00
Eric Vantillard 3c53361064 fix: missing signature in OSSRH publication (#1313)
Adding `signingKey` and `signingPassword`properties when calling gradle publication tasks from the CI workflow fix the bug.

Fixes: #1313
2023-03-08 22:40:21 +01:00
Arnaud Roques aa033bc2c1 wip 2023-03-08 21:49:44 +01:00
PlantUML a171a90403
Merge pull request #1307 from rohitsud/patch-1
Allow only one underscore when escaping -->
2023-03-05 21:39:57 +01:00
rohitsud 02ce388a5a
Allow only one underscore when escaping -->
This improves https://github.com/plantuml/plantuml/pull/1303 by preventing expressions like `*--____>` from being allowed. Now only expressions like `*--_>` and `*-->` will be allowed in maps,
2023-03-05 11:43:49 -08:00
Arnaud Roques 5cdd5c76e5 wip 2023-03-04 10:34:43 +01:00
Arnaud Roques 690fa349ba wip 2023-03-01 18:05:03 +01:00
Arnaud Roques f4221e340a wip 2023-02-28 22:22:51 +01:00
PlantUML eddf1c5470
Merge pull request #1303 from rohitsud/patch-1
Allow underscore to be used as an escape character for pattern -->
2023-02-28 22:10:30 +01:00
rohitsud ece128c3f1
Allow underscore to be used as an escape character for pattern -->
The issue is described in more detail at https://forum.plantuml.net/17507/dotted-arrow-also-the-close-comment-blocks-html-xml-markdown --
Similar to the issue in https://forum.plantuml.net/11806/dotted-arrow-also-the-close-comment-blocks-html-xml-markdown map uses the syntax with --> for longer arrows but they pose a problem when embedding in HTML.

For example, the following cannot be embedded in HTML.

map example {

    A*--> B

}

The linked thread above suggests the use of _ before the > but that doesn't work for maps.
2023-02-28 11:38:27 -08:00
Arnaud Roques 52664342f6 Version 1.2023.2 2023-02-26 19:51:17 +01:00
Arnaud Roques d55ae31b68 Update stdlib 2023-02-24 09:14:00 +01:00
Arnaud Roques 07f828770f Restore test and ignore XMI.exporterVersion 2023-02-22 21:08:32 +01:00
Arnaud Roques c54983bb5e Make AgoUML work 2023-02-22 20:55:55 +01:00
Arnaud Roques 9660d3ced9 Remove tests until XMI is ready 2023-02-22 20:44:05 +01:00
Arnaud Roques 934a1c357b Fix package and (temporary) remove generalization 2023-02-22 20:21:30 +01:00
Arnaud Roques d551aa488a Update XMI result 2023-02-22 19:51:43 +01:00
Arnaud Roques 75835ce2a0 Packages move and bugfix 2023-02-22 19:43:48 +01:00
PlantUML 9beb3a1ccc
Merge pull request #1292 from soloturn/gradle
update versions
2023-02-18 18:56:55 +01:00
soloturn 4b5d5d703b update versions 2023-02-18 08:27:59 +01:00
soloturn 9ec15a7a2e use gradle 8.0.1 2023-02-18 08:23:28 +01:00
Arnaud Roques 58cc4e096b wip 2023-02-08 19:38:46 +01:00
Arnaud Roques 62d819dae4 wip 2023-02-06 22:11:35 +01:00
Arnaud Roques 678949b44c Wip 2023-02-06 22:04:53 +01:00
Arnaud Roques 1c650bb2f9 Fix https://github.com/plantuml/plantuml/issues/1284 2023-02-04 13:50:16 +01:00
Arnaud Roques 4888ac976d Start major packages refactoring 2023-02-02 18:59:43 +01:00
Arnaud Roques aa53729752 Fix state id in Scxml export 2023-01-31 20:45:20 +01:00
Arnaud Roques 6979fb6d55 Major change on internal identifier management 2023-01-31 20:27:04 +01:00
Arnaud Roques e1b9c0a0f0 version 1.2023.1 2023-01-29 15:24:49 +01:00
PlantUML 4038b9db37
Merge pull request #1275 from The-Lum/UpdDoc
Upd: Add some documentation
2023-01-25 20:53:10 +01:00
The-Lum 1c6cd1cf7f Upd: Add some documentation
- [x] Add EBNF on README
- [x] Attemps to add some `README.md` on the src
2023-01-25 19:42:56 +00:00
Arnaud Roques 74bcf039a2 Fix https://github.com/plantuml/plantuml/issues/1265 2023-01-17 19:23:30 +01:00
Arnaud Roques c1bbdd6ade Partially fix https://github.com/plantuml/plantuml/issues/1266 2023-01-17 19:19:39 +01:00
Arnaud Roques c2bb4f8a37 Try to fix https://github.com/plantuml/plantuml/issues/1261 2023-01-17 19:00:39 +01:00
Arnaud Roques db9080e28f wip 2023-01-16 20:06:31 +01:00
PlantUML 1fe09aea4f
Merge pull request #1262 from denisa/master
1252:  Use eclipse-temurin:17-jre-jammy and generate both amd64 and arm64 images
2023-01-14 12:03:45 +01:00
Arnaud Roques 54afac2f27 Fix https://github.com/plantuml/plantuml/discussions/1264 2023-01-14 11:49:57 +01:00
Arnaud Roques eac7a29c67 wip 2023-01-13 18:36:46 +01:00
Denis N. Antonioli f067d71b28 spaces 2023-01-12 21:22:15 -08:00
Denis N. Antonioli 5624575b08 1252: Use eclipse-temurin:17-jre-jammy and generate both amd64 and
arm64 images
2023-01-12 21:09:13 -08:00
Arnaud Roques 97c7f1ed34 wip 2023-01-11 22:47:15 +01:00
Arnaud Roques cc840383e3 Fix https://github.com/plantuml/plantuml/issues/1250 2023-01-10 18:48:14 +01:00
Arnaud Roques a5d39f6dda Version 1.2023.0 2023-01-09 20:13:37 +01:00
PlantUML 0ed5f14c32
Merge pull request #1237 from Geronymos/latex-file-extension
FileFormat changed to correct LaTeX file extension
2023-01-05 12:06:34 +01:00
PlantUML c11a045670
Merge pull request #1246 from The-Lum/patch-2
Update FromSkinparamToStyle.java to fix some skinparams
2023-01-05 10:39:06 +01:00
The-Lum ec8af62c97
Update FromSkinparamToStyle.java
Adapted from 8ff88645d4 (with correction of #1214):
- fixes #1227
- fixes #1228

Regards.
2023-01-04 20:53:21 +01:00
Orangerot 74bd6652ce FileFormat changed to correct LaTeX file extension 2022-12-28 02:33:59 +01:00
PlantUML 040bf1f134
Merge pull request #1225 from The-Lum/FixTitleOnTheme
Fix `title` on theme
2022-12-26 16:19:04 +01:00
The-Lum ef438a1672 🐛Fix title on theme 2022-12-21 18:42:39 +00:00
Arnaud Roques 58469686e6 Revert StringUtils to original package 2022-12-17 12:10:05 +01:00
Arnaud Roques ec12ff5f1e Refactor packages organization 2022-12-17 12:01:10 +01:00
Arnaud Roques 4044c73d06 Fix https://github.com/plantuml/plantuml/issues/1216 2022-12-16 19:37:14 +01:00
Arnaud Roques 5deec17711 Fix https://github.com/plantuml/plantuml/issues/1210 2022-12-16 18:43:17 +01:00
Arnaud Roques 8ff88645d4 wip 2022-12-16 17:20:14 +01:00
PlantUML 800ead7a8f
Merge pull request #1215 from barskern/add-scale-to-tikz-picture
Add scale parameter to includegraphics for tikz
2022-12-16 15:13:46 +01:00
Ole Martin Ruud 19b12df687
Add scale parameter to includegraphics for tikz 2022-12-16 05:50:43 +01:00
Arnaud Roques 80217d8c90 wip 2022-12-13 18:30:41 +01:00
Arnaud Roques 117102bb65 Version 1.2022.14 2022-12-06 20:47:32 +01:00
Arnaud Roques 3cf5e15bb4 wip 2022-12-04 19:59:49 +01:00
Arnaud Roques 0d7f2eea2c wip 2022-11-30 18:41:17 +01:00
Arnaud Roques 4ea37512c7 wip 2022-11-29 19:57:22 +01:00
Arnaud Roques 8a5e7a48ca Fix https://forum.plantuml.net/17043/transparent-background-colours-on-alt-else-elements 2022-11-26 21:22:40 +01:00
Arnaud Roques fae0dfdf02 wip 2022-11-26 13:57:59 +01:00
Arnaud Roques 8b03ff71b9 wip 2022-11-25 18:50:02 +01:00
Arnaud Roques 03dbd4a848 Fix test issue 2022-11-23 20:12:05 +01:00
Arnaud Roques 5fce218b08 Fix https://forum.plantuml.net/17019/prevent-wrap-for-comma-dot-etc 2022-11-23 19:58:01 +01:00
Arnaud Roques 8cc6471ad3 Adding awslib14 2022-11-19 15:59:01 +01:00
Arnaud Roques 6e25b30d60 Improve compression management 2022-11-19 15:57:30 +01:00
Arnaud Roques 665cae15ba Adding awslib10 and awslib14 2022-11-17 18:56:16 +01:00
Arnaud Roques 97d3281ec3 Improve stdlib versioning 2022-11-16 00:15:21 +01:00
PlantUML db09c72834
Merge pull request #1189 from YassinHajaj/master
Fixed typo : arround becomes around
2022-11-14 11:28:56 +01:00
YassinHajaj 8b5ee45cd7
Fixed typo : arround becomes around 2022-11-14 10:59:47 +01:00
PlantUML a3f1128172
Merge pull request #1188 from bschwarz/new_theme_cloudscape_design
New theme cloudscape design
2022-11-13 23:01:26 +01:00
Brett Schwarz a6a15a3e06 FEAT: New Theme: cloudscape-design 2022-11-13 12:37:55 -08:00
Brett Schwarz 6305887e97 Revert "FEAT: Add New Theme: cloudscape-design"
This reverts commit 2d290790ab.
2022-11-13 12:36:01 -08:00
Brett Schwarz 2d290790ab FEAT: Add New Theme: cloudscape-design 2022-11-13 12:22:30 -08:00
Arnaud Roques ac0ccd1af2 wip 2022-11-08 19:45:10 +01:00
Arnaud Roques fce894d4e1 wip 2022-11-07 20:27:11 +01:00
Arnaud Roques 48ae51e8c3 wip 2022-11-04 18:36:03 +01:00
PlantUML 7a6261f00a
Merge pull request #1172 from amaembo/patch-1
Fix poorly distributed hashCode in Position.java
2022-10-29 13:45:25 +02:00
Tagir Valeev 35f94e2b6d
Fix poorly distributed hashCode in Position.java
Bitwise shift has lower precedence than addition, so the hashCode calculation was like `(xmin + ymin) << (8 + xmax) << (16 + ymax) << 24` which results in absolutely poor hashCode (in particular, lower 24 bits are always zero).
2022-10-28 11:26:32 +02:00
Arnaud Roques ab8d4f4118 Merge branch 'master' of https://github.com/plantuml/plantuml 2022-10-25 22:44:12 +02:00
Arnaud Roques 718266f443 wip 2022-10-25 22:43:40 +02:00
PlantUML b28f8d857f
Merge pull request #1165 from plantuml/gliptak-patch-1
Update to remove deprecated set-output in GHA
2022-10-25 09:19:24 +02:00
Gábor Lipták be8c618134
Update to remove deprecated set-output in GHA
Signed-off-by: Gábor Lipták gliptak@gmail.com
2022-10-24 21:17:59 -04:00
Arnaud Roques 62c8b26e25 Version 1.2022.12 2022-10-24 23:24:20 +02:00
PlantUML bb6a08f55c
Merge pull request #1164 from chenrui333/fix-graphviz-version-check
fix: update graphviz version check pattern
2022-10-24 14:43:38 +02:00
Rui Chen 3662ba3464
fix: update graphviz version check pattern
Signed-off-by: Rui Chen <rui@chenrui.dev>
2022-10-23 16:40:48 -04:00
Arnaud Roques b6a3efd259 Version 1.2020.10 2022-10-22 19:35:10 +02:00
Arnaud Roques 780e31ed77 wip 2022-10-20 18:58:12 +02:00
PlantUML 5c4b6b7fef
Merge pull request #1159 from The-Lum/AddMetaclassStereotypeInClassDiag
Add support for `MetaClass` and `Stereotype` in class diagram
2022-10-18 23:11:44 +02:00
Arnaud Roques 1928fb31ca wip 2022-10-18 22:57:44 +02:00
The-Lum b2e2a2bbcd add support for `MetaClass`, `Stereotype` in class 2022-10-18 20:00:25 +00:00
Arnaud Roques f0048de5b7 wip 2022-10-05 22:32:57 +02:00
PlantUML 70ad50746a
Merge pull request #1144 from gliptak/patch-1
Drop Ubuntu 18.04 from GHA
2022-09-29 08:03:25 +02:00
PlantUML 81008c49ca
Merge pull request #1143 from gliptak/ossrh2
Set POM details for publishing
2022-09-29 07:43:52 +02:00
Gábor Lipták 29dc03bde5
Drop Ubuntu 18.04 from GHA 2022-09-28 20:01:56 -04:00
Gábor Lipták 9fa39de8b2
Set POM details for publishing
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2022-09-28 19:49:44 -04:00
Arnaud Roques cfe2b60db9 minor Ebbn fix 2022-09-28 08:14:16 +02:00
PlantUML b8913c81c4
Merge pull request #1138 from gliptak/patch-2
Run gradle signMavenPublication at info level
2022-09-28 08:10:29 +02:00
Gábor Lipták d0a50693a9
Run gradle signMavenPublication at info level 2022-09-27 19:25:52 -04:00
Arnaud Roques ecf66ff391 EBNF improvements 2022-09-27 18:12:38 +02:00
PlantUML ee3037db80
Merge pull request #1135 from gliptak/ossrh1
Publish to OSSRH
2022-09-27 09:33:20 +02:00
Gábor Lipták 38e01ca98c
Publish to OSSRH
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2022-09-26 19:51:56 -04:00
PlantUML 005199bb66
Merge pull request #1134 from gliptak/patch-2
Add Docker image locatons
2022-09-25 23:38:34 +02:00
Gábor Lipták d799be7fc8
Add Docker image locatons 2022-09-25 12:15:24 -04:00
PlantUML ea0c9f98a2
Merge pull request #1128 from soloturn/java18
javadoc build warnings removed
2022-09-25 18:07:15 +02:00
Arnaud Roques 5e30d89eb4 Version 1.2022.8 2022-09-25 17:35:14 +02:00
PlantUML 368da723f1
Merge pull request #1130 from MOZGIII/docker-fixes
Minor corrections to Dockerfile
2022-09-24 23:55:56 +02:00
PlantUML 83c31b3046
Merge pull request #1133 from gliptak/patch-1
Deleted unused mvn build.xml
2022-09-24 23:29:21 +02:00
Gábor Lipták 45a1c2b319
Deleted unused mvn build.xml 2022-09-24 15:31:19 -04:00
MOZGIII 90b3149b64 Add .dockerignore 2022-09-24 23:01:19 +04:00
MOZGIII 1b6504d932 Drop data volume
It will have to be provided from the outside regardless, or in case
it's not, and something else is used - no need to actually use this
volume at all.
2022-09-24 23:01:07 +04:00
MOZGIII 250af80717 Split loader and runtime images 2022-09-24 22:54:58 +04:00
MOZGIII 1398d85806 Make PLANTUML_VERSION mandatory 2022-09-24 22:52:12 +04:00
MOZGIII d3bcb10ff9 Add Dockerfile to .editorconfig 2022-09-24 22:51:28 +04:00
PlantUML 0f6d5de35a
Merge pull request #1129 from gliptak/dockerhub1
Add Dockerhub release to GHA
2022-09-24 16:20:30 +02:00
Gábor Lipták 31999b4cf4 Add Dockerhub release to GHA
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2022-09-24 10:04:01 -04:00
soloturn 64fe77dc58 update jupiter to 5.9.1, batik to 1.15 2022-09-24 11:09:53 +02:00
soloturn c124a9d550 javadoc links which are not in the code removed 2022-09-24 11:06:25 +02:00
soloturn 763e60b2d1 literal & in javaddoc 2022-09-24 11:06:25 +02:00
Arnaud Roques f846634ce2 wip 2022-09-23 18:53:33 +02:00
Arnaud Roques 9bdc69ecee wip 2022-09-20 22:35:41 +02:00
PlantUML 06afc26207
Merge pull request #1121 from soloturn/gradle
update gradle to 7.5.1, assertj, jupiter, setup-java.
2022-09-18 19:22:57 +02:00
PlantUML 7e1a26051e
Merge pull request #1122 from soloturn/java18
Double.valueOf instead of new Double()
2022-09-18 19:18:13 +02:00
Arnaud Roques 648b02f8c8 wip 2022-09-18 19:08:06 +02:00
soloturn e8d057127a Double.valueOf instead of new Double() 2022-09-17 19:37:51 +02:00
soloturn e87413acda update gradle to 7.5.1, assertj, jupiter, setup-java.
gradle-7.5.1 supports java-18.
2022-09-17 19:01:12 +02:00
PlantUML 74ce471d71
Merge pull request #1120 from The-Lum/ImproveRelease
upd: create an JAR asset without PlantUML version
2022-09-16 21:33:31 +02:00
The-Lum bf33696c79
upd: create an JAR asset without PlantUML version
Create an JAR asset without PlantUML version.
2022-09-16 21:14:28 +02:00
Arnaud Roques 2d07f5ae2c wip 2022-09-15 19:24:26 +02:00
Arnaud Roques 206f807952 wip 2022-09-14 22:02:44 +02:00
Arnaud Roques b2afe9c916 wip 2022-09-14 20:12:03 +02:00
Arnaud Roques 9ab898fe1b wip refactoring 2022-09-12 22:08:34 +02:00
Arnaud Roques b0dbb29e2a Add text support in inline SVG sprites 2022-09-06 11:56:31 +02:00
Arnaud Roques 847f482609 Scxml improvement 2022-09-06 10:49:43 +02:00
Arnaud Roques a562d24aa4 ScXml improvement 2022-09-01 19:40:58 +02:00
Arnaud Roques 0dd8e23270 wip 2022-08-30 21:15:53 +02:00
Arnaud Roques 401f44bf3c Test simplification 2022-08-29 18:52:23 +02:00
Arnaud Roques 775d2e16c9 Remove version from UML:model 2022-08-29 18:43:42 +02:00
Arnaud Roques d586be399b run Gradle with INFO logging level 2022-08-29 18:33:02 +02:00
Arnaud Roques a195b4e842 xmi improvement and add alpha support for GraphML 2022-08-29 18:21:06 +02:00
Arnaud Roques 3af1fb7180 Rename %loadJSON to %load_json 2022-08-26 18:06:31 +02:00
Arnaud Roques 6809546c65 wip 2022-08-26 18:00:28 +02:00
Arnaud Roques 7c576ed4ac wip 2022-08-24 18:46:33 +02:00
Arnaud Roques b4d191a365 Import version 1.2022.7 2022-08-23 18:39:27 +02:00
Arnaud Roques b5a6684cd1 Refactoring about colors 2022-08-19 18:34:21 +02:00
Arnaud Roques 9da0fd0939 Gantt improvement 2022-08-18 18:55:09 +02:00
Arnaud Roques 62e5a00c8d wip 2022-08-17 19:34:24 +02:00
PlantUML 51cd2a00ce
Merge pull request #1088 from Mogztter/issue-1086-jul
resolves #1086 replace printStackTrace by java.util.logging.Logger
2022-08-17 09:25:55 +02:00
Guillaume Grossetie aaf3a8ee24 resolves #1086 replace printStackTrace by java.util.logging.Logger 2022-08-16 17:22:32 +02:00
PlantUML 1f3dd64f7c
Merge pull request #1075 from pzzz/master
adds HyperLinks to GANTT Milestones
2022-08-03 13:47:53 +02:00
Peter Schuller 0813b747e3 adds HyperLinks to GANTT Milestones
This resembles the behavior of "normal" tasks in the GANTT chart to
enable linking of milestones.
It is meant to resolve issue #1074
2022-08-02 18:43:52 +02:00
PlantUML 5718bbe08c
Merge pull request #1069 from gliptak/patch-1
Add ubuntu-22.04 to GHA build matrix
2022-07-31 22:43:33 +02:00
PlantUML 12b9152de3
Merge pull request #1070 from gliptak/master
Add Docker release to GHA
2022-07-31 22:34:20 +02:00
Gábor Lipták ba5fef7181
Add Docker release to GHA
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2022-07-29 21:44:46 -04:00
Gábor Lipták 44affec416
Add ubuntu-22.04 to GHA build matrix
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2022-07-29 20:48:14 -04:00
PlantUML e19e261bb9
Merge pull request #1067 from gliptak/docker1
Add initial Dockerfile
2022-07-29 16:32:31 +02:00
Arnaud Roques 1b89a48f46 wip 2022-07-29 14:43:01 +02:00
Gábor Lipták 76023f37bb
Add initial Dockerfile
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
2022-07-27 19:19:27 -04:00
Arnaud Roques dd53272c19 wip 2022-07-27 15:51:02 +02:00
Arnaud Roques 0fc2fad432 wip 2022-07-26 12:57:15 +02:00
Arnaud Roques ed8ad4bf69 Fix various mindmap and WBS style issues 2022-07-22 16:12:55 +02:00
Arnaud Roques 3bff5329c7 fix https://forum.plantuml.net/16284/how-to-left-align-when-the-aws-lib-is-also-used 2022-07-21 19:01:57 +02:00
Arnaud Roques 8294ca6e78 Add order, see https://forum.plantuml.net/15232/declare-participants-similar-to-components?show=16269#c16269 2022-07-21 18:06:55 +02:00
Arnaud Roques 04c4a6c156 Temporary remove macos-12 because Java 8 is not running there. Anyone, feel free to fix this :-) 2022-07-21 17:25:18 +02:00
Arnaud Roques 36652c6faa Move to macos-12 2022-07-21 17:16:42 +02:00
Arnaud Roques 9371ad88dc Adding %now function 2022-07-21 15:40:34 +02:00
Arnaud Roques ebf7613792 Minor bug fix 2022-07-21 14:09:24 +02:00
PlantUML 51b9bfb05a
Merge pull request #1060 from bharatrajagopalan/master
Updates to carbon gray
2022-07-17 00:16:26 +02:00
Bharat Rajagopalan afc1538f10 updated carbon gray theme 2022-07-16 21:56:07 +00:00
Bharat Rajagopalan 123d1779b5 carbon theme fixes covering more diagrams 2022-07-16 14:36:06 +00:00
PlantUML a8dd89ac1d
Merge pull request #1059 from bharatrajagopalan/master
Carbon Gray Theme
2022-07-15 14:46:21 +02:00
Bharat Rajagopalan c21c32b425 carbon gray theme 2022-07-15 12:17:56 +00:00
PlantUML 17a517eaa5
Merge pull request #1057 from bobjacobsen/bj-add-protocol-struct
Include clause overlooked in PR1028
2022-07-14 18:03:42 +02:00
Bob Jacobsen fe789981d6
Merge branch 'master' into bj-add-protocol-struct 2022-07-14 10:33:41 -04:00
PlantUML c5e44fbbb9
Merge pull request #1056 from The-Lum/AddExceptionInClassDiag
Add support for `Exception` in class diagram
2022-07-14 12:01:49 +02:00
Bob Jacobsen 1f2b3980e6 include missing clause 2022-07-13 20:17:28 -04:00
The-Lum c6c2343ee9 add support for `Exception` in class diagram 2022-07-13 23:39:29 +00:00
Arnaud Roques 227045a4ae fix https://github.com/plantuml/plantuml/issues/1053 2022-07-04 18:40:37 +02:00
PlantUML d926c4bfcb
Setting CORS 2022-07-04 12:23:41 +02:00
Arnaud Roques ac9d76cda6 wip 2022-06-29 18:45:19 +02:00
Arnaud Roques 649a13e04b Workaround for issue https://github.com/plantuml/plantuml/issues/1036 2022-06-27 18:34:58 +02:00
Arnaud Roques e801884415 wip 2022-06-27 18:33:45 +02:00
Arnaud Roques 285c21492f Import version 1.2022.6 2022-06-22 09:30:15 +02:00
PlantUML 6a51780588
Merge pull request #1034 from The-Lum/AddVersionOnSnapshotCI
fix: [CI] Add pseudo version on Snapshot
2022-06-06 20:15:29 +02:00
The-Lum 3dd8b13f6c
upd: add `Checkout` before `Configure workflow`
- Adding `Checkout the repository` _(I don't know if it optimized or not...)_ before the `Configure workflow`
- Fix variable in Uppercase
2022-06-06 20:00:16 +02:00
The-Lum 24c18715ae
upd: improve pseudo version of snapshot
- Suppress date-time on release title
- Add subtitle: `Version ~v${POM_VERSION%-SNAPSHOT} of the ${DATE_TIME_UTC}`
2022-06-06 19:46:45 +02:00
PlantUML db3252a5ad
Merge pull request #1033 from The-Lum/AddVersionOnSnapshotCI
[CI] Add pseudo version on Snapshot
2022-06-06 14:58:15 +02:00
Arnaud Roques 16ad46f0ea Merge branch 'wo' 2022-06-06 14:37:25 +02:00
Arnaud Roques 6e3ba0e4da wip 2022-06-06 14:36:58 +02:00
The-Lum a9e9ca81e0
upd: add a pseudo version of snapshot
Add a pseudo version of snapshot: `snapshot (~vM.YYYY.mmbetaBB [YYYY-MM-DD at hh:mm:ss (UTC)])`
2022-06-06 14:26:57 +02:00
The-Lum 5e06dae809
upd: add a pseudo version of snapshot
Add a pseudo version of snapshot taken from Version.java
2022-06-06 14:07:52 +02:00
PlantUML f6b47e6ea7
Merge pull request #1028 from bobjacobsen/bj-add-protocol-struct
Add Swift support for Protocol and Struct in class diagram
2022-06-06 12:47:29 +02:00
Arnaud Roques 26f5b7f1fd Add support for GraphViz 4 2022-06-06 12:35:27 +02:00
The-Lum dbe4feae25
upd: more generic version
Change version to: `M.YYYY.m-SNAPSHOT`
2022-06-04 16:37:33 +02:00
Bob Jacobsen 2b337ac940 add support for Protocol and Struct in class diagram 2022-06-02 14:50:03 -04:00
Arnaud Roques a5952259b7 Minor bug fixes 2022-05-31 18:31:10 +02:00
Arnaud Roques 1afe7aae82 Minor bug fixes 2022-05-27 16:18:47 +02:00
Arnaud Roques 2621139b20 wip 2022-05-22 12:22:28 +02:00
Arnaud Roques 7ac50bf403 wip 2022-05-21 11:41:00 +02:00
PlantUML 36a7cbfca1
Merge pull request #1012 from matthew16550/test-results
Make CI test results more visible
2022-05-05 10:45:41 +02:00
matthew16550 ccd0ac83ad Make CI test results more visible 2022-05-05 18:25:40 +10:00
Arnaud Roques 229a6129e2 Fixing tests 2022-05-04 19:54:15 +02:00
Arnaud Roques 93e5964e5f Import version 1.2022.5 2022-05-04 19:52:00 +02:00
Arnaud Roques 25a51b27e7 wip 2022-04-27 18:37:41 +02:00
Arnaud Roques dbaaa0165e wip 2022-04-27 18:30:36 +02:00
PlantUML d741fad9d6
Merge pull request #999 from soloturn/new-versions
gradle-7.4.2, github actions current version
2022-04-17 22:45:52 +02:00
soloturn d24c12e3c7 gradle-7.4.2, github actions current version 2022-04-17 22:10:14 +02:00
PlantUML ba32c10f7c
Merge pull request #991 from gwilherm/ascii-ref
Fix #990: ascii reference implementation
2022-04-11 10:12:55 +02:00
PlantUML 90fe34915f
Merge pull request #987 from soloturn/small-improvements
Small improvements
2022-04-11 10:12:12 +02:00
PlantUML f03b99a3c7
Merge pull request #988 from soloturn/always-true
always true, collapse
2022-04-11 10:01:03 +02:00
PlantUML 52579fcec3
Merge pull request #981 from plantuml/dependabot/github_actions/actions/setup-java-3.1.0
Bump actions/setup-java from 3.0.0 to 3.1.0
2022-04-11 09:51:00 +02:00
Arnaud Roques bee4d458eb Import version 1.2022.4 2022-04-10 21:24:55 +02:00
Guillaume 9058c7444c Fix #990: ascii reference implementation 2022-04-10 19:46:45 +02:00
PlantUML dc18a98c57
Merge pull request #989 from soloturn/latex-start
transparent is no color in latex, fixes #974
2022-04-09 14:57:17 +02:00
soloturn 8add65d317 transparent is no color in latex, fixes #974 2022-04-09 13:08:59 +02:00
soloturn 38d5625b3a always true, collapse
also, remove assert from PSystemCommandFactory, getCandidate
2022-04-09 11:27:01 +02:00
soloturn 8e7c39ebac clazz.newInstance deprecated with java17, PsystemDedication 2022-04-09 08:31:12 +02:00
soloturn 1885f4b21c remove exceptions not thrown 2022-04-09 08:31:12 +02:00
Arnaud Roques c9137be051 wip 2022-04-07 19:07:38 +02:00
Arnaud Roques d8c80f4110 Bug fix 2022-04-07 18:53:33 +02:00
PlantUML 29cd7dce0c
Merge pull request #973 from soloturn/venthe
Venthe
2022-04-06 09:05:11 +02:00
Jacek Lipiec b26e591c47 Fix typos in src/README.md 2022-04-06 08:54:11 +02:00
Arnaud Roques 02b244a320 wip 2022-04-04 23:07:57 +02:00
dependabot[bot] 1a8da77432
Bump actions/setup-java from 3.0.0 to 3.1.0
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-04 01:32:42 +00:00
Arnaud Roques 7cca06b667 header style in document 2022-04-03 14:26:58 +02:00
Arnaud Roques 7146f93b79 Fix https://github.com/plantuml/plantuml/pull/980 2022-04-03 14:18:33 +02:00
Arnaud Roques 35b05e7e6c Fix archimate monochrome issue 2022-04-02 16:33:30 +02:00
Arnaud Roques bbf173962a Minor refactoring 2022-04-02 14:56:05 +02:00
PlantUML c88448d3da
Merge pull request #979 from gwilherm/evol/link-in-ref
Evol/link in ref
2022-04-01 23:54:27 +02:00
Guillaume a2859242ff Move main link on header line of CommandReferenceMultilinesOverSeveral 2022-04-01 23:21:59 +02:00
Guillaume 51f90138b7 Use RegexConcat in CommandReferenceMultilinesOverSeveral 2022-04-01 23:20:30 +02:00
Guillaume 410f1caf71 Remove unused final color pattern 2022-04-01 23:09:01 +02:00
Guillaume bc4d2bf73c Main ref link definition before colon 2022-04-01 23:06:50 +02:00
Guillaume 986a521a66 Add missing topurl argument to UrlBuilder 2022-04-01 23:04:54 +02:00
PlantUML fb7dcc213b
Merge pull request #976 from gwilherm/fix/link-in-ref
Fix #635 Link in ref element not displayed
2022-03-31 22:29:45 +02:00
Guillaume f83674f4b3 Fix #635 Link in ref element not displayed 2022-03-31 20:57:04 +02:00
Arnaud Roques a5fe482b59 Version 1.2022.3 2022-03-29 23:13:46 +02:00
PlantUML b38adcfcdc
Merge pull request #954 from soloturn/java8syntax
Java8syntax
2022-03-28 20:09:08 +02:00
PlantUML d36da706ec
Merge branch 'master' into java8syntax 2022-03-28 19:43:11 +02:00
PlantUML 06da54c220
Merge pull request #972 from gwilherm/master
Fix buggy links in sequence groups #970
2022-03-28 19:38:33 +02:00
PlantUML a35f1fb734
Merge pull request #964 from matthew16550/editorconfig-tweaks
IntelliJ specific .editorconfig so it matches the existing Java style
2022-03-28 19:25:29 +02:00
Guillaume a38383b9e3 Fix buggy links in sequence groups #970 2022-03-27 21:22:28 +02:00
Guillaume fb2296510c Fix buggy links in sequence groups #970 2022-03-27 21:07:34 +02:00
Arnaud Roques d6afa3fb5a Tikz fix 2022-03-26 16:11:48 +01:00
Arnaud Roques ebf1b1b622 wip 2022-03-19 13:48:23 +01:00
PlantUML 73d13f9bf7
Merge pull request #963 from matthew16550/dependabot-gradle
Change Dependabot to look at Gradle instead of Maven
2022-03-14 09:26:34 +01:00
matthew16550 123fd61c34 IntelliJ specific .editorconfig so it matches the existing Java style 2022-03-14 13:23:36 +11:00
matthew16550 7dcf94b260 Change dependabot to look at Gradle instead of Maven 2022-03-14 13:11:59 +11:00
Arnaud Roques fc0b494b62 wip 2022-03-13 15:21:12 +01:00
Arnaud Roques acbdddbda5 Merge branch 'master' of https://github.com/plantuml/plantuml 2022-03-13 13:23:13 +01:00
Arnaud Roques 4be0ee3198 wip 2022-03-13 13:22:51 +01:00
PlantUML 8d36f87358
Merge pull request #962 from soloturn/gradle-publish
Gradle publish
2022-03-13 12:01:44 +01:00
soloturn 809c239b29 suppress warning for pdf variant not published at the moment 2022-03-13 11:44:28 +01:00
soloturn 9fd761b1d1 add maven publiccation sonatype oss, new 2022-03-13 11:43:33 +01:00
soloturn b85ad6e7ae add maven publication, first, to local filesystem 2022-03-13 10:37:03 +01:00
PlantUML f7f3dddb6c
Merge pull request #959 from soloturn/remove-maven
upload script was renamed, adapt workflow file
2022-03-12 12:58:18 +01:00
soloturn 9c651045c5 upload script was renamed, adapt workflow file 2022-03-12 06:22:34 +01:00
PlantUML eaaf59ef07
Merge pull request #955 from soloturn/remove-maven
Remove maven
2022-03-11 12:33:59 +01:00
soloturn 9cced3dfe8 remove maven build 2022-03-11 06:42:52 +01:00
soloturn 789ff2309b <> operator 2022-03-11 06:19:02 +01:00
dependabot[bot] 70a9682c80 Bump actions/setup-java from 2.5.0 to 3.0.0
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.5.0 to 3.0.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v2.5.0...v3.0.0)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-11 06:18:23 +01:00
Arnaud Roques 7f7cf2621f wip 2022-03-10 22:52:18 +01:00
Arnaud Roques 1e69806f44 wip 2022-03-10 18:38:16 +01:00
PlantUML df9f6cbfb1
https://github.com/plantuml/plantuml/issues/947 2022-03-10 12:49:37 +01:00
PlantUML 601620b039
Issue https://github.com/plantuml/plantuml/issues/948 2022-03-10 12:26:37 +01:00
Arnaud Roques 57b1cde03a wip 2022-03-09 20:15:12 +01:00
Arnaud Roques a1a599b633 Import version 1.2022.2 2022-03-07 20:33:46 +01:00
Arnaud Roques 5a784dcb0c Fix issue 2022-03-04 20:25:35 +01:00
Arnaud Roques d387828147 wip 2022-03-01 19:19:15 +01:00
Arnaud Roques 12b33f3202 Merge branch 'wip' 2022-03-01 19:12:20 +01:00
Arnaud Roques dbc5104528 wip 2022-03-01 19:11:51 +01:00
PlantUML c0332c621d
Support for Graphviz 3.0 2022-03-01 09:31:02 +01:00
PlantUML 87d472f122
Merge pull request #938 from kolrami/chru-ditaa-font-force
Force Font Size if sepcified instead of Deriving it
2022-02-28 15:13:07 +01:00
Christoph Rüthing 10931ae95c Force Font Size if sepcified instead of Deriving it 2022-02-28 14:40:39 +01:00
PlantUML d8cbe985ef
Merge pull request #933 from kolrami/chru-ditaa-font
Add Support for Font Selection and Transparent Background in Ditaa
2022-02-28 14:19:34 +01:00
Christoph Rüthing 473a8fce42 Allow Transparent Background for Ditaa Diagrams 2022-02-28 13:45:48 +01:00
Christoph Rüthing 8066a3f730 Add Support for Font Selection in Ditaa
This adds support for selecting the font in ditaa diagrams by specifying
--font-family, --font-size and/or --font-variant in the ditaa() line.

The change is actually taken over from @pepijnve who implemented in
https://github.com/pepijnve/ditaa/issues/1. I extended it for supporting
the necessary flags from plantuml.
2022-02-28 13:45:48 +01:00
Arnaud Roques 87cbe82cd0 wip 2022-02-24 19:18:19 +01:00
Arnaud Roques 5d0d2bb8da wip 2022-02-17 19:27:32 +01:00
PlantUML db67c75919
Merge pull request #930 from blipper/master
Add a new !pragma svginterface <true|false> to control INTERACTIVE mode on SVG output and Add support for interactive mouseover/mouseout focus on SVG to focusing on a node and its edges in a complex diagram.  This is enabled with !pragma svginteractive.
2022-02-16 22:43:35 +01:00
Martin Ross 6d0f6302ef Remove imports and push up Pragma to higher in call chain 2022-02-16 16:18:55 -05:00
Arnaud Roques 1fd8715ec9 wip 2022-02-16 19:59:44 +01:00
Martin Ross 61b0f7b138 Add support for interactive mouseover/mouseout focus on SVG to focusing on a node and its edges in a complex diagram. This is enabled with !pragma svginteractive. 2022-02-16 13:31:48 -05:00
Martin Ross 9c79c1256c Add a new !pragma svginterface to control INTERACTIVE mode on SVG output 2022-02-16 12:39:48 -05:00
PlantUML a250727e18
Merge pull request #926 from blipper/master
Remove extra logging and switch startGroup maps from HashMap to EnumMap
2022-02-15 21:48:46 +01:00
Martin Ross 2ca7dca0e3 Remove extra logging and switch startGroup maps from HashMap to EnumMap 2022-02-15 14:55:21 -05:00
PlantUML 7fca076240
Merge pull request #925 from blipper/master
Preserve element group structure in svg output to allow more intelligent post-processing
2022-02-15 19:37:27 +01:00
Arnaud Roques 90a19ab7e1 Skinparam fix 2022-02-15 19:29:18 +01:00
Martin Ross 416325e6c8 Preserve element group structure in svg output to allow more intelligent post-processing 2022-02-15 13:11:51 -05:00
Arnaud Roques e7785ff144 minor fixes 2022-02-14 18:44:01 +01:00
PlantUML fe4c5cb957
Merge pull request #921 from soloturn/master
sign plantuml-pdf.jar
2022-02-14 14:20:30 +01:00
soloturn 18e6c41bfb use gradle in-memory asci-armored keys to sign artifacts
on the commadn line this allows as before:
  gradle -q signMavenPublication signPdfJar -Psigning.gnupg.keyName=... - -Psigning.gnupg.passphrase=...

on github this allows to put the key and password into environment variables:
  ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ARTIFACT_SIGNING_KEY }}
  ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ARTIFACT_SIGNING_PASSPHRASE }}
  gradle -q signMavenPublication signPdfJar
2022-02-14 13:46:59 +01:00
soloturn 92e955ef03 upgrade fop, and mvn plugins 2022-02-14 13:33:27 +01:00
soloturn 2c44343fad gradle, sign plantuml-pdf.jar, and gh upload 2022-02-14 13:33:27 +01:00
PlantUML 8015ed1285
Remove contentScriptType: application/ecmascript 2022-02-14 12:42:16 +01:00
PlantUML fce81ce267
Merge pull request #917 from soloturn/pdfjar
create plantuml-pdf.jar and upload it to github
2022-02-13 16:33:47 +01:00
soloturn 357720e4cb gradle upload artifacts in any case, like mvn did before 2022-02-13 15:44:16 +01:00
soloturn 8417f23d3e gradle, github publish plantuml-pdf jar
plantuml-pdf-<version>.jar is not signed at the moment.
2022-02-13 15:44:12 +01:00
soloturn d582935e04 gradle pdfJar produces plantuml-pdf-<version>.jar 2022-02-13 14:54:25 +01:00
PlantUML 4b3683be83
Merge pull request #916 from soloturn/master
optional pdf deps, local publish without signing
2022-02-13 09:26:35 +01:00
soloturn 858903fec3 pdf optional dependencies 2022-02-13 08:40:15 +01:00
soloturn 6fe6a4c988 gradle, reorder to permit fat jar and features 2022-02-13 08:21:51 +01:00
soloturn b18175b25c gradle, avoid configuring tasks not run 2022-02-13 08:21:51 +01:00
soloturn 255b5180fe gradle, javadoc, add class-use + utf8 2022-02-13 08:20:58 +01:00
soloturn 06b6493f69 gradle, only sign when properties are there 2022-02-13 07:44:56 +01:00
Arnaud Roques 81fd6d4943 test update 2022-02-12 18:34:19 +01:00
Arnaud Roques 2761d1e922 Style improvement 2022-02-12 18:27:51 +01:00
PlantUML 45e89d12a8
Merge pull request #914 from soloturn/master
separate build and test
2022-02-12 10:09:36 +01:00
soloturn d201e7de64 gradle, store POM_VERSION in properties so it is taken everywhere. 2022-02-12 09:46:48 +01:00
soloturn ba4c7da3e4 gradle, separate test, and build/upload 2022-02-12 09:46:43 +01:00
soloturn a08af697e4 gradle release, gh publish signatures. 2022-02-12 08:39:38 +01:00
soloturn defeb87909 gradle, clean, maven publication, same version for build/sign 2022-02-12 08:13:40 +01:00
PlantUML 6cfeabefc2
Merge pull request #913 from soloturn/master
sign step checks environment var from gpg step
2022-02-11 13:12:54 +01:00
soloturn fc674de09f sign step checks environment var from gpg step 2022-02-11 13:00:55 +01:00
PlantUML e8e923d8e2
Merge pull request #912 from soloturn/master
switch default build to gradle, fixes #47
2022-02-11 12:24:16 +01:00
soloturn 8603c8da91 gradle, build and sign artifacts in 2 steps
release is not from windows 2019, daemon can be used
2022-02-11 12:10:58 +01:00
soloturn ad222ccc1b build.gradle.kts, project uses tab, not space indent 2022-02-11 11:13:46 +01:00
soloturn 12fce2cfd6 no gradle daemon so windows 2019 can use the cache.
in case somebody wonders about the confusing message that a daemon
is started, an explanation here:
https://discuss.gradle.org/t/no-daemon-switch-ineffective-if-jvm-settings-cause-new-fork/14919/7
2022-02-11 10:00:05 +01:00
soloturn 7d256adde6 switch default build to gradle, fixes #47 2022-02-11 09:41:40 +01:00
PlantUML b687dccd9f
Merge pull request #911 from soloturn/master
revert github workflows to use java8, java11, java17
2022-02-11 08:24:07 +01:00
soloturn b27c1fc50d revert github workflows to use java8, java11, java17
github workflow should use the various java versions to test,
which permits to test especially 2d rendering differences.

the javac release flag is set to produce java8 binaries in
any case. not perfect, but we only loose a warning that
applets are to be removed after java17, trivial to display
by adding the javac release property, when using java17:

  mvn --batch-mode compile -Dmaven.compiler.release=17
  gradle clean build -x javaDoc -PjavacRelease=17

better would be to separate build and test, as suggested
by https://github.com/matthew16550, here:
https://github.com/plantuml/plantuml/pull/904
2022-02-11 08:13:03 +01:00
Arnaud Roques 4534dc4ee2 Change default theme 2022-02-10 19:16:18 +01:00
PlantUML edacfb5dbc
Merge pull request #908 from soloturn/master
gradle, permit 'gradle test' with java8
2022-02-10 17:36:31 +01:00
soloturn 2d4024f2f3 mvn, source and target java8, maven-compiler-plugin default still is java7. 2022-02-10 17:32:46 +01:00
soloturn 1bb80c929c gradle, permit 'gradle test' with java8 2022-02-10 17:11:11 +01:00
PlantUML b438f6561c
Merge pull request #907 from soloturn/master
permit "mvn test" with java8.
2022-02-10 16:09:06 +01:00
soloturn e4a560a998 permit "mvn test" with java8.
activate javac --release only on higher java versions. it allows to compile
with java11+, but permits afterwards running tests with java8 to make sure
rendering errors can be catched.

parmit the syntax of the source to include java17, and tell the user about
it instead of just failing the compilation.
2022-02-10 10:23:15 +01:00
PlantUML 4397977d8a
Merge pull request #904 from soloturn/master
github workflow with various release again
2022-02-09 14:14:03 +01:00
soloturn 2baa696e60 github workflow with various release again
it runs on all platforms with java-17, but the javac release flag
is set to 8, 11, and 17 respectively. artifact upload happens
from latest ubuntu LTS, 20.04, java-8.
2022-02-08 12:53:41 +01:00
PlantUML f67ebad086
Merge pull request #903 from soloturn/gradle
gradle, allow java17 binary
2022-02-08 12:39:42 +01:00
soloturn e15c58d9a2 allow "gradle build -PjavacRelease=17" to build java-17 binary
for gradle now one could do:
gradle clean build -x test -x javaDoc -PjavacRelease=17

for maven something like this works to build a different target binary:
mvn clean package -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dmaven.compiler.release=17
2022-02-08 11:12:24 +01:00
soloturn ecc8dfe60a gradle javadoc, addBooleanOption instead of addStringOption 2022-02-08 11:11:50 +01:00
PlantUML 065e2b34d9
Merge pull request #899 from soloturn/master
use javac --release, java8 minimum version
2022-02-07 09:31:12 +01:00
soloturn 2bdb2f8300 github workflow --release flag needs build with 11
https://github.com/plantuml/plantuml/issues/898
2022-02-05 19:04:17 +01:00
soloturn 856cef2478 javac --release to build for java8, with java11+
javac since java9 has a new flat --release to build a binary which can be run
with an older java. the public API of that older release must be followed as
well.

the flags used before, -source, -target do not do this. therefor it got
unnoticed that plantuml did not compile and run in java7 any more, despite
beeing compiled for for java7.

https://github.com/plantuml/plantuml/issues/898
2022-02-05 19:04:17 +01:00
PlantUML 88947b9dc7
Merge pull request #901 from soloturn/gradle
simpler syntax, clazz.newInstance deprecated with java17
2022-02-04 15:29:45 +01:00
soloturn 90fd3b5a51 simpler syntax, clazz.newInstance deprecated with java17 2022-02-04 15:21:27 +01:00
PlantUML b29fc4a21a
Merge pull request #895 from soloturn/java8
source code java8 compatible, adjust build files to reflect this
2022-02-04 09:31:15 +01:00
soloturn c4cbef9132 remove idea kludge as this is default now 2022-02-04 06:59:55 +01:00
soloturn 5476a75602 source code java8 compatible 2022-02-04 06:57:48 +01:00
PlantUML 7ea36d5090
Merge pull request #896 from soloturn/java7
gradle, source code java7 compatible
2022-02-04 00:14:41 +01:00
PlantUML 39b5adaf65
Merge pull request #897 from soloturn/gradle
simplify gradle structure, make intellij global reformat stop for SVG
2022-02-04 00:12:27 +01:00
soloturn 2a43a7f616 simplify gradle structure 2022-02-04 00:02:32 +01:00
soloturn a6f1f58300 .editorconfig ignore ext, use intellij notation, otherwise it does not kick in
i placed a christmas wish request that intellij changes its default to respect an
empty .editorconfig but chances seem to be slim they'd really do it:
https://youtrack.jetbrains.com/issue/IDEA-287505.

give in and use an intellij property to stop it reformatting SVG on global reformat.
2022-02-04 00:01:29 +01:00
soloturn a0d02b4f06 gradle, source code java7 compatible 2022-02-03 23:39:24 +01:00
Arnaud Roques 614898c1b9 Merge branch 'master' of https://github.com/plantuml/plantuml 2022-02-03 11:19:20 +01:00
Arnaud Roques db76ab28b5 Fix style issue and add splitstr function 2022-02-03 11:18:56 +01:00
PlantUML f1305877ca
Merge pull request #894 from plantuml/revert-892-gradle
Revert "improve java17, intellij compatibility"
2022-02-03 10:37:44 +01:00
PlantUML 21ae6a09b7
Revert "improve java17, intellij compatibility" 2022-02-03 10:37:29 +01:00
PlantUML be67cbd3ff
Merge pull request #892 from soloturn/gradle
improve java17, intellij compatibility
2022-02-03 10:19:20 +01:00
soloturn f1d12093c6 simpler syntax, clazz.newInstance deprecated with java17 2022-02-03 08:18:36 +01:00
soloturn 89cb3c272c simplify gradle structure 2022-02-03 08:18:36 +01:00
soloturn e4ca20f27e .editorconfig ignore ext, use intellij notation, otherwise it does not kick in 2022-02-03 08:18:36 +01:00
Arnaud Roques 8ae721e3d2 Version 1.2022.1 2022-02-01 21:21:45 +01:00
PlantUML cee57b06ba
Merge pull request #887 from jansende/patch-1
Added <<start>> Stereotype
2022-01-31 09:27:20 +01:00
Jan Sende b84c1670d8
Added <<start>> Stereotype
Currently the state diagram only supports <<end>> as a stereotype for creating named end points. However, the same functionality is missing for starting points. This commit adds this ability.
2022-01-31 11:52:24 +09:00
Arnaud Roques f0a3fbf548 Add two json functions 2022-01-29 19:00:48 +01:00
Arnaud Roques 9d611cf988 wip on prefers-color-scheme:dark 2022-01-28 22:45:34 +01:00
PlantUML ed2535bd75
Merge pull request #885 from soloturn/gradle
update plugin versions, turn down javadoc warnings
2022-01-27 19:15:21 +01:00
soloturn 44d46ea2ee update plugin versions, turn down javadoc warnings 2022-01-27 19:08:19 +01:00
PlantUML 2628400b89
Merge pull request #884 from soloturn/gradle
editorconfig fix syntax for pom, yml,  should not touch svg
2022-01-27 18:25:47 +01:00
Arnaud Roques 5ad243efd4 wip 2022-01-27 18:22:47 +01:00
Arnaud Roques 6fb89e85e7 Merge branch 'wip' 2022-01-27 18:08:23 +01:00
Arnaud Roques ddaacdf3f7 wip 2022-01-27 18:08:03 +01:00
soloturn c019d3d559 editorconfig fix syntax for pom, yml, should not touch svg 2022-01-27 17:26:07 +01:00
PlantUML 6fe22da334
Merge pull request #871 from soloturn/gradle
valueOf instead of new
2022-01-27 09:41:45 +01:00
soloturn f0c74f747f tab is the default, exempt pom, yml 2022-01-27 09:00:05 +01:00
soloturn 703b83a5ac pendingStart < pause.pos1 always true in Segment.java 2022-01-27 06:42:55 +01:00
Arnaud Roques 9ae7706e5c Add frames and state diagrams 2022-01-26 20:41:21 +01:00
Arnaud Roques 3dac7c05ce wip 2022-01-26 20:04:21 +01:00
PlantUML 61a4f6c182
Update README.md 2022-01-25 10:35:42 +01:00
PlantUML bf77c5666b
Update README.md 2022-01-25 10:33:33 +01:00
soloturn 457197c49f valueOf or auto-unbox instead of new
new Double and similar got a removal warning in java-17, do Double.valueOf,
Double.parseDouble and similar for other types.

.editorconfig caused some trimming of trailing whitespaces.

remove boxing
2022-01-22 04:30:44 +01:00
PlantUML 80e3f17c0e
Merge pull request #868 from soloturn/gradle
github workflow can use gradle.
2022-01-21 17:40:56 +01:00
PlantUML d1835e24b7
Create SECURITY.md 2022-01-21 17:26:43 +01:00
soloturn 1b25c3c00b github workflow can use gradle.
workflow and scripts are duplicated so nothing existing breaks.
ci-gradle triggers are commented apart from the workflow trigger
which allows manual start, so one can compare artifacts.
2022-01-20 06:45:51 +01:00
Arnaud Roques c623158c6c wip 2022-01-19 22:35:53 +01:00
PlantUML 402c492b70
Merge pull request #861 from soloturn/master
mvn: implementation-version into manifest
2022-01-19 10:51:22 +01:00
PlantUML bce5974025
Merge pull request #865 from soloturn/sign
build.gradle.kts, add gpg signing
2022-01-19 10:47:36 +01:00
soloturn 558c74abcb build.gradle.kts, add gpg signing 2022-01-15 23:23:06 +01:00
soloturn 8470183e87 gradle.properties values are not quoted 2022-01-15 23:23:06 +01:00
PlantUML af5fa2b117
Merge pull request #864 from The-Lum/FixNwdiag
fix: nwdiag server or element name with special char ("-" or ".")
2022-01-15 16:01:10 +01:00
The-Lum bbec8d3c6b
fix: nwdiag name with special char
Fix: nwdiag server or element name with special char ("-" or ".")

Here is the similar patch as:
- #adc23450c82e822d6fe8836defa01277f7901f71
But for server or element, on the: `CommandElement.java` file.

Regards.

Fixes #827
2022-01-15 15:56:05 +01:00
PlantUML e054f57d38
Move to https://plantuml.io 2022-01-15 12:19:42 +01:00
soloturn 696bbd19e9 add Implementation-Version to manifest, later on retrieve it in Version.java 2022-01-15 10:24:51 +01:00
Arnaud Roques adc23450c8 wip 2022-01-14 18:06:05 +01:00
Arnaud Roques e823b5f00f Fix https://github.com/plantuml/plantuml/issues/857 2022-01-12 19:48:43 +01:00
Arnaud Roques c0a51633ce Import version 1.2022.0 2022-01-12 17:54:49 +01:00
PlantUML 891b70dd8a
Merge pull request #856 from soloturn/master
gradle, version can now be set on command line.
2022-01-12 11:20:24 +01:00
soloturn eb37b1f33b gradle, version can now be set on command line.
the default version is in gradle.properties, to change it e.g. to 1.0.0 call:
gradle build -Pversion=1.0.0
2022-01-11 17:40:00 +01:00
PlantUML 2a946bf80b
Merge pull request #852 from soloturn/master
build.gradle.kts, include manifest.txt, Build-Jdk-Spec
2022-01-09 14:13:19 +01:00
soloturn 8479cf0898 build.gradle.kts, include manifest.txt, Build-Jdk-Spec
the manifest classpath is to accomodate running it with pdf or not.
mvn can build via a profile. when building a binary without pdf,
the dependencies could be added later, and plantuml would know it
anyway as they are listed in the manifest.

the gradle way would be to use variant aware builds,
predominatntly this is used for android builds. multi-release
builds are not something for plantuml:
* https://developer.android.com/studio/build/build-variants
* https://docs.gradle.org/current/userguide/variant_model.html
* https://blog.gradle.org/mrjars
2022-01-09 13:59:27 +01:00
PlantUML c7082a727b
Merge pull request #851 from soloturn/gradle
build.gradle.kts, add unit testing
2022-01-09 09:25:16 +01:00
soloturn 06ca72c650 build.gradle.kts, bump assertj-core to 3.22.0, junit-jupiter to 5.8.2 2022-01-09 01:42:06 +01:00
soloturn 284285140c build.gradle.kts, add unit testing
improves #47
2022-01-09 01:41:55 +01:00
Arnaud Roques 9cba08f732 NPE protection 2022-01-07 19:12:07 +01:00
Arnaud Roques 24bd088e01 Emoji color fix 2022-01-07 19:04:36 +01:00
PlantUML 89a9227afd
Merge pull request #850 from soloturn/master
build.gradle.kts, add javadoc
2022-01-07 12:00:27 +01:00
soloturn 8058b11d27 reformat build.gradle.kts 2 indent
project uses 2 spaces indent, lf as line ending, utf-8. make it easier
to follow this rule by adding a .editorconfig file which vscode and
intellij respect out of the box.
2022-01-07 02:28:17 +01:00
soloturn 39331af67e build.gradle.kts, add javadoc 2022-01-07 01:45:46 +01:00
PlantUML 4d61b35821
Add sponsor badge 2022-01-06 11:05:21 +01:00
PlantUML 92f64fd31d
Merge pull request #847 from soloturn/master
add basic gradle files to allow conversion to gradle in future, #47
2022-01-06 10:28:34 +01:00
soloturn fed524cd6d add basic gradle files to allow conversion to gradle in future, #47 2022-01-06 03:13:46 +01:00
PlantUML a9e8e58bdd
Merge pull request #845 from kmierzeje/master
Xmi export for Sequence Diagrams
2022-01-05 10:14:05 +01:00
Kamil Mierzejewski d92ca6a077 Xmi export for Sequence Diagrams 2022-01-05 09:47:50 +01:00
Arnaud Roques d36de19c99 Add nested box in sequence diagram 2022-01-04 18:21:17 +01:00
Arnaud Roques 16fd392308 Implements https://forum.plantuml.net/15232 2022-01-04 12:23:39 +01:00
Arnaud Roques 864cb34e30 wip 2022-01-03 18:35:17 +01:00
Arnaud Roques 0be33c0ecf Fix https://forum.plantuml.net/15211 2022-01-03 14:38:18 +01:00
Arnaud Roques 4a8e9e6e2e wip 2022-01-01 18:05:19 +01:00
Arnaud Roques 3cbd4924f2 wip 2021-12-21 18:23:17 +01:00
Arnaud Roques 180b8eddd1 Fix (again) https://forum.plantuml.net/5261 2021-12-15 18:40:12 +01:00
Arnaud Roques 5a1147b92e fix https://forum.plantuml.net/5261 2021-12-14 22:38:22 +01:00
Arnaud Roques 442d313a30 wip 2021-12-14 19:03:11 +01:00
PlantUML 40aab019ec
About vulnerability 2021-12-14 11:54:02 +01:00
PlantUML 3d0759f90a
Merge pull request #824 from matthew16550/fix-snapshot-release
Fix snapshot release when workflow does not sign artifacts
2021-12-09 11:09:08 +01:00
matthew16550 fe66147806 Fix snapshot release when workflow does not sign artifacts 2021-12-09 21:03:26 +11:00
PlantUML 2c983b715a
Merge pull request #823 from matthew16550/sign-snapshots
Add artifact signing to CI workflow & publish signature files in snapshot releases
2021-12-09 10:24:13 +01:00
matthew16550 cb1468d8b3 Add artifact signing to CI workflow & publish signature files in snapshot releases. 2021-12-09 11:54:04 +11:00
Arnaud Roques 51ee3fb7c7 Try to avoid memory issues 2021-12-08 21:33:40 +01:00
3418 changed files with 144678 additions and 82559 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
**

27
.editorconfig Normal file
View File

@ -0,0 +1,27 @@
# Editor configuration, see http://editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = tab
trim_trailing_whitespace = true
[*.java]
ij_continuation_indent_size = 8
ij_java_align_multiline_parameters = false
ij_java_class_count_to_use_import_on_demand = 999
ij_java_imports_layout = $*,|,java.**,|,javax.**,|,org.**,|com.**,|*,|
ij_java_names_count_to_use_import_on_demand = 999
[*.md]
max_line_length = off
trim_trailing_whitespace = false
[{pom.xml, *.yml}]
indent_style = space
[Dockerfile]
indent_style = space
indent_size = 2

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
*.java text=auto

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Community Support
url: https://github.com/plantuml/plantuml/discussions/new
about: Please ask and answer questions here.

View File

@ -0,0 +1,27 @@
---
name: Documentation request
about: Identify an area for improvement in documentation
---
**What is the URL of the documentation?**
- **Example:** https://github.com/evantill/docker-cheerpj/blob/main/README.md#example-of-using-cheerpj-on-your-computer
- *Note:* This URL includes the web page and the section of the documentation.
**What can be improved?**
A clear and concise description of what can be improved.
Examples:
- "I don't understand where the ${XYZ} variable is set."
- "There seems to be a step missing between 'X' and 'Z'. I don't know how to get to 'Z'."
- "When I run `command sub-command ...` I get the following error:"
- "I don't know what is meant by 'gerble barb gazoink` in the instructions".
**Additional context**
Add any other context or screenshots to help describe the documentation improvement.
If you think the documentation improvement is operating system specific,
please indicate which operating system is being used.

View File

@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -0,0 +1,6 @@
dist/
lib/
node_modules/
jest.config.js
__tests__/

View File

@ -0,0 +1,55 @@
{
"plugins": ["jest", "@typescript-eslint"],
"extends": ["plugin:github/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module",
"project": "./tsconfig.json"
},
"rules": {
"i18n-text/no-en": "off",
"eslint-comments/no-use": "off",
"import/no-namespace": "off",
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-comment": "error",
"camelcase": "off",
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
"@typescript-eslint/func-call-spacing": ["error", "never"],
"@typescript-eslint/no-array-constructor": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
"@typescript-eslint/no-extraneous-class": "error",
"@typescript-eslint/no-for-in-array": "error",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-unnecessary-qualifier": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-useless-constructor": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-function-type": "warn",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/require-array-sort-compare": "error",
"@typescript-eslint/restrict-plus-operands": "error",
"semi": "off",
"@typescript-eslint/semi": ["error", "never"],
"@typescript-eslint/type-annotation-spacing": "error",
"@typescript-eslint/unbound-method": "error"
},
"env": {
"node": true,
"es6": true,
"jest/globals": true
}
}

View File

@ -0,0 +1 @@
dist/** -diff linguist-generated=true

View File

@ -0,0 +1,99 @@
# Dependency directory
node_modules
# Rest pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# OS metadata
.DS_Store
Thumbs.db
# Ignore built ts files
__tests__/runner/*
lib/**/*

View File

@ -0,0 +1,3 @@
dist/
lib/
node_modules/

View File

@ -0,0 +1,10 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": false,
"arrowParens": "avoid"
}

View File

@ -0,0 +1,105 @@
<p align="center">
<a href="https://github.com/actions/typescript-action/actions"><img alt="typescript-action status" src="https://github.com/actions/typescript-action/workflows/build-test/badge.svg"></a>
</p>
# Create a JavaScript Action using TypeScript
Use this template to bootstrap the creation of a TypeScript action.:rocket:
This template includes compilation support, tests, a validation workflow, publishing, and versioning guidance.
If you are new, there's also a simpler introduction. See the [Hello World JavaScript Action](https://github.com/actions/hello-world-javascript-action)
## Create an action from this template
Click the `Use this Template` and provide the new repo details for your action
## Code in Main
> First, you'll need to have a reasonably modern version of `node` handy. This won't work with versions older than 9, for instance.
Install the dependencies
```bash
$ npm install
```
Build the typescript and package it for distribution
```bash
$ npm run build && npm run package
```
Run the tests :heavy_check_mark:
```bash
$ npm test
PASS ./index.test.js
✓ throws invalid number (3ms)
✓ wait 500 ms (504ms)
✓ test runs (95ms)
...
```
## Change action.yml
The action.yml defines the inputs and output for your action.
Update the action.yml with your name, description, inputs and outputs for your action.
See the [documentation](https://help.github.com/en/articles/metadata-syntax-for-github-actions)
## Change the Code
Most toolkit and CI/CD operations involve async operations so the action is run in an async function.
```javascript
import * as core from '@actions/core';
...
async function run() {
try {
...
}
catch (error) {
core.setFailed(error.message);
}
}
run()
```
See the [toolkit documentation](https://github.com/actions/toolkit/blob/master/README.md#packages) for the various packages.
## Publish to a distribution branch
Actions are run from GitHub repos so we will checkin the packed dist folder.
Then run [ncc](https://github.com/zeit/ncc) and push the results:
```bash
$ npm run package
$ git add dist
$ git commit -a -m "prod dependencies"
$ git push origin releases/v1
```
Note: We recommend using the `--license` option for ncc, which will create a license file for all of the production node modules used in your project.
Your action is now published! :rocket:
See the [versioning documentation](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md)
## Validate
You can now validate the action by referencing `./` in a workflow in your repo (see [test.yml](.github/workflows/test.yml))
```yaml
uses: ./
with:
milliseconds: 1000
```
See the [actions tab](https://github.com/actions/typescript-action/actions) for runs of this action! :rocket:
## Usage:
After testing you can [create a v1 tag](https://github.com/actions/toolkit/blob/master/docs/action-versioning.md) to reference the stable and latest V1 action

View File

@ -0,0 +1,30 @@
import * as cp from 'child_process'
import * as path from 'path'
import * as process from 'process'
import {expect, test} from '@jest/globals'
import {wait} from '../src/wait'
test('throws invalid number', async () => {
const input = parseInt('foo', 10)
await expect(wait(input)).rejects.toThrow('milliseconds not a number')
})
test('wait 500 ms', async () => {
const start = new Date()
await wait(500)
const end = new Date()
const delta = Math.abs(end.getTime() - start.getTime())
expect(delta).toBeGreaterThan(450)
})
// shows how the runner will run a javascript action with env / stdout protocol
test('test runs', () => {
process.env['INPUT_MILLISECONDS'] = '500'
const np = process.execPath
const ip = path.join(__dirname, '..', 'lib', 'main.js')
const options: cp.ExecFileSyncOptions = {
env: process.env
}
console.log(cp.execFileSync(np, [ip], options).toString())
})

View File

@ -0,0 +1,11 @@
name: 'Your name here'
description: 'Provide a description here'
author: 'Your name or organization here'
inputs:
milliseconds: # change this
required: true
description: 'input description here'
default: 'default value if applicable'
runs:
using: 'node16'
main: 'dist/index.js'

9913
.github/actions/configure-workflow/dist/index.js generated vendored Normal file

File diff suppressed because one or more lines are too long

1
.github/actions/configure-workflow/dist/index.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

635
.github/actions/configure-workflow/dist/licenses.txt generated vendored Normal file
View File

@ -0,0 +1,635 @@
@actions/core
MIT
The MIT License (MIT)
Copyright 2019 GitHub
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@actions/github
MIT
The MIT License (MIT)
Copyright 2019 GitHub
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@actions/http-client
MIT
Actions Http Client for Node.js
Copyright (c) GitHub, Inc.
All rights reserved.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@octokit/auth-token
MIT
The MIT License
Copyright (c) 2019 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@octokit/core
MIT
The MIT License
Copyright (c) 2019 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@octokit/endpoint
MIT
The MIT License
Copyright (c) 2018 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@octokit/graphql
MIT
The MIT License
Copyright (c) 2018 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@octokit/plugin-paginate-rest
MIT
MIT License Copyright (c) 2019 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@octokit/plugin-rest-endpoint-methods
MIT
MIT License Copyright (c) 2019 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@octokit/request
MIT
The MIT License
Copyright (c) 2018 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@octokit/request-error
MIT
The MIT License
Copyright (c) 2019 Octokit contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@vercel/ncc
MIT
Copyright 2018 ZEIT, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
before-after-hook
Apache-2.0
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2018 Gregor Martynus and other contributors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
deprecation
ISC
The ISC License
Copyright (c) Gregor Martynus and contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
is-plain-object
MIT
The MIT License (MIT)
Copyright (c) 2014-2017, Jon Schlinkert.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
node-fetch
MIT
The MIT License (MIT)
Copyright (c) 2016 David Frank
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
once
ISC
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
tr46
MIT
tunnel
MIT
The MIT License (MIT)
Copyright (c) 2012 Koichi Kobayashi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
universal-user-agent
ISC
# [ISC License](https://spdx.org/licenses/ISC)
Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
uuid
MIT
The MIT License (MIT)
Copyright (c) 2010-2020 Robert Kieffer and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
webidl-conversions
BSD-2-Clause
# The BSD 2-Clause License
Copyright (c) 2014, Domenic Denicola
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
whatwg-url
MIT
The MIT License (MIT)
Copyright (c) 20152016 Sebastian Mayr
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
wrappy
ISC
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
module.exports = {
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testMatch: ['**/*.test.ts'],
transform: {
'^.+\\.ts$': 'ts-jest'
},
verbose: true
}

14754
.github/actions/configure-workflow/package-lock.json generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,47 @@
{
"name": "typescript-action",
"version": "0.0.1",
"private": true,
"description": "TypeScript template action",
"main": "lib/main.js",
"scripts": {
"build": "tsc",
"format": "prettier --write '**/*.ts'",
"format-check": "prettier --check '**/*.ts'",
"lint": "eslint src/**/*.ts",
"package": "ncc build --source-map --license licenses.txt",
"test": "jest",
"all": "npm run build && npm run format && npm run lint && npm run package && npm test",
"test-job": "npm run build && npm run package && pushd ../../../ && act --job testing-workflow-config && popd",
"clean": "rm -rf node_modules lib .idea"
},
"repository": {
"type": "git",
"url": "git+https://github.com/actions/typescript-action.git"
},
"keywords": [
"actions",
"node",
"setup"
],
"author": "",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/github": "^5.1.1"
},
"devDependencies": {
"@octokit/webhooks-types": "^6.10.0",
"@types/node": "^18.11.0",
"@typescript-eslint/parser": "^4.33.0",
"@vercel/ncc": "^0.31.1",
"eslint": "^7.32.0",
"eslint-plugin-github": "^4.3.2",
"eslint-plugin-jest": "^25.3.2",
"jest": "^27.2.5",
"js-yaml": "^4.1.0",
"prettier": "2.5.1",
"ts-jest": "^27.1.2",
"typescript": "^4.4.4"
}
}

View File

@ -0,0 +1,69 @@
import * as core from '@actions/core';
import * as github from '@actions/github';
import {PullRequestEvent, PushEvent, ReleaseEvent, WorkflowDispatchEvent} from '@octokit/webhooks-types';
import { wait } from "./wait";
async function run(): Promise<void> {
try {
const ms: string = core.getInput("milliseconds");
core.debug(`Waiting ${ms} milliseconds ...`); // debug is only output if you set the secret `ACTIONS_STEP_DEBUG` to true
core.debug(new Date().toTimeString());
await wait(parseInt(ms, 10));
core.debug(new Date().toTimeString());
core.setOutput("time", new Date().toTimeString());
} catch (error) {
if (error instanceof Error) core.setFailed(error.message);
}
}
function onPullRequestEvent(payload: PullRequestEvent) {
switch(payload.action){
case "labeled":
console.log("pull request label "+payload.label)
break;
default:
console.log("pull request action "+payload.action)
}
console.info('pull request event:',payload)
}
function onWorkflowDispatchEvent(payload: WorkflowDispatchEvent): void {
console.info('workflow dispatch event:',payload)
}
function onPushEvent(payload: PushEvent): void {
console.info('push event:',payload)
}
function onReleaseEvent(payload: ReleaseEvent) {
console.info('onReleaseEvent:',payload)
}
function handleEvent(): void {
console.info(`eventName: ${github.context.eventName}`);
switch (github.context.eventName) {
case "workflow_dispatch":
onWorkflowDispatchEvent(github.context.payload as WorkflowDispatchEvent);
break;
case "push":
onPushEvent(github.context.payload as PushEvent);
break;
case "pull_request":
onPullRequestEvent(github.context.payload as PullRequestEvent)
break;
// case "pull_request_target":
// onPullRequestEvent(github.context.payload as PullRequestEvent)
// break;
case "release":
onReleaseEvent(github.context.payload as ReleaseEvent)
default:
break;
}
}
handleEvent();
run();

View File

@ -0,0 +1,9 @@
export async function wait(milliseconds: number): Promise<string> {
return new Promise(resolve => {
if (isNaN(milliseconds)) {
throw new Error('milliseconds not a number')
}
setTimeout(() => resolve('done!'), milliseconds)
})
}

View File

@ -0,0 +1,12 @@
{
"compilerOptions": {
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"outDir": "./lib", /* Redirect output structure to the directory. */
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
"strict": true, /* Enable all strict type-checking options. */
"noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
},
"exclude": ["node_modules", "**/*.test.ts"]
}

View File

@ -1,6 +1,6 @@
version: 2
updates:
- package-ecosystem: maven
- package-ecosystem: gradle
directory: /
schedule:
interval: daily

55
.github/labeler.yml vendored Normal file
View File

@ -0,0 +1,55 @@
'm:release':
- changed-files:
- any-glob-to-any-file:
- 'CHANGELOG.md'
- 'gradle.properties'
'm:docs':
- changed-files:
- any-glob-to-any-file:
- '*.md'
- 'docs/**/*'
'm:workflow':
- changed-files:
- any-glob-to-any-file:
- .github/**
'm:gradle':
- changed-files:
- any-glob-to-any-file:
- 'gradle*'
- 'gradle/**'
- '**/settings.gradle.*'
- '**/build.gradle.*'
- 'sjpp.jar'
'm:source':
- changed-files:
- any-glob-to-any-file:
- 'skin/**/*'
- 'src/**/*'
- 'stdlib/**/*'
- 'svg/**/*'
- 'themes/**/*'
- 'manifest.txt'
'm:test':
- changed-files:
- any-glob-to-any-file:
- 'test/**/*'
'm:license':
- changed-files:
- any-glob-to-any-file:
- '**/*license.txt'
'm:docker':
- changed-files:
- any-glob-to-any-file:
- Dockerfile
'm:native':
- changed-files:
- any-glob-to-any-file:
- .github/workflows/native-image.yml

87
.github/scripts/release-snapshot.sh vendored Executable file
View File

@ -0,0 +1,87 @@
#!/usr/bin/env bash
set -ex
find . -name "*.jar"
find . -name "*.asc"
TAG="snapshot"
DATE_TIME_UTC=$(date -u +"%F at %T (UTC)")
gh release delete "${TAG}" -y || true
git tag --force "${TAG}"
git push --force origin "${TAG}"
mkdir "github_release"
cp "build/publications/maven/module.json" "github_release/plantuml-SNAPSHOT-module.json"
cp "build/publications/maven/pom-default.xml" "github_release/plantuml-SNAPSHOT.pom"
cp "build/libs/plantuml-${RELEASE_VERSION}.jar" "github_release/plantuml-SNAPSHOT.jar"
cp "build/libs/plantuml-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-SNAPSHOT-javadoc.jar"
cp "build/libs/plantuml-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-SNAPSHOT-sources.jar"
cp "build/libs/plantuml-pdf-${RELEASE_VERSION}.jar" "github_release/plantuml-pdf-SNAPSHOT.jar"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}.jar" "github_release/plantuml-asl-SNAPSHOT.jar"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-asl-SNAPSHOT-javadoc.jar"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-asl-SNAPSHOT-sources.jar"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}.jar" "github_release/plantuml-bsd-SNAPSHOT.jar"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-bsd-SNAPSHOT-javadoc.jar"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-bsd-SNAPSHOT-sources.jar"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}.jar" "github_release/plantuml-epl-SNAPSHOT.jar"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-epl-SNAPSHOT-javadoc.jar"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-epl-SNAPSHOT-sources.jar"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}.jar" "github_release/plantuml-lgpl-SNAPSHOT.jar"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-lgpl-SNAPSHOT-javadoc.jar"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-lgpl-SNAPSHOT-sources.jar"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}.jar" "github_release/plantuml-mit-SNAPSHOT.jar"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-mit-SNAPSHOT-javadoc.jar"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-mit-SNAPSHOT-sources.jar"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}.jar" "github_release/plantuml-gplv2-SNAPSHOT.jar"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-gplv2-SNAPSHOT-javadoc.jar"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-gplv2-SNAPSHOT-sources.jar"
if [[ -e "build/publications/maven/module.json.asc" ]]; then
# signatures are optional so that forked repos can release snapshots without needing a gpg signing key
cp "build/publications/maven/module.json.asc" "github_release/plantuml-SNAPSHOT-module.json.asc"
cp "build/publications/maven/pom-default.xml.asc" "github_release/plantuml-SNAPSHOT.pom.asc"
cp "build/libs/plantuml-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-SNAPSHOT.jar.asc"
cp "build/libs/plantuml-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-SNAPSHOT-javadoc.jar.asc"
cp "build/libs/plantuml-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-SNAPSHOT-sources.jar.asc"
cp "build/libs/plantuml-pdf-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-pdf-SNAPSHOT.jar.asc"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-asl-SNAPSHOT.jar.asc"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-asl-SNAPSHOT-javadoc.jar.asc"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-asl-SNAPSHOT-sources.jar.asc"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-bsd-SNAPSHOT.jar.asc"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-bsd-SNAPSHOT-javadoc.jar.asc"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-bsd-SNAPSHOT-sources.jar.asc"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-epl-SNAPSHOT.jar.asc"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-epl-SNAPSHOT-javadoc.jar.asc"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-epl-SNAPSHOT-sources.jar.asc"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-lgpl-SNAPSHOT.jar.asc"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-lgpl-SNAPSHOT-javadoc.jar.asc"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-lgpl-SNAPSHOT-sources.jar.asc"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-mit-SNAPSHOT.jar.asc"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-mit-SNAPSHOT-javadoc.jar.asc"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-mit-SNAPSHOT-sources.jar.asc"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-gplv2-SNAPSHOT.jar.asc"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-gplv2-SNAPSHOT-javadoc.jar.asc"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-gplv2-SNAPSHOT-sources.jar.asc"
fi
echo -n "${DATE_TIME_UTC}" > "github_release/plantuml-SNAPSHOT.timestamp"
cat <<-EOF >notes.txt
## Version ~v${RELEASE_VERSION%-SNAPSHOT} of the ${DATE_TIME_UTC}
This is a pre-release of [the latest development work](https://github.com/plantuml/plantuml/commits/).
⚠️ **It is not ready for general use** ⚠️
⏱ _Snapshot taken the ${DATE_TIME_UTC}_
EOF
gh release create \
--prerelease \
--target "${GITHUB_SHA}" \
--title "${TAG} (~v${RELEASE_VERSION%-SNAPSHOT})" \
--notes-file notes.txt \
"${TAG}" github_release/*
echo "::notice title=release snapshot::Snapshot (~v${RELEASE_VERSION%-SNAPSHOT}) released at ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/tag/${TAG} and taken the ${DATE_TIME_UTC}"

View File

@ -1,13 +1,68 @@
#!/usr/bin/env bash
set -ex
mv plantuml.jar "plantuml-${POM_VERSION}.jar"
mv plantuml-javadoc.jar "plantuml-${POM_VERSION}-javadoc.jar"
mv plantuml-sources.jar "plantuml-${POM_VERSION}-sources.jar"
find . -name "*.jar"
find . -name "*.asc"
gh release create --target "${GITHUB_SHA}" "${TAG}" \
"plantuml-${POM_VERSION}.jar" \
"plantuml-${POM_VERSION}-javadoc.jar" \
"plantuml-${POM_VERSION}-sources.jar"
mkdir "github_release"
cp "build/libs/plantuml-${RELEASE_VERSION}.jar" "github_release/plantuml.jar"
cp "build/libs/plantuml-${RELEASE_VERSION}.jar" "github_release/plantuml-${RELEASE_VERSION}.jar"
cp "build/libs/plantuml-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-${RELEASE_VERSION}-javadoc.jar"
cp "build/libs/plantuml-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-${RELEASE_VERSION}-sources.jar"
cp "build/libs/plantuml-pdf-${RELEASE_VERSION}.jar" "github_release/plantuml-pdf-${RELEASE_VERSION}.jar"
#cp "build/libs/plantuml-linux-amd64-${RELEASE_VERSION}" "github_release/plantuml-linux-amd64-${RELEASE_VERSION}"
#cp "build/libs/plantuml-darwin-amd64-${RELEASE_VERSION}" "github_release/plantuml-darwin-amd64-${RELEASE_VERSION}"
#cp "build/libs/plantuml-win-amd64-${RELEASE_VERSION}.exe" "github_release/plantuml-win-amd64-${RELEASE_VERSION}.exe"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}.jar" "github_release/plantuml-asl-${RELEASE_VERSION}.jar"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-asl-${RELEASE_VERSION}-javadoc.jar"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-asl-${RELEASE_VERSION}-sources.jar"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}.jar" "github_release/plantuml-bsd-${RELEASE_VERSION}.jar"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-bsd-${RELEASE_VERSION}-javadoc.jar"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-bsd-${RELEASE_VERSION}-sources.jar"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}.jar" "github_release/plantuml-epl-${RELEASE_VERSION}.jar"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-epl-${RELEASE_VERSION}-javadoc.jar"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-epl-${RELEASE_VERSION}-sources.jar"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}.jar" "github_release/plantuml-lgpl-${RELEASE_VERSION}.jar"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-lgpl-${RELEASE_VERSION}-javadoc.jar"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-lgpl-${RELEASE_VERSION}-sources.jar"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}.jar" "github_release/plantuml-mit-${RELEASE_VERSION}.jar"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-mit-${RELEASE_VERSION}-javadoc.jar"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-mit-${RELEASE_VERSION}-sources.jar"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}.jar" "github_release/plantuml-gplv2-${RELEASE_VERSION}.jar"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-javadoc.jar" "github_release/plantuml-gplv2-${RELEASE_VERSION}-javadoc.jar"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-sources.jar" "github_release/plantuml-gplv2-${RELEASE_VERSION}-sources.jar"
if [[ -e "build/publications/maven/module.json.asc" ]]; then
# signatures are optional so that forked repos can release snapshots without needing a gpg signing key
cp "build/libs/plantuml-${RELEASE_VERSION}.jar.asc" "github_release/plantuml.jar.asc"
cp "build/libs/plantuml-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-${RELEASE_VERSION}.jar.asc"
cp "build/libs/plantuml-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-${RELEASE_VERSION}-javadoc.jar.asc"
cp "build/libs/plantuml-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-${RELEASE_VERSION}-sources.jar.asc"
cp "build/libs/plantuml-pdf-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-pdf-${RELEASE_VERSION}.jar.asc"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-asl-${RELEASE_VERSION}.jar.asc"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-asl-${RELEASE_VERSION}-javadoc.jar.asc"
cp "plantuml-asl/build/libs/plantuml-asl-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-asl-${RELEASE_VERSION}-sources.jar.asc"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-bsd-${RELEASE_VERSION}.jar.asc"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-bsd-${RELEASE_VERSION}-javadoc.jar.asc"
cp "plantuml-bsd/build/libs/plantuml-bsd-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-bsd-${RELEASE_VERSION}-sources.jar.asc"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-epl-${RELEASE_VERSION}.jar.asc"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-epl-${RELEASE_VERSION}-javadoc.jar.asc"
cp "plantuml-epl/build/libs/plantuml-epl-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-epl-${RELEASE_VERSION}-sources.jar.asc"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-lgpl-${RELEASE_VERSION}.jar.asc"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-lgpl-${RELEASE_VERSION}-javadoc.jar.asc"
cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-lgpl-${RELEASE_VERSION}-sources.jar.asc"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-mit-${RELEASE_VERSION}.jar.asc"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-mit-${RELEASE_VERSION}-javadoc.jar.asc"
cp "plantuml-mit/build/libs/plantuml-mit-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-mit-${RELEASE_VERSION}-sources.jar.asc"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}.jar.asc" "github_release/plantuml-gplv2-${RELEASE_VERSION}.jar.asc"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-javadoc.jar.asc" "github_release/plantuml-gplv2-${RELEASE_VERSION}-javadoc.jar.asc"
cp "plantuml-gplv2/build/libs/plantuml-gplv2-${RELEASE_VERSION}-sources.jar.asc" "github_release/plantuml-gplv2-${RELEASE_VERSION}-sources.jar.asc"
fi
gh release create \
--target "${GITHUB_SHA}" \
--title "${TAG}" \
"${TAG}" github_release/*
echo "::notice title=::Released at ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/tag/${TAG} 🎉"

View File

@ -1,30 +0,0 @@
#!/usr/bin/env bash
set -ex
TAG="snapshot"
DATE_TIME_UTC=$(date -u +"%F at %T (UTC)")
gh release delete "${TAG}" -y || true
git tag --force "${TAG}"
git push --force origin "${TAG}"
mv plantuml.jar plantuml-SNAPSHOT.jar
mv plantuml-javadoc.jar plantuml-SNAPSHOT-javadoc.jar
mv plantuml-sources.jar plantuml-SNAPSHOT-sources.jar
echo -n "${DATE_TIME_UTC}" > plantuml-SNAPSHOT-timestamp.lock
cat <<-EOF >notes.txt
This is a pre-release of [the latest development work](https://github.com/plantuml/plantuml/commits/).
⚠️ **It is not ready for general use** ⚠️
⏱ _Snapshot taken the ${DATE_TIME_UTC}_
EOF
gh release create --prerelease --target "${GITHUB_SHA}" --title "${TAG}" --notes-file notes.txt "${TAG}" \
plantuml-SNAPSHOT.jar \
plantuml-SNAPSHOT-javadoc.jar \
plantuml-SNAPSHOT-sources.jar \
plantuml-SNAPSHOT-timestamp.lock
echo "::notice title=release snapshot::Snapshot released at ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/releases/tag/${TAG} and taken the ${DATE_TIME_UTC}"

23
.github/workflows/add-triage-label.yml vendored Normal file
View File

@ -0,0 +1,23 @@
# https://docs.github.com/en/actions/managing-issues-and-pull-requests/adding-labels-to-issues
name: Label issues
on:
issues:
types:
- reopened
- opened
jobs:
label_issues:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- uses: actions/github-script@v7
with:
script: |
github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ["triage"]
})

View File

@ -26,7 +26,13 @@ jobs:
do_release: ${{ steps.config.outputs.do_release }}
do_snapshot_release: ${{ steps.config.outputs.do_snapshot_release }}
pom_version: ${{ steps.config.outputs.pom_version }}
do_javadoc: ${{ steps.config.outputs.do_javadoc }}
do_test_linux: ${{ steps.config.outputs.do_test_linux }}
do_test_windows: ${{ steps.config.outputs.do_test_windows }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Configure workflow
id: config
env:
@ -48,100 +54,287 @@ jobs:
# Do a release when a git tag starting with 'v' has been created by a suitable user.
# (We match against github.repository_owner as a kludge so that forked repos can release themselves when testing the workflow)
if [[ "${GITHUB_EVENT_NAME}" == "create" && "${REF_TYPE}" == "tag" && "${REF}" == v* && \
( "${ACTOR}" == "arnaudroques" || "${ACTOR}" == "${GITHUB_REPOSITORY_OWNER}" ) \
]]; then
echo "::notice title=::This run will release '${REF}'"
echo "::set-output name=do_release::true"
echo "::set-output name=pom_version::${REF#v}" # pom_version is the tag without the 'v' prefix
echo "do_release=true" >> $GITHUB_OUTPUT
echo "pom_version=${REF#v}"
echo "pom_version=${REF#v}" >> $GITHUB_OUTPUT # pom_version is the tag without the 'v' prefix
echo "do_javadoc=true" >> $GITHUB_OUTPUT
echo "This run will update the Javadoc"
elif [[ "${GITHUB_EVENT_NAME}" =~ push|workflow_dispatch && "${REF}" == "refs/heads/master" ]]; then
elif [[ "${GITHUB_EVENT_NAME}" =~ push|workflow_dispatch && "${REF}" == "refs/heads/master" && "${ACTOR}" == "arnaudroques" ]]; then
echo "::notice title=::This run will release a snapshot"
echo "::set-output name=do_snapshot_release::true"
echo "do_snapshot_release=true" >> $GITHUB_OUTPUT
V=$(perl -ne 'if (/return (\d{6,7});/) {$v=$1} if (/final int beta = (\d+);/) {$b=$1} END{print(substr($v, 0, 1),".", substr($v, 1, 4),"."); if ($b) {print(int(substr($v+1, 5)), "beta", $b);} else {print(int(substr($v, 5)))}}' src/net/sourceforge/plantuml/version/Version.java)
echo "pom_version=$V-SNAPSHOT"
echo "pom_version=$V-SNAPSHOT" >> $GITHUB_OUTPUT # pom_version is taken from Version.java
echo "do_javadoc=true" >> $GITHUB_OUTPUT
echo "This run will update the Javadoc"
else
echo "This run will NOT make a release"
echo "do_javadoc=false" >> $GITHUB_OUTPUT
echo "This run will NOT update the Javadoc"
fi
echo "do_test_linux=true" >> $GITHUB_OUTPUT
echo "do_test_windows=false" >> $GITHUB_OUTPUT
# We run the tests on many OS / Java combinations but also the Compile step because some users build
# their own jars from source, so it is good for CI to check that is working on all combinations.
build:
# We split windows and ubuntu because windows is so slow...
test_linux:
needs: workflow_config
strategy:
fail-fast: false
matrix:
java_version: [ 8, 11, 17 ]
os: [ macos-10.15, macos-11, ubuntu-18.04, ubuntu-20.04, windows-2019, windows-2022 ]
include:
- release_from_this_build: true
os: ubuntu-20.04
java_version: 8
java_version: [ 8, 17 ]
os: [ ubuntu-latest ]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout the repository
uses: actions/checkout@v2
if: needs.workflow_config.outputs.do_test_linux == 'true'
uses: actions/checkout@v4
- name: Set up java
uses: actions/setup-java@v2.3.1
if: needs.workflow_config.outputs.do_test_linux == 'true'
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java_version }}
distribution: temurin
cache: maven
# Downloading all the dependencies is very log spammy, so we do this in its own step.
- name: Prime maven cache
run: mvn --batch-mode dependency:go-offline
# POM version is usually a -SNAPSHOT at this point, if this is a release then we use the version derived from the tag
- name: Set POM version
if: needs.workflow_config.outputs.do_release == 'true'
env:
POM_VERSION: ${{ needs.workflow_config.outputs.pom_version }}
run: mvn --batch-mode versions:set "-DnewVersion=${POM_VERSION}"
cache: gradle
# Compile / Test / Package are separate steps so the reason for any failure is more obvious in GitHub UI
- name: Compile
run: mvn --batch-mode compile
if: needs.workflow_config.outputs.do_test_linux == 'true'
run: gradle -q compileJava --no-daemon
- name: Test
run: mvn --batch-mode test
if: needs.workflow_config.outputs.do_test_linux == 'true'
run: gradle test --no-daemon -i
- name: Package
if: matrix.release_from_this_build
run: mvn --batch-mode -DfinalName=plantuml -Dmaven.test.skip=true package
- name: Upload jar artifacts
if: matrix.release_from_this_build
uses: actions/upload-artifact@v2
- name: Upload test reports
uses: actions/upload-artifact@v4
if: needs.workflow_config.outputs.do_test_linux == 'true'
with:
# Using github.run_number here to reduce confusion when downloading & comparing artifacts from several builds
name: ${{ github.run_number }}-jars
path: target/*.jar
# Using github.run_number here to reduce confusion when downloading & comparing from several builds
name: ${{ github.run_number }}-${{ matrix.os }}-java-${{ matrix.java_version }}-test-reports
path: build/reports/tests/
release:
needs: [ workflow_config, build ]
if: needs.workflow_config.outputs.do_release == 'true' || needs.workflow_config.outputs.do_snapshot_release == 'true'
build_artifacts:
needs: [ workflow_config ]
runs-on: ubuntu-latest
outputs:
release_version: ${{ steps.version.outputs.release_version }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Set up java
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
cache: gradle
# - name: Set version in gradle.properties
# if: env.POM_VERSION
# env:
# POM_VERSION: ${{ needs.workflow_config.outputs.pom_version }}
# run: |
# sed -i "s/version = .*/version = $POM_VERSION/" gradle.properties
# cat gradle.properties
- name: Generate artifacts
run: |
echo "print gradle.properties"
cat gradle.properties
gradle clean build \
pdfJar \
generateMetadataFileForMavenPublication generatePomFileForMavenPublication \
-x test
find . -name "*.jar"
- name: Sign artifacts
if: env.ORG_GRADLE_PROJECT_signingKey
env:
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ARTIFACT_SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ARTIFACT_SIGNING_PASSPHRASE }}
run: |
gradle -i signMavenPublication signPdfJar
ls -l build/libs
ls -l plantuml-asl/build/libs
ls -l plantuml-bsd/build/libs
ls -l plantuml-epl/build/libs
ls -l plantuml-lgpl/build/libs
ls -l plantuml-mit/build/libs
ls -l plantuml-gplv2/build/libs
- name: Get release version
id: version
run: |
echo "release_version=$(gradle properties -q | grep "version:" | awk '{print $2}')" >> $GITHUB_OUTPUT
- name: Cache libs
uses: actions/cache/save@v4
with:
path: |
build/libs
build/publications
plantuml-asl/build/libs
plantuml-bsd/build/libs
plantuml-epl/build/libs
plantuml-lgpl/build/libs
plantuml-mit/build/libs
plantuml-gplv2/build/libs
key: "libs-${{ github.run_id }}"
enableCrossOsArchive: true
deploy_javadoc:
needs: [ build_artifacts, test_linux ]
if: needs.workflow_config.outputs.do_javadoc == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Download jar artifacts
uses: actions/download-artifact@v2
- name: Set up java
uses: actions/setup-java@v4
with:
name: ${{ github.run_number }}-jars
java-version: 17
distribution: temurin
- name: Create snapshot release
- name: Build Javadoc
run: gradle javadoc
- name: Deploy Javadoc to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build/docs/javadoc
upload:
if: |
needs.workflow_config.outputs.do_release == 'true' ||
needs.workflow_config.outputs.do_snapshot_release == 'true'
needs: [ workflow_config, build_artifacts, test_linux ]
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Set up java
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin
cache: gradle
- name: Restore Libs cache
uses: actions/cache/restore@v4
with:
path: |
build/libs
build/publications
plantuml-asl/build/libs
plantuml-bsd/build/libs
plantuml-epl/build/libs
plantuml-lgpl/build/libs
plantuml-mit/build/libs
plantuml-gplv2/build/libs
key: "libs-${{ github.run_id }}"
fail-on-cache-miss: true
enableCrossOsArchive: true
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
# Using github.run_number here to reduce confusion when downloading & comparing artifacts from several builds
name: ${{ github.run_number }}-artifacts
path: |
build/libs/*
build/publications/maven/*
plantuml-asl/build/libs
plantuml-bsd/build/libs
plantuml-epl/build/libs
plantuml-lgpl/build/libs
plantuml-mit/build/libs
plantuml-gplv2/build/libs
- name: Create snapshot
if: needs.workflow_config.outputs.do_snapshot_release == 'true'
env:
RELEASE_VERSION: ${{ needs.build_artifacts.outputs.RELEASE_VERSION }}
GITHUB_TOKEN: ${{ github.token }}
run: .github/scripts/release_snapshot.sh
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
#do not remove signing key and password or signatures will not be published
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ARTIFACT_SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ARTIFACT_SIGNING_PASSPHRASE }}
run: |
echo "print gradle.properties"
cat gradle.properties
echo "RELEASE_VERSION=$RELEASE_VERSION"
.github/scripts/release-snapshot.sh
- name: Create release in GitHub
- name: Create release in GitHub and OSSRH
if: needs.workflow_config.outputs.do_release == 'true'
env:
RELEASE_VERSION: ${{ needs.build_artifacts.outputs.RELEASE_VERSION }}
GITHUB_TOKEN: ${{ github.token }}
POM_VERSION: ${{ needs.workflow_config.outputs.pom_version }}
TAG: ${{ github.event.ref }}
run: .github/scripts/release.sh
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
#do not remove signing key and password or signatures will not be published
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ARTIFACT_SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ARTIFACT_SIGNING_PASSPHRASE }}
run: |
echo "print gradle.properties"
cat gradle.properties
echo "RELEASE_VERSION=$RELEASE_VERSION"
.github/scripts/release.sh
gradle --debug publish
push_to_docker_registry:
needs: [ workflow_config, upload, test_linux ]
if: needs.workflow_config.outputs.do_release == 'true'
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
# list of Docker images to use as base name for tags
images: |
${{ github.repository }}
ghcr.io/${{ github.repository }}
# generate Docker tags based on the following events/attributes
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Log into Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Log in to GitHub Docker Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build/push container image
uses: docker/build-push-action@v5
with:
context: .
push: true
build-args: |
PLANTUML_VERSION=${{ github.event.ref }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64

View File

@ -0,0 +1,31 @@
on:
issues:
types: [labeled]
jobs:
close-and-put-in-backlog:
if: github.event.label.name == 'p:backlog'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
const welcomeMessage = `
Your issue is now part of the official [backlog](https://github.com/orgs/plantuml/projects/4).
For technical reason, it has been put at close state but it's really still open for us.
You can by the way go on and put any comment in this issue.
The main reason why we put this issue in the backlog is that we try to group issues together so that we fix them together, as similar issues often impact the same code area.
Please be patient, but stay tuned! 🙂`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: welcomeMessage
})
- uses: peter-evans/close-issue@v3
- uses: actions/add-to-project@v0.5.0
with:
project-url: https://github.com/orgs/plantuml/projects/4
github-token: ${{ secrets.ADD_TO_PROJECT_PAT }}

12
.github/workflows/labeler.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: "Pull Request Labeler"
on:
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5

64
.github/workflows/native-image.yml vendored Normal file
View File

@ -0,0 +1,64 @@
name: Native Image
on:
workflow_call:
inputs:
release-version:
required: true
type: string
jobs:
build_non_win_images:
name: 'Build Native Image ${{ matrix.platform }}'
strategy:
matrix:
os: [ macos-latest, windows-latest, ubuntu-latest ]
include:
- os: 'ubuntu-latest'
platform: 'linux-amd64'
- os: 'macos-latest'
platform: 'darwin-amd64'
- os: 'windows-latest'
platform: 'win-amd64'
runs-on: ${{matrix.os}}
steps:
- name: Checkout the repository
uses: actions/checkout@v4
- uses: graalvm/setup-graalvm@v1
with:
version: '22.3.1'
java-version: '17'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/cache/restore@v4
with:
path: |
build/libs
build/publications
plantuml-asl/build/libs
plantuml-bsd/build/libs
plantuml-epl/build/libs
plantuml-lgpl/build/libs
plantuml-mit/build/libs
plantuml-gplv2/build/libs
key: "libs-${{ github.run_id }}"
fail-on-cache-miss: true
enableCrossOsArchive: true
- name: Generate GraalVM configuration
run: |
mkdir native-image-config-dir
echo 'Bob->Alice: Hello' | java -agentlib:native-image-agent=config-output-dir=native-image-config-dir -jar "./build/libs/plantuml-${{ inputs.release-version }}.jar" -tpng -pipe > out.png
- name: Generate native image
run: |
native-image -H:ConfigurationFileDirectories=native-image-config-dir --no-fallback --report-unsupported-elements-at-runtime -jar "build/libs/plantuml-${{ inputs.release-version }}.jar" -H:Path="build/libs" -H:Name="plantuml-${{ matrix.platform }}-${{ inputs.release-version }}"
- name: Cache native image
uses: actions/cache/save@v4
with:
path: "build/libs/plantuml-${{ matrix.platform }}-*"
key: "native-image-${{ matrix.platform }}-${{ github.run_id }}"
enableCrossOsArchive: true

View File

@ -0,0 +1,19 @@
name: Testing workflow config action
on:
workflow_dispatch:
push:
pull_request:
release:
jobs:
testing-workflow-config:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: configure workflow
uses: ./.github/actions/configure-workflow
id: config
with:
milliseconds: 3000

7
.gitignore vendored
View File

@ -7,12 +7,19 @@
*.iml
out
#vscode files
**/bin/
# Ant result file
plantuml.jar
# Maven target folder
target/
# Gradle build folders
/.gradle
build/
# Eclipse Project files
.settings/
.classpath

143
BUILDING.md Normal file
View File

@ -0,0 +1,143 @@
# 🚧 Building PlantUML
Thank you for your interest in contributing to PlantUML! This guide will help you build the PlantUML project.
PlantUML can be built using either [Gradle](#-building-plantuml-with-gradle) or [Ant](#-building-plantuml-with-ant-alternative-method). It's recommended to use Gradle as the primary build tool for this project. You will find instructions for both methods, starting with Gradle.
## ☕ Java Compatibility and Development Notes
### PlantUML & Java 8 Compatibility
We understand the ubiquity and prevalence of Java 8 in numerous environments and infrastructures. Thus, **PlantUML remains steadfastly compatible with Java 8**. Despite the versions age and the availability of newer releases, we recognize that a substantial number of users and enterprises still depend on Java 8. Therefore, you can confidently run PlantUML in environments where Java 8 is installed, ensuring accessibility and functionality for a wide array of users.
### Unitary Tests & Dependency Management
PlantUML consistently retains compatibility with Java 8 in its main library, ensuring a broad usability spectrum. However, the perspective slightly shifts when it comes to our development and testing environments, especially concerning dependency management and Java version utilization.
In the unitary testing environment:
- **Additional Dependencies**: To streamline and simplify unitary tests, we are open to incorporating dependencies on other libraries, ensuring that our testing is thorough, simplified, and efficient.
This means:
- **For Users**: PlantUML is crafted to compile and operate flawlessly with Java 8, offering a stable experience without the imperative of upgrading your Java environment.
- **For Contributors/Developers**: When engaging in unitary testing, be mindful that it involves additional dependencies for efficient testing processes. However, rest assured that the main library of PlantUML consciously avoids external dependencies to maintain its lightweight and easy-to-integrate nature, while still ensuring compatibility with Java 8.
### Your Contribution Matters
Whether you're using an old or a new version of Java, your feedback, contributions, and insights are valuable in enhancing PlantUML. We strive to maintain a balance between adopting new technology and ensuring accessibility for all users, and your experiences aid us in striking this balance effectively.
## 🎓 Building PlantUML with Gradle
### Prerequisites
Ensure that you have the following installed on your system:
- [Java Development Kit (JDK)](https://jdk.java.net/) - version 8 or newer
- [Gradle](https://gradle.org/install/) - version 7.0 or newer
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - to clone the repository and manage the version control
### Getting the Source Code
Clone the PlantUML repository to your local system. You can clone the repository by running the following command in your terminal or command prompt:
```sh
git clone https://github.com/plantuml/plantuml.git
```
Navigate to the project root directory:
```sh
cd plantuml
```
### Building the Project
To build the project, run the following command from the project root directory:
```sh
gradle build
```
This command will build the project and create the necessary output files in the `build` directory.
### Running Tests
To run the tests included with the project, use the following command:
```sh
gradle test
```
### Creating a JAR File
To create a JAR file of the PlantUML project, run the following command:
```sh
gradle jar
```
The JAR file will be created in the `build/libs` directory.
### Contributing
After successfully building the project, you are ready to start contributing to PlantUML! If you have any changes to contribute, please submit a pull request through the [PlantUML GitHub repository](https://github.com/plantuml/plantuml).
### Additional Resources
- [PlantUML Official Website](https://plantuml.com/)
- [Gradle User Guide](https://docs.gradle.org/current/userguide/userguide.html)
- [Java Development Kit (JDK) Documentation](https://docs.oracle.com/javase/11/)
### Getting Help
If you encounter any issues while building the project, feel free to ask for help on the [PlantUML Community Forum](https://forum.plantuml.net/) or open an issue on the [GitHub repository](https://github.com/plantuml/plantuml/issues).
Thank you for contributing to PlantUML!
## 🐜 Building PlantUML with Ant (Alternative Method)
For those who prefer using Ant, or only have access to Ant, we provide a `build.xml` Ant build script as a fallback option to build PlantUML.
### Prerequisites
Ensure that you have the following installed on your system:
- [Java Development Kit (JDK)](https://jdk.java.net/) - version 8 or newer
- [Apache Ant](https://ant.apache.org/bindownload.cgi) - to run the build script
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - to clone the repository and manage the version control
### Getting the Source Code
Clone the PlantUML repository to your local system. You can clone the repository by running the following command in your terminal or command prompt:
```sh
git clone https://github.com/plantuml/plantuml.git
```
Navigate to the directory containing the `build.xml`:
```sh
cd plantuml
```
### Building the Project
To build the project using Ant, run the following command:
```sh
ant
```
If you have Ant set up correctly and the prerequisites are met, the build process should start, and the project will be built based on the instructions in the `build.xml`.
## 📦 About the `graphviz.dat` file
Within certain PlantUML releases, we've incorporated an embedded, compiled version of GraphViz specifically tailored for Windows. This initiative was taken to streamline the user experience for our Windows users, eliminating the need for them to undertake separate installations or configurations.
This version of GraphViz is a product of the [graphviz-distributions project](https://github.com/plantuml/graphviz-distributions). For efficient distribution, it is compressed using Brotli and subsequently stored within the [graphviz.dat file](https://github.com/plantuml/plantuml/tree/master/src/net/sourceforge/plantuml/windowsdot).
If you're not on a Windows platform (e.g., Linux users), you can safely remove this file. However, for Windows users, removing it implies you'd need to install GraphViz independently.
To streamline our distribution process and given the existing six PlantUML versions resulting from varied licensing, we chose not to double this count to 12 with a dichotomy of versions containing the embedded GraphViz and those without. Instead, all our distributions, barring the LGPL one, come with the embedded GraphViz. For those who prefer a version without the embedded GraphViz, the LGPL distribution would be the go-to choice.

7
CITATION.cff Normal file
View File

@ -0,0 +1,7 @@
cff-version: 1.2.0
authors:
- family-names: "Roques"
given-names: "Arnaud"
- family-names: "PlantUML Contributors"
title: "PlantUML Software"
url: "https://github.com/plantuml/plantuml"

99
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,99 @@
# Contributing to PlantUML
## I Have a Question
> If you want to ask a question, we assume that you have read the available [Documentation](https://plantuml.com).
Before you ask a question, it is best to search for
existing issues [on github](https://github.com/plantuml/plantuml/issues)
or on [the online forum](https://forum.plantuml.net)
that might help you.
In case you have found a suitable issue and still need clarification, you can write your question in this issue.
It is also advisable to search the internet for answers first.
If you then still feel the need to ask a question and need clarification, we recommend the following:
- Open an issue [on github](https://github.com/plantuml/plantuml/issues/new) or on the
[the online forum](https://forum.plantuml.net/ask).
- Provide as much context as you can about what you're running into.
- Provide a short example that shows the issue.
- Provide which version you are using and if you are using PlantUML through a plugin.
We will then take care of the issue as soon as possible.
## I Want To Contribute
### Reporting Bugs
#### Before Submitting a Bug Report
A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible.
- Make sure that you are using the latest version.
- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue.
#### How Do I Submit a Good Bug Report?
We use GitHub issues to track bugs and errors. If you run into an issue with the project:
Before you ask a question, it is best to search for
existing issues [on github](https://github.com/plantuml/plantuml/issues)
or on [the online forum](https://forum.plantuml.net)
- Open an issue [on github](https://github.com/plantuml/plantuml/issues)
or on [the online forum](https://forum.plantuml.net).
- Explain the behavior you would expect and the actual behavior.
- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code.
- For good bug reports you should isolate the problem and create a reduced test case.
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion for
PlantUML, **including completely new features and minor improvements to existing functionality**. Following
these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.
#### Before Submitting an Enhancement
- Make sure that you are using the latest version.
- Read the [documentation](https://plantuml.com) carefully and find out if the functionality is already covered, maybe by an individual configuration.
- Perform some search [on github issue](https://github.com/plantuml/plantuml/issues) or [on the online forum](https://forum.plantuml.net) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library.
#### How Do I Submit a Good Enhancement Suggestion?
- Use a **clear and descriptive title** for the issue to identify the suggestion.
- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you.
- You may want to **include some existing diagram examples** that would help to understand the suggestion.
- **Explain why this enhancement would be useful** to most PlantUML users. You may also want to point out the other projects that solved it better and which could serve as inspiration.
### Your First Code Contribution
<!-- TODO
include Setup of env, IDE and typical getting started instructions?
-->
### Improving The Documentation
<!-- TODO
Updating, improving and correcting the documentation
-->
### Improving non regression testing
<!-- TODO
-->
## Styleguides
### Commit Messages
<!-- TODO
-->

50
CONVENTIONAL_COMMIT.md Normal file
View File

@ -0,0 +1,50 @@
# Conventional Commit
IMPORTANT: *This is a draft*
The [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/#summary) is a lightweight
convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history.
### Commit Message Format
Each commit message consists of a **header**, an **optional URL list** , an **optional body** and an **optional
footer**.
The header has a
special format that includes a **type**, a **scope** and a **subject**:
```
<type>[optional scope]: <description>
[optional URL list]
[optional body]
[optional footer(s)]
```
The **header** is mandatory and the **scope** of the header is optional.
The **optional URL list** contains some links to github issue or to the forum and documents which issues
or features is concerned by this commit.
### Type
Must be one of the following:
* **feat**: A new feature
* **fix**: A bug fix
* **docs**: Documentation only changes
* **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing
semi-colons, etc)
* **refactor**: A code change that neither fixes a bug nor adds a feature
* **perf**: A code change that improves performance
* **test**: Adding missing or correcting existing test
* **chore**: Changes to the build process or auxiliary tools and libraries such as documentation
generation
### Scope
### Subject
The subject contains succinct description of the change:
* use the imperative, present tense: "change" not "changed" nor "changes"
* don't capitalize first letter
* no dot (.) at the end

30
Dockerfile Normal file
View File

@ -0,0 +1,30 @@
FROM alpine:latest AS loader
ARG PLANTUML_VERSION
RUN apk add --no-cache \
wget \
ca-certificates
RUN wget \
"https://github.com/plantuml/plantuml/releases/download/${PLANTUML_VERSION}/plantuml-${PLANTUML_VERSION#?}.jar" \
-O /opt/plantuml.jar
FROM eclipse-temurin:17-jre-jammy
ENV LANG en_US.UTF-8
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
graphviz \
fonts-dejavu \
&& apt-get autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --from=loader /opt/plantuml.jar /opt/plantuml.jar
WORKDIR /data
ENTRYPOINT ["java", "-jar", "/opt/plantuml.jar"]
CMD ["-version"]

124
README.md
View File

@ -1,58 +1,108 @@
PlantUML
========
# 🌱 PlantUML
Generate UML diagrams from textual descriptions.
[![Discord server](https://img.shields.io/discord/1083727021328306236?color=5865F2&logo=discord&logoColor=white)](https://discord.gg/sXhzexAQGh)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/plantuml?logo=github)](https://github.com/sponsors/plantuml/)
[![GitHub Org's stars](https://img.shields.io/github/stars/plantuml)](https://github.com/plantuml/plantuml/stargazers/)
[![GitHub watchers](https://img.shields.io/github/watchers/plantuml/plantuml)](https://github.com/plantuml/plantuml/watchers/)
[![GitHub contributors](https://img.shields.io/github/contributors-anon/plantuml/plantuml?color=blue)](https://github.com/plantuml/plantuml/graphs/contributors)
[![GitHub forks](https://img.shields.io/github/forks/plantuml/plantuml)](https://github.com/plantuml/plantuml/network/)
[![GitHub all releases](https://img.shields.io/sourceforge/dt/plantuml?color=blue)](https://github.com/plantuml/plantuml/releases)
[![online](https://img.shields.io/endpoint?url=https://www.plantuml.com/plantuml/badge)](https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000)
[![rate](https://img.shields.io/endpoint?url=https://www.plantuml.com/plantuml/rate)](https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000)
[![peak](https://img.shields.io/endpoint?url=https://www.plantuml.com/plantuml/rate?peak)](https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000)
[![online](https://img.shields.io/endpoint?url=https://www.plantuml.com/plantuml/badge)](https://www.plantuml.com/plantuml)
[![rate](https://img.shields.io/endpoint?url=https://www.plantuml.com/plantuml/rate)](https://www.plantuml.com/plantuml)
[![peak](https://img.shields.io/endpoint?url=https://www.plantuml.com/plantuml/rate?peak)](https://www.plantuml.com/plantuml)
[![Release (latest by date)](https://img.shields.io/github/v/release/plantuml/plantuml)](https://github.com/plantuml/plantuml/releases/latest)
[![Release Date](https://img.shields.io/github/release-date/plantuml/plantuml?color=blue)](https://github.com/plantuml/plantuml/releases/latest)
[![GitHub commits since latest release (by date)](https://img.shields.io/github/commits-since/plantuml/plantuml/latest)](https://github.com/plantuml/plantuml/commits/)
[![javadoc](https://javadoc.io/badge2/net.sourceforge.plantuml/plantuml-gplv2/javadoc.svg)](https://javadoc.io/doc/net.sourceforge.plantuml/plantuml-gplv2)
[![Pre-release (latest by date)](https://img.shields.io/github/v/release/plantuml/plantuml?color=chocolate&include_prereleases)](https://github.com/plantuml/plantuml/releases/tag/snapshot)
[![Pre-release Date](https://img.shields.io/github/release-date-pre/plantuml/plantuml?color=chocolate)](https://github.com/plantuml/plantuml/releases/tag/snapshot)
[![GitHub last commit](https://img.shields.io/github/last-commit/plantuml/plantuml?color=chocolate)](https://github.com/plantuml/plantuml/commits/)
[![CI](https://github.com/plantuml/plantuml/actions/workflows/ci.yml/badge.svg?color=chocolate)](https://github.com/plantuml/plantuml/actions/workflows/ci.yml)
[![snapshot javadoc](https://img.shields.io/badge/javadoc-snapshot-chocolate.svg?logo=github)](https://plantuml.github.io/plantuml/)
Generate UML diagram from textual description
> [!IMPORTANT]
> [PlantUML is **not** affected by the log4j vulnerability.](https://github.com/plantuml/plantuml/issues/826)
PlantUML is a component that allows to quickly write:
## About
* [Sequence diagram](http://plantuml.com/sequence-diagram),
* [Use case diagram](http://plantuml.com/use-case-diagram),
* [Class diagram](http://plantuml.com/class-diagram),
* [Object diagram](http://plantuml.com/object-diagram),
* [Activity diagram](http://plantuml.com/activity-diagram-beta) (here is [the legacy syntax](http://plantuml.com/activity-diagram-legacy)),
* [Component diagram](http://plantuml.com/component-diagram),
* [Deployment diagram](http://plantuml.com/deployment-diagram),
* [State diagram](http://plantuml.com/state-diagram),
* [Timing diagram](http://plantuml.com/timing-diagram).
The following non-UML diagrams are also supported:
* [JSON data](http://plantuml.com/json)
* [YAML data](http://plantuml.com/yaml)
* [Network diagram (nwdiag)](http://plantuml.com/nwdiag)
* [Wireframe graphical interface or UI mockups (salt)](http://plantuml.com/salt)
* [Archimate diagram](http://plantuml.com/archimate-diagram)
* [Specification and Description Language (SDL)](http://plantuml.com/activity-diagram-beta#sdl)
* [Ditaa diagram](http://plantuml.com/ditaa)
* [Gantt diagram](http://plantuml.com/gantt-diagram)
* [MindMap diagram](http://plantuml.com/mindmap-diagram)
* [Work Breakdown Structure diagram (WBS)](http://plantuml.com/wbs-diagram)
* [Mathematic with AsciiMath or JLaTeXMath notation](http://plantuml.com/ascii-math)
* [Entity Relationship diagram (IE/ER)](http://plantuml.com/ie-diagram)
PlantUML is a component that allows you to create various UML diagrams through simple textual descriptions. From sequence diagrams to deployment diagrams and beyond, PlantUML provides an easy way to create visual representations of complex systems.
Furthermore:
* [Hyperlinks and tooltips](http://plantuml.com/link)
* [Creole](http://plantuml.com/creole): rich text, emoticons, unicode, icons
* [OpenIconic icons](http://plantuml.com/openiconic)
* [Sprite icons](http://plantuml.com/sprite)
* [AsciiMath mathematical expressions](http://plantuml.com/ascii-math)
### 🗃️ Supported Diagram Types
- 🧩 UML Diagrams
- [Sequence diagram](http://plantuml.com/sequence-diagram)
- [Use case diagram](http://plantuml.com/use-case-diagram)
- [Class diagram](http://plantuml.com/class-diagram)
- [Object diagram](http://plantuml.com/object-diagram)
- [Activity diagram](http://plantuml.com/activity-diagram-beta)
- [Legacy syntax](http://plantuml.com/activity-diagram-legacy)
- [Component diagram](http://plantuml.com/component-diagram)
- [Deployment diagram](http://plantuml.com/deployment-diagram)
- [State diagram](http://plantuml.com/state-diagram)
- [Timing diagram](http://plantuml.com/timing-diagram)
- 📈 Non-UML Diagrams
- [JSON data](http://plantuml.com/json)
- [YAML data](http://plantuml.com/yaml)
- [EBNF (Extended Backus-Naur Form)](http://plantuml.com/ebnf)
- [Regex (Regular Expression)](http://plantuml.com/regex)
- [Network diagram (nwdiag)](http://plantuml.com/nwdiag)
- [Salt (Wireframe graphical interface or UI Mockups)](http://plantuml.com/salt)
- [Archimate diagram](http://plantuml.com/archimate-diagram)
- [SDL (Specification and Description Language)](http://plantuml.com/activity-diagram-beta#sdl)
- [Ditaa diagram](http://plantuml.com/ditaa)
- [Gantt diagram](http://plantuml.com/gantt-diagram)
- [Chronology diagram](http://plantuml.com/chronology-diagram)
- [MindMap diagram](http://plantuml.com/mindmap-diagram)
- [WBS (Work Breakdown Structure)](http://plantuml.com/wbs-diagram)
- [Mathematical Notations (AsciiMath, JLaTeXMath)](http://plantuml.com/ascii-math)
- Entity Relationship (ER) diagram
- [Information Engineering (IE) diagram](http://plantuml.com/ie-diagram)
- [Entity Relationship (ER) diagram (Chen's notation)](http://alphadoc.plantuml.com/doc/markdown/en/er-diagram)
### 📣 Additional Features
- [Hyperlinks and tooltips](http://plantuml.com/link)
- [Rich text (Creole) with emoticons, unicode, and icons](http://plantuml.com/creole)
- [OpenIconic icons](http://plantuml.com/openiconic)
- [Sprite icons](http://plantuml.com/sprite)
### 📖 Learn More
For a more detailed overview, visit [PlantUML Official Website](https://plantuml.com/).
## 🚀 Getting Started
Whether you're looking to use PlantUML as a standalone application or as a component in your own project, getting started is simple. Check out the official [PlantUML setup guide](https://plantuml.com/starting) for instructions on how to set up PlantUML on your system.
## ⚙️ Building from Source
To build PlantUML from source, you'll need to have certain prerequisites installed and follow a series of steps outlined in our build guide. Find detailed instructions in our [BUILDING.md](https://github.com/plantuml/plantuml/blob/master/BUILDING.md) file.
## 🧱 Contributing
PlantUML is an open-source project, and we welcome contributions of all kinds. Whether you're helping us fix bugs, improve the docs, or spread the word, we appreciate your support. See our [contributing guide](CONTRIBUTING.md) for more information on how to get started.
For comprehensive and detailed documentation on using PlantUML, refer to the [official Javadoc, available here](https://plantuml.github.io/plantuml/). Please note that this documentation is a work in progress and may not be complete.
## 🧑‍🤝‍🧑 Support and Community
- [GitHub issues](https://github.com/plantuml/plantuml/issues/)
- [Community Forum](https://forum.plantuml.net/)
## 📃 License
PlantUML is licensed under several licenses; you can choose the one that suits you best:
- [GPL license](https://www.gnu.org/licenses/gpl-3.0.html)
- [LGPL license](https://www.gnu.org/licenses/lgpl-3.0.html)
- [Apache license](https://www.apache.org/licenses/LICENSE-2.0)
- [Eclipse Public license](https://www.eclipse.org/legal/epl-2.0/)
- [MIT license](https://opensource.org/licenses/MIT)
For more information, please refer to the [PlantUML license FAQ](https://plantuml.com/en/faq#ddbc9d04378ee462) to help determine which license is appropriate for your use case.
To know more about PlantUML, please visit https://plantuml.com/

12
SECURITY.md Normal file
View File

@ -0,0 +1,12 @@
# Security Policy
## Reporting a Vulnerability
If you find any security concern, please send a mail to plantuml@gmail.com
with title **Security concern**.
We will then study the concern and will answer back by email.
Thanks!

12
attic.md Normal file
View File

@ -0,0 +1,12 @@
# Historical Code Archive
This document catalogs code that was previously part of PlantUML but has since been deprecated and removed due to its lack of use.
It serves as a historical reference to ensure we remember and understand past decisions.
- [logo language](https://github.com/plantuml/plantuml/tree/v1.2023.12/src/net/sourceforge/plantuml/logo)
- [basic language](https://github.com/plantuml/plantuml/tree/v1.2023.12/src/net/sourceforge/plantuml/jasic)
- [mjpeg export](https://github.com/plantuml/plantuml/tree/v1.2023.12/src/net/sourceforge/plantuml/mjpeg)
- [animation](https://github.com/plantuml/plantuml/tree/v1.2023.12/src/net/sourceforge/plantuml/anim)
- [ditherer quantization](https://github.com/plantuml/plantuml/tree/v1.2023.12/src/net/sourceforge/plantuml/quantization)
- [syntax suggestion](https://github.com/plantuml/plantuml/blob/v1.2023.12/src/net/sourceforge/plantuml/syntax/SyntaxChecker.java)
- [a first try of GraphViz abstraction](https://github.com/plantuml/plantuml/blob/v1.2023.12/src/net/sourceforge/plantuml/posimo)

193
build.gradle.kts Normal file
View File

@ -0,0 +1,193 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
println("Running build.gradle.kts")
println(project.version)
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
// id("com.adarshr.test-logger") version "3.2.0"
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("io.github.glytching:junit-extensions:2.6.0")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
if (JavaVersion.current().isJava8) {
testImplementation("org.mockito:mockito-core:4.+")
testImplementation("org.mockito:mockito-junit-jupiter:4.+")
} else {
testImplementation("org.mockito:mockito-core:5.+")
testImplementation("org.mockito:mockito-junit-jupiter:5.+")
}
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
"pdfRuntimeOnly"("org.apache.xmlgraphics:fop:2.9")
"pdfRuntimeOnly"("org.apache.xmlgraphics:batik-all:1.17")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("src")
}
resources {
srcDirs("src")
include("**/graphviz.dat")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
test {
java {
srcDirs("test")
}
resources {
srcDirs(".")
include("skin/**/*.skin")
include("themes/**/*.puml")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("manifest.txt")
}
from("skin") { into("skin") }
from("stdlib") { into("stdlib") }
from("svg") { into("svg") }
from("themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("The GNU General Public License")
url.set("http://www.gnu.org/licenses/gpl.txt")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
tasks.test {
doFirst {
println("Java Home:" + System.getProperty("java.home"));
println("Java Version: " + System.getProperty("java.version"));
}
useJUnitPlatform()
testLogging.showStandardStreams = true
}
val pdfJar by tasks.registering(Jar::class) {
group = "build" // OR for example, "build"
description = "Assembles a jar containing dependencies to create PDFs."
manifest.attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
val dependencies = configurations.runtimeClasspath.get().map(::zipTree)
from(dependencies)
with(tasks.jar.get())
archiveAppendix.set("pdf")
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
sign(closureOf<SignOperation> { sign(pdfJar.get()) })
}
}

View File

@ -1,35 +1,53 @@
<!--
========================================================================
PlantUML : a free UML diagram generator
========================================================================
(C) Copyright 2009-2017, Arnaud Roques
Project Info: http://plantuml.sourceforge.net
This file is part of PlantUML.
Original Author: Arnaud Roques
Script Author: Ilya V. Paramonov
<!--
========================================================================
PlantUML Build File
========================================================================
Product: PlantUML - A free UML diagram generator
Project Info: https://plantuml.com
Copyright Information:
(C) Copyright 2009-2023, Arnaud Roques
Contributors:
- Original Author: Arnaud Roques
- Script Author: Ilya V. Paramonov
============================== Description ==============================
This build file offers an alternative method to build PlantUML.
While PlantUML is typically built using Gradle, this Ant build script
provides a fallback option for those who prefer or only have access to
Ant.
Usage:
To build using this file, navigate to the directory containing this
build.xml and run "ant" in the command line. For more detailed build
instructions and requirements, refer to:
https://github.com/plantuml/plantuml/blob/master/BUILDING.md
========================================================================
-->
<project name="PlantUML" default="dist" basedir=".">
<description>
PlantUML Build File
</description>
<!-- Compile source code and copy necessary files -->
<target name="compile">
<!-- Prepare the build directory -->
<delete dir="build" />
<mkdir dir="build" />
<javac target="1.7" source="1.7" srcdir="src" destdir="build" debug="on" />
<copy file="src/net/sourceforge/plantuml/version/logo.png"
todir="build/net/sourceforge/plantuml/version" />
<copy file="src/net/sourceforge/plantuml/version/favicon.png"
todir="build/net/sourceforge/plantuml/version" />
<copy todir="build/net/sourceforge/plantuml/version">
<fileset dir="src/net/sourceforge/plantuml/version">
<include name="*.png" />
</fileset>
</copy>
<!-- Compile Java sources -->
<javac target="1.8" source="1.8" srcdir="src" destdir="build" debug="on" />
<!-- Copy resources. Grouped by type and directory for better clarity -->
<copy todir="build/net/sourceforge/plantuml/version">
<fileset dir="src/net/sourceforge/plantuml/version">
<include name="*.png" />
</fileset>
</copy>
<copy todir="build/net/sourceforge/plantuml/openiconic/data">
<fileset dir="src/net/sourceforge/plantuml/openiconic/data">
<include name="*.txt" />
@ -95,9 +113,14 @@
</copy>
</target>
<!-- Create distribution JAR and clean up -->
<target name="dist" depends="compile">
<!-- Prepare the distribution directory -->
<delete dir="dist" />
<mkdir dir="dist" />
<!-- Create JAR with required attributes in the manifest -->
<jar jarfile="plantuml.jar" basedir="build">
<manifest>
<attribute name="Automatic-Module-Name" value="net.sourceforge.plantuml" />
@ -105,6 +128,8 @@
<attribute name="Class-Path" value="elk-full.jar avalon-framework-4.2.0.jar batik-all-1.7.jar commons-io-1.3.1.jar commons-logging-1.0.4.jar fop.jar xml-apis-ext-1.3.04.jar xmlgraphics-commons-1.4.jar jlatexmath-minimal-1.0.3.jar jlm_cyrillic.jar jlm_greek.jar vizjs.jar j2v8_win32_x86_64-3.1.6.jar j2v8_linux_x86_64-3.1.6.jar j2v8_macosx_x86_64-3.1.6.jar ditaa0_9.jar" />
</manifest>
</jar>
<!-- Clean up the build and distribution directories -->
<delete dir="build" />
<delete dir="dist" />
</target>

View File

@ -0,0 +1,97 @@
# PlantUML packages and PlantUML on the _[most popular]_ GNU/Linux distributions
## PlantUML packages
### GitHub _(The main PlantUML package repository)_
[![GitHub Release](https://img.shields.io/github/v/release/plantuml/plantuml)](https://github.com/plantuml/plantuml/releases/latest)
### Chocolatey
[![Chocolatey Version](https://img.shields.io/chocolatey/v/plantuml)](https://community.chocolatey.org/packages/plantuml)
### Docker
[![Docker Image Version](https://img.shields.io/docker/v/plantuml/plantuml)](https://github.com/plantuml/plantuml/pkgs/container/plantuml)
### Homebrew
[![homebrew version](https://img.shields.io/homebrew/v/plantuml)](https://formulae.brew.sh/formula/plantuml)
### Maven
[![Maven Central Version](https://img.shields.io/maven-central/v/net.sourceforge.plantuml/plantuml)](https://mvnrepository.com/artifact/net.sourceforge.plantuml/plantuml)
### Scoop
[![Scoop Version](https://img.shields.io/scoop/v/plantuml?bucket=extras)](https://scoop.sh/#/apps?q=plantuml)
## PlantUML on the _[most popular]_ GNU/Linux distributions
### [Alpine Linux](https://www.alpinelinux.org)
| Type | Link |
| ------- | ---- |
| Distribution | ![Alpine Linux](https://img.shields.io/badge/Alpine_Linux-%230D597F.svg?style=for-the-badge&logo=alpine-linux&logoColor=white) |
| Last PlantUML version | |
| Link | https://pkgs.alpinelinux.org/packages?name=plantuml&branch=edge |
| Specificity | |
### [Archlinux](https://archlinux.org)
| Type | Link |
| ------- | ---- |
| Distribution | ![Arch](https://img.shields.io/badge/Arch%20Linux-1793D1?logo=arch-linux&logoColor=fff&style=for-the-badge) |
| Last PlantUML version | [![Arch Linux package](https://img.shields.io/archlinux/v/extra/any/plantuml)](https://archlinux.org/packages/extra/any/plantuml/) |
| Link | https://archlinux.org/packages/extra/any/plantuml/ |
| Specificity | |
### [Debian](https://www.debian.org)
| Type | Link |
| ------- | ---- |
| Distribution | ![Debian](https://img.shields.io/badge/Debian-D70A53?style=for-the-badge&logo=debian&logoColor=white) |
| Last PlantUML version | [![Debian package](https://img.shields.io/debian/v/plantuml)](https://salsa.debian.org/debian/plantuml) |
| Link | https://salsa.debian.org/debian/plantuml |
| Specificity | https://salsa.debian.org/debian/plantuml/-/tree/master/debian |
### [Fedora](https://fedoraproject.org)
| Type | Link |
| ------- | ---- |
| Distribution | ![Fedora](https://img.shields.io/badge/Fedora-294172?style=for-the-badge&logo=fedora&logoColor=white) |
| Last PlantUML version | [![Fedora package](https://img.shields.io/fedora/v/plantuml)](https://src.fedoraproject.org/rpms/plantuml) |
| Link | https://src.fedoraproject.org/rpms/plantuml |
| Specificity | |
### [Gentoo](https://www.gentoo.org/)
| Type | Link |
| ------- | ---- |
| Distribution | ![Gentoo](https://img.shields.io/badge/Gentoo-54487A?style=for-the-badge&logo=gentoo&logoColor=white) |
| Last PlantUML version | |
| Link | https://packages.gentoo.org/packages/media-gfx/plantuml |
| Specificity | |
### [openSUSE](https://www.opensuse.org)
| Type | Link |
| ------- | ---- |
| Distribution | ![openSUSE](https://img.shields.io/badge/openSUSE-%2364B345?style=for-the-badge&logo=openSUSE&logoColor=white) |
| Last PlantUML version | |
| Link | https://build.opensuse.org/search?search_text=plantuml |
| Specificity | https://build.opensuse.org/package/show/Java:packages/plantuml <br> https://build.opensuse.org/package/show/home:mnhauke/plantuml |
### [SUSE](https://www.suse.com)
| Type | Link |
| ------- | ---- |
| Distribution | ![Suse](https://img.shields.io/badge/SUSE-0C322C?style=for-the-badge&logo=SUSE&logoColor=white) |
| Last PlantUML version | |
| Link | https://packagehub.suse.com/packages/plantuml/ |
| Specificity | |
### [Ubuntu](https://ubuntu.com)
| Type | Link |
| ------- | ---- |
| Distribution | ![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white) |
| Last PlantUML version | [![Ubuntu Package Version](https://img.shields.io/ubuntu/v/plantuml)](https://packages.ubuntu.com/search?keywords=plantuml&searchon=names&suite=all&section=all) |
| Link | https://packages.ubuntu.com/search?keywords=plantuml&searchon=names&suite=all&section=all |
| Specificity | |
# Reference and acknowledgement
- https://en.wikipedia.org/wiki/List_of_software_package_management_systems
- https://en.wikipedia.org/wiki/List_of_Linux_distributions
- https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file
- https://shields.io

58
docs/SUPPORT.md Normal file
View File

@ -0,0 +1,58 @@
# 🌱 PlantUML Support
Thank you for using PlantUML! If you need assistance or have questions, please refer to the following resources:
## Where to Get Support
### GitHub Issues
- For reporting bugs or issues, open an [issue on GitHub](https://github.com/plantuml/plantuml/issues).
- When submitting an issue, provide clear steps to reproduce the problem and include your PlantUML version.
- Before creating a new issue, search the existing ones on [GitHub](https://github.com/plantuml/plantuml/issues) to see if your problem has already been addressed.
### Community Forum
- Visit our [Community Forum](https://forum.plantuml.net/) for discussions, FAQs, and community support.
- Check for existing threads to see if your question has already been answered.
### Discord
- Feel free to ask questions on our official [Discord](https://discord.com/invite/sXhzexAQGh) server.
## Asking Questions
If you have a question about using PlantUML:
- Search through the [official documentation](https://plantuml.com/) and available resources before asking.
- Feel free to ask questions on the GitHub issues or the Community Forum after performing initial research.
- Provide as much detail as possible when asking questions to receive effective assistance.
## Contributing
We welcome contributions to PlantUML! If you're interested in contributing:
### Reporting Bugs
- Ensure you're using the latest version and search for existing issues on GitHub or the Community Forum before reporting a bug.
- Submit a bug report on [GitHub](https://github.com/plantuml/plantuml/issues) with clear steps to reproduce and your environment details.
### Suggesting Enhancements
- Search existing enhancement suggestions on GitHub or the Community Forum before submitting a new one.
- Submit your enhancement suggestion with a clear title and detailed description on [GitHub](https://github.com/plantuml/plantuml/issues).
### Your First Code Contribution
- Review our [contributing guide](CONTRIBUTING.md) to get started with code contributions.
- If you're new to contributing, consider tackling issues labeled as 'good first issue' or 'help wanted'.
## Additional Resources
- For comprehensive documentation, refer to the [official PlantUML Javadoc](https://plantuml.github.io/plantuml/).
- Explore the [GitHub issues](https://github.com/plantuml/plantuml/issues/) for discussions and known problems.
## 🧑‍🤝‍🧑 Community Support
Feel free to engage with the PlantUML community on GitHub and the Community Forum.
Thank you for being a part of the PlantUML community!

81
docs/TESTING.md Normal file
View File

@ -0,0 +1,81 @@
# Testing PlantUML
## Prerequisites
See the [Building page](../BUILDING.md) and especilay the paragraph [Building PlantUML with Gradle](../BUILDING.md#building-plantuml-with-gradle).
## Running Tests
### Run all tests, for all licences
To run the tests included with the project, use the following command:
```sh
gradle test
```
### Run a specific test, for only one licence
Comment those lines on [`settings.gradle.kts`](../settings.gradle.kts):
https://github.com/plantuml/plantuml/blob/a327d636a7fcc7f05a88b796a2838da16e2ba3e3/settings.gradle.kts#L12-L16
Then you can run a specific test _(e.g. the `aTestClass` Class)_:
```sh
gradle test --tests aTestClass
```
## Contributing
After successfully building and testing the project, you are ready to start [contributing](../CONTRIBUTING.md) to PlantUML!
If you have any changes to contribute, please submit a pull request through the [PlantUML GitHub repository](https://github.com/plantuml/plantuml).
## Test Directory Architecture
- [test/](../test)
- [com/plantuml/wasm](../test/com/plantuml/wasm)
- [net/sourceforge/plantuml](../test/net/sourceforge/plantuml)
- [nonreg](../test/nonreg)
```mermaid
%%{ init : { "flowchart" : { "curve" : "stepBefore" }}}%%
graph LR
T["test/"]
T -->|"Unit Test\n(of src/com/plantuml/api/cheerpj)"| W["com/plantuml/wasm"]
T -->|"Unit Test\n(of src/net/sourceforge/plantuml)"| U["net/sourceforge/plantuml"]
T -->|"Non-regression Test"| N[nonreg]
```
## Additional Resources
### Gradle
- site: [Gradle](https://gradle.org)
- doc: [Gradle User Guide](https://docs.gradle.org/current/userguide/userguide.html)
- src: [:octocat:Gradle](https://github.com/gradle/gradle)
### Gradle Plugins
- site: [Gradle Plugins Search](https://plugins.gradle.org)
- A "gradle test logger plugin"
- src: [:octocat:radarsh/gradle-test-logger-plugin](https://github.com/radarsh/gradle-test-logger-plugin)
### JUnit
- site: [JUnit5](https://junit.org/junit5/)
- doc: [JUnit User Guide](https://junit.org/junit5/docs/current/user-guide/)
- src: [:octocat:JUnit-team](https://github.com/junit-team)
### JUnit extensions
- doc: [JUnit extensions](https://junit.org/junit5/docs/current/user-guide/#extensions)
- The "Glytching" JUnit extensions
- doc: [Glytching JUnit extensions](https://glytching.github.io/junit-extensions/)
- doc: [`randomBeans` doc](https://glytching.github.io/junit-extensions/randomBeans)
- src: [:octocat:glytching/junit-extensions](https://github.com/glytching/junit-extensions)
### AssertJ
- doc: [AssertJ](https://assertj.github.io/doc/)
- src: [:octocat:AssertJ](https://github.com/assertj/assertj)
### Mockito
- site: [Mockito](https://site.mockito.org)
- doc: [Mockito doc.](https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html)
- src: [:octocat:Mockito](https://github.com/mockito/mockito)

View File

@ -10,6 +10,18 @@ Tags [cannot][3] be part of a pull request, so you need to push directly to the
The release will only happen if the username making the push is matched in the CI `Configure job` step.
# Docker Images
Docker images are released as [Github Packages][7] and to [Docker hub][8].
# Artifact Signing
The CI workflow will sign artifacts if the `ARTIFACT_SIGNING_KEY` [GitHub secret][4] is present. This should be a
private GPG key as described [here][5]. The passphrase is stored in the `ARTIFACT_SIGNING_PASSPHRASE` secret.
Currently, the signature files are only published as part of the [snapshot][6] releases.
In future, they will be part of the versioned releases as well.
# Releases Elsewhere
PlantUML is released to other places, currently that happens outside of GitHub and is not documented here.
@ -17,3 +29,8 @@ PlantUML is released to other places, currently that happens outside of GitHub a
[1]: https://github.com/plantuml/plantuml/releases
[2]: https://github.com/plantuml/plantuml/actions/workflows/ci.yml
[3]: https://stackoverflow.com/questions/12278660/adding-tags-to-a-pull-request
[4]: https://docs.github.com/en/actions/security-guides/encrypted-secrets
[5]: https://central.sonatype.org/publish/requirements/gpg/#generating-a-key-pair
[6]: https://github.com/plantuml/plantuml/releases/tag/snapshot
[7]: https://github.com/plantuml/plantuml/pkgs/container/plantuml
[8]: https://hub.docker.com/r/plantuml/plantuml

4
gradle.properties Normal file
View File

@ -0,0 +1,4 @@
# Warning, "version" should be the same in gradle.properties and Version.java
# Any idea anyone how to magically synchronize those :-) ?
version = 1.2024.5beta1
org.gradle.workers.max = 3

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

234
gradlew vendored Executable file
View File

@ -0,0 +1,234 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

89
gradlew.bat vendored Normal file
View File

@ -0,0 +1,89 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@ -0,0 +1,66 @@
/* +=======================================================================
* |
* | PlantUML : a free UML diagram generator
* |
* +=======================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/liberapay (only 1€ per month!)
* https://plantuml.com/paypal
*
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the Apache Software License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PlantUML can occasionally display sponsored or advertising messages. Those
* messages are usually generated on welcome or error images and never on
* functional diagrams.
* See https://plantuml.com/professional if you want to remove them
*
* Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML
* are owned by the author of their corresponding sources code (that is, their
* textual description in PlantUML language). Those images are not covered by
* this APACHE license.
*
* The generated images can then be used without any reference to the APACHE license.
* It is not even necessary to stipulate that they have been generated with PlantUML,
* although this will be appreciated by the PlantUML team.
*
* There is an exception : if the textual description in PlantUML language is also covered
* by any license, then the generated images are logically covered
* by the very same license.
*
* This is the IGY distribution (Install GraphViz by Yourself).
* You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable
* (see https://plantuml.com/graphviz-dot )
*
* Icons provided by OpenIconic : https://useiconic.com/open
* Archimate sprites provided by Archi : http://www.archimatetool.com
* Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML
* Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites
* ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen
* ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman
* CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli
* Brotli (c) by the Brotli Authors https://github.com/google/brotli
* Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes
* Twemoji (c) by Twitter at https://twemoji.twitter.com/
*
*/

View File

@ -0,0 +1,185 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("build/generated/sjpp")
}
resources {
srcDirs("build/sources/sjpp/java")
include("**/graphviz.dat")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("../manifest.txt")
}
from("../skin") { into("skin") }
from("../stdlib") { into("stdlib") }
from("../svg") { into("svg") }
from("../themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
val syncSources by tasks.registering(Sync::class) {
from(rootProject.layout.projectDirectory.dir("src"))
into(project.layout.buildDirectory.dir("sources/sjpp/java"))
}
val preprocessLicenceAntTask by tasks.registering() {
dependsOn(syncSources)
inputs.dir(project.layout.buildDirectory.dir("sources/sjpp/java"))
outputs.dir(project.layout.buildDirectory.dir("generated/sjpp"))
doLast {
ant.withGroovyBuilder {
"taskdef"(
"name" to "sjpp",
"classname" to "sjpp.SjppAntTask",
"classpath" to rootProject.layout.projectDirectory.files("sjpp.jar").asPath
)
"sjpp"(
"src" to project.layout.buildDirectory.dir("sources/sjpp/java").get().asFile.absolutePath,
"dest" to project.layout.buildDirectory.dir("generated/sjpp").get().asFile.absolutePath,
"define" to "__ASL__",
"header" to project.layout.buildDirectory.file("../asl-license.txt").get().asFile.absolutePath
)
}
}
}
tasks.processResources{
dependsOn(preprocessLicenceAntTask)
}
tasks.compileJava{
dependsOn(preprocessLicenceAntTask)
}
tasks.named("sourcesJar"){
dependsOn(preprocessLicenceAntTask)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("ASL License")
url.set("https://opensource.org/license/apache-2-0/")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
}
}

View File

@ -0,0 +1,78 @@
/* +=======================================================================
* |
* | PlantUML : a free UML diagram generator
* |
* +=======================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/liberapay (only 1€ per month!)
* https://plantuml.com/paypal
*
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the Revised BSD License.
*
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the University of California, Berkeley nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* PlantUML can occasionally display sponsored or advertising messages. Those
* messages are usually generated on welcome or error images and never on
* functional diagrams.
* See https://plantuml.com/professional if you want to remove them
*
* Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML
* are owned by the author of their corresponding sources code (that is, their
* textual description in PlantUML language). Those images are not covered by
* this BSD license.
*
* The generated images can then be used without any reference to the BSD license.
* It is not even necessary to stipulate that they have been generated with PlantUML,
* although this will be appreciated by the PlantUML team.
*
* There is an exception : if the textual description in PlantUML language is also covered
* by any license, then the generated images are logically covered
* by the very same license.
*
* This is the IGY distribution (Install GraphViz by Yourself).
* You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable
* (see https://plantuml.com/graphviz-dot )
*
* Icons provided by OpenIconic : https://useiconic.com/open
* Archimate sprites provided by Archi : http://www.archimatetool.com
* Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML
* Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites
* ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen
* ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman
* CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli
* Brotli (c) by the Brotli Authors https://github.com/google/brotli
* Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes
* Twemoji (c) by Twitter at https://twemoji.twitter.com/
*
*/

View File

@ -0,0 +1,184 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("build/generated/sjpp")
}
resources {
srcDirs("build/sources/sjpp/java")
include("**/graphviz.dat")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("../manifest.txt")
}
from("../skin") { into("skin") }
from("../stdlib") { into("stdlib") }
from("../svg") { into("svg") }
from("../themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
val syncSources by tasks.registering(Sync::class) {
from(rootProject.layout.projectDirectory.dir("src"))
into(project.layout.buildDirectory.dir("sources/sjpp/java"))
}
val preprocessLicenceAntTask by tasks.registering() {
dependsOn(syncSources)
inputs.dir(project.layout.buildDirectory.dir("sources/sjpp/java"))
outputs.dir(project.layout.buildDirectory.dir("generated/sjpp"))
doLast {
ant.withGroovyBuilder {
"taskdef"(
"name" to "sjpp",
"classname" to "sjpp.SjppAntTask",
"classpath" to rootProject.layout.projectDirectory.files("sjpp.jar").asPath
)
"sjpp"(
"src" to project.layout.buildDirectory.dir("sources/sjpp/java").get().asFile.absolutePath,
"dest" to project.layout.buildDirectory.dir("generated/sjpp").get().asFile.absolutePath,
"define" to "__BSD__",
"header" to project.layout.buildDirectory.file("../bsd-license.txt").get().asFile.absolutePath
)
}
}
}
tasks.processResources{
dependsOn(preprocessLicenceAntTask)
}
tasks.compileJava{
dependsOn(preprocessLicenceAntTask)
}
tasks.named("sourcesJar"){
dependsOn(preprocessLicenceAntTask)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("BSD License")
url.set("https://opensource.org/license/bsd-2-clause/")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
}
}

View File

@ -0,0 +1,184 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("build/generated/sjpp")
}
resources {
srcDirs("build/sources/sjpp/java")
include("**/graphviz.dat")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("../manifest.txt")
}
from("../skin") { into("skin") }
from("../stdlib") { into("stdlib") }
from("../svg") { into("svg") }
from("../themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
val syncSources by tasks.registering(Sync::class) {
from(rootProject.layout.projectDirectory.dir("src"))
into(project.layout.buildDirectory.dir("sources/sjpp/java"))
}
val preprocessLicenceAntTask by tasks.registering() {
dependsOn(syncSources)
inputs.dir(project.layout.buildDirectory.dir("sources/sjpp/java"))
outputs.dir(project.layout.buildDirectory.dir("generated/sjpp"))
doLast {
ant.withGroovyBuilder {
"taskdef"(
"name" to "sjpp",
"classname" to "sjpp.SjppAntTask",
"classpath" to rootProject.layout.projectDirectory.files("sjpp.jar").asPath
)
"sjpp"(
"src" to project.layout.buildDirectory.dir("sources/sjpp/java").get().asFile.absolutePath,
"dest" to project.layout.buildDirectory.dir("generated/sjpp").get().asFile.absolutePath,
"define" to "__EPL__",
"header" to project.layout.buildDirectory.file("../epl-license.txt").get().asFile.absolutePath
)
}
}
}
tasks.processResources{
dependsOn(preprocessLicenceAntTask)
}
tasks.compileJava{
dependsOn(preprocessLicenceAntTask)
}
tasks.named("sourcesJar"){
dependsOn(preprocessLicenceAntTask)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("EPL License")
url.set("https://opensource.org/license/epl-1-0/")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
}
}

View File

@ -0,0 +1,70 @@
/* +=======================================================================
* |
* | PlantUML : a free UML diagram generator
* |
* +=======================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/liberapay (only 1€ per month!)
* https://plantuml.com/paypal
*
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the Eclipse Public License.
*
* THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
* LICENSE ("AGREEMENT"). [Eclipse Public License - v 1.0]
*
* ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
* RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
*
* You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PlantUML can occasionally display sponsored or advertising messages. Those
* messages are usually generated on welcome or error images and never on
* functional diagrams.
* See https://plantuml.com/professional if you want to remove them
*
* Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML
* are owned by the author of their corresponding sources code (that is, their
* textual description in PlantUML language). Those images are not covered by
* this EPL license.
*
* The generated images can then be used without any reference to the EPL license.
* It is not even necessary to stipulate that they have been generated with PlantUML,
* although this will be appreciated by the PlantUML team.
*
* There is an exception : if the textual description in PlantUML language is also covered
* by any license, then the generated images are logically covered
* by the very same license.
*
* This is the IGY distribution (Install GraphViz by Yourself).
* You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable
* (see https://plantuml.com/graphviz-dot )
*
* Icons provided by OpenIconic : https://useiconic.com/open
* Archimate sprites provided by Archi : http://www.archimatetool.com
* Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML
* Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites
* ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen
* ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman
* CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli
* Brotli (c) by the Brotli Authors https://github.com/google/brotli
* Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes
* Twemoji (c) by Twitter at https://twemoji.twitter.com/
*
*/

View File

@ -0,0 +1,184 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("build/generated/sjpp")
}
resources {
srcDirs("build/sources/sjpp/java")
include("**/graphviz.dat")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("../manifest.txt")
}
from("../skin") { into("skin") }
from("../stdlib") { into("stdlib") }
from("../svg") { into("svg") }
from("../themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
val syncSources by tasks.registering(Sync::class) {
from(rootProject.layout.projectDirectory.dir("src"))
into(project.layout.buildDirectory.dir("sources/sjpp/java"))
}
val preprocessLicenceAntTask by tasks.registering() {
dependsOn(syncSources)
inputs.dir(project.layout.buildDirectory.dir("sources/sjpp/java"))
outputs.dir(project.layout.buildDirectory.dir("generated/sjpp"))
doLast {
ant.withGroovyBuilder {
"taskdef"(
"name" to "sjpp",
"classname" to "sjpp.SjppAntTask",
"classpath" to rootProject.layout.projectDirectory.files("sjpp.jar").asPath
)
"sjpp"(
"src" to project.layout.buildDirectory.dir("sources/sjpp/java").get().asFile.absolutePath,
"dest" to project.layout.buildDirectory.dir("generated/sjpp").get().asFile.absolutePath,
"define" to "__GPLV2__",
"header" to project.layout.buildDirectory.file("../gplv2-license.txt").get().asFile.absolutePath
)
}
}
}
tasks.processResources{
dependsOn(preprocessLicenceAntTask)
}
tasks.compileJava{
dependsOn(preprocessLicenceAntTask)
}
tasks.named("sourcesJar"){
dependsOn(preprocessLicenceAntTask)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("GPLv2 License")
url.set("https://www.gnu.org/licenses/old-licenses/gpl-2.0.html")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
}
}

View File

@ -0,0 +1,70 @@
/* +=======================================================================
* |
* | PlantUML : a free UML diagram generator
* |
* +=======================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/liberapay (only 1€ per month!)
* https://plantuml.com/paypal
*
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License V2.
*
* THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
* LICENSE ("AGREEMENT"). [GNU General Public License V2]
*
* ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
* RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
*
* You may obtain a copy of the License at
*
* https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* PlantUML can occasionally display sponsored or advertising messages. Those
* messages are usually generated on welcome or error images and never on
* functional diagrams.
* See https://plantuml.com/professional if you want to remove them
*
* Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML
* are owned by the author of their corresponding sources code (that is, their
* textual description in PlantUML language). Those images are not covered by
* this GPL v2 license.
*
* The generated images can then be used without any reference to the GPL v2 license.
* It is not even necessary to stipulate that they have been generated with PlantUML,
* although this will be appreciated by the PlantUML team.
*
* There is an exception : if the textual description in PlantUML language is also covered
* by any license, then the generated images are logically covered
* by the very same license.
*
* This is the IGY distribution (Install GraphViz by Yourself).
* You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable
* (see https://plantuml.com/graphviz-dot )
*
* Icons provided by OpenIconic : https://useiconic.com/open
* Archimate sprites provided by Archi : http://www.archimatetool.com
* Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML
* Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites
* ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen
* ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman
* CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli
* Brotli (c) by the Brotli Authors https://github.com/google/brotli
* Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes
* Twemoji (c) by Twitter at https://twemoji.twitter.com/
*
*/

View File

@ -0,0 +1,184 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("build/generated/sjpp")
}
resources {
srcDirs("build/sources/sjpp/java")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("../manifest.txt")
}
from("../skin") { into("skin") }
from("../stdlib") { into("stdlib") }
from("../svg") { into("svg") }
from("../themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
val syncSources by tasks.registering(Sync::class) {
from(rootProject.layout.projectDirectory.dir("src"))
into(project.layout.buildDirectory.dir("sources/sjpp/java"))
}
val preprocessLicenceAntTask by tasks.registering() {
dependsOn(syncSources)
inputs.dir(project.layout.buildDirectory.dir("sources/sjpp/java"))
outputs.dir(project.layout.buildDirectory.dir("generated/sjpp"))
doLast {
ant.withGroovyBuilder {
"taskdef"(
"name" to "sjpp",
"classname" to "sjpp.SjppAntTask",
"classpath" to rootProject.layout.projectDirectory.files("sjpp.jar").asPath
)
"sjpp"(
"src" to project.layout.buildDirectory.dir("sources/sjpp/java").get().asFile.absolutePath,
"dest" to project.layout.buildDirectory.dir("generated/sjpp").get().asFile.absolutePath,
"define" to "__LGPL__",
"header" to project.layout.buildDirectory.file("../lgpl-license.txt").get().asFile.absolutePath
)
}
}
}
tasks.processResources{
dependsOn(preprocessLicenceAntTask)
}
tasks.compileJava{
dependsOn(preprocessLicenceAntTask)
}
tasks.named("sourcesJar"){
dependsOn(preprocessLicenceAntTask)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("LGPL License")
url.set("https://opensource.org/license/lgpl-2-1/")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
}
}

View File

@ -0,0 +1,64 @@
/* +=======================================================================
* |
* | PlantUML : a free UML diagram generator
* |
* +=======================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/liberapay (only 1€ per month!)
* https://plantuml.com/paypal
*
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see <https://www.gnu.org/licenses/>.
*
* PlantUML can occasionally display sponsored or advertising messages. Those
* messages are usually generated on welcome or error images and never on
* functional diagrams.
* See https://plantuml.com/professional if you want to remove them
*
* Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML
* are owned by the author of their corresponding sources code (that is, their
* textual description in PlantUML language). Those images are not covered by
* this LGPL license.
*
* The generated images can then be used without any reference to the LGPL license.
* It is not even necessary to stipulate that they have been generated with PlantUML,
* although this will be appreciated by the PlantUML team.
*
* There is an exception : if the textual description in PlantUML language is also covered
* by any license, then the generated images are logically covered
* by the very same license.
*
* This is the IGY distribution (Install GraphViz by Yourself).
* You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable
* (see https://plantuml.com/graphviz-dot )
*
* Icons provided by OpenIconic : https://useiconic.com/open
* Archimate sprites provided by Archi : http://www.archimatetool.com
* Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML
* Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites
* ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen
* ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman
* CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli
* Brotli (c) by the Brotli Authors https://github.com/google/brotli
* Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes
* Twemoji (c) by Twitter at https://twemoji.twitter.com/
*
*/

View File

@ -0,0 +1,185 @@
// permits to start the build setting the javac release parameter, no parameter means build for java8:
// gradle clean build -x javaDoc -PjavacRelease=8
// gradle clean build -x javaDoc -PjavacRelease=17
// also supported is to build first, with java17, then switch the java version, and run the test with java8:
// gradle clean build -x javaDoc -x test
// gradle test
val javacRelease = (project.findProperty("javacRelease") ?: "8") as String
plugins {
java
`maven-publish`
signing
}
group = "net.sourceforge.plantuml"
description = "PlantUML"
java {
withSourcesJar()
withJavadocJar()
registerFeature("pdf") {
usingSourceSet(sourceSets["main"])
}
}
dependencies {
compileOnly("org.apache.ant:ant:1.10.14")
testImplementation("org.assertj:assertj-core:3.25.3")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
testImplementation("org.xmlunit:xmlunit-core:2.9.+")
}
repositories {
mavenLocal()
mavenCentral()
}
sourceSets {
main {
java {
srcDirs("build/generated/sjpp")
}
resources {
srcDirs("build/sources/sjpp/java")
include("**/graphviz.dat")
include("**/*.png")
include("**/*.svg")
include("**/*.txt")
}
}
}
tasks.compileJava {
if (JavaVersion.current().isJava8) {
java.targetCompatibility = JavaVersion.VERSION_1_8
} else {
options.release.set(Integer.parseInt(javacRelease))
}
}
tasks.withType<Jar>().configureEach {
manifest {
attributes["Main-Class"] = "net.sourceforge.plantuml.Run"
attributes["Implementation-Version"] = archiveVersion
attributes["Build-Jdk-Spec"] = System.getProperty("java.specification.version")
from("../manifest.txt")
}
from("../skin") { into("skin") }
from("../stdlib") { into("stdlib") }
from("../svg") { into("svg") }
from("../themes") { into("themes") }
// source sets for java and resources are on "src", only put once into the jar
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
tasks.withType<JavaCompile>().configureEach {
options.encoding = "UTF-8"
}
tasks.withType<Javadoc>().configureEach {
options {
this as StandardJavadocDocletOptions
addBooleanOption("Xdoclint:none", true)
addStringOption("Xmaxwarns", "1")
encoding = "UTF-8"
isUse = true
}
}
val syncSources by tasks.registering(Sync::class) {
from(rootProject.layout.projectDirectory.dir("src"))
into(project.layout.buildDirectory.dir("sources/sjpp/java"))
}
val preprocessLicenceAntTask by tasks.registering() {
dependsOn(syncSources)
inputs.dir(project.layout.buildDirectory.dir("sources/sjpp/java"))
outputs.dir(project.layout.buildDirectory.dir("generated/sjpp"))
doLast {
ant.withGroovyBuilder {
"taskdef"(
"name" to "sjpp",
"classname" to "sjpp.SjppAntTask",
"classpath" to rootProject.layout.projectDirectory.files("sjpp.jar").asPath
)
"sjpp"(
"src" to project.layout.buildDirectory.dir("sources/sjpp/java").get().asFile.absolutePath,
"dest" to project.layout.buildDirectory.dir("generated/sjpp").get().asFile.absolutePath,
"define" to "__MIT__",
"header" to project.layout.buildDirectory.file("../mit-license.txt").get().asFile.absolutePath
)
}
}
}
tasks.processResources{
dependsOn(preprocessLicenceAntTask)
}
tasks.compileJava{
dependsOn(preprocessLicenceAntTask)
}
tasks.named("sourcesJar"){
dependsOn(preprocessLicenceAntTask)
}
publishing {
publications.create<MavenPublication>("maven") {
from(components["java"])
pom {
name.set("PlantUML")
description.set("PlantUML is a component that allows to quickly write diagrams from text.")
groupId = project.group as String
artifactId = project.name
version = project.version as String
url.set("https://plantuml.com/")
licenses {
license {
name.set("MIT License")
url.set("https://opensource.org/license/mit/")
}
}
developers {
developer {
id.set("arnaud.roques")
name.set("Arnaud Roques")
email.set("plantuml@gmail.com")
}
}
scm {
connection.set("scm:git:git://github.com:plantuml/plantuml.git")
developerConnection.set("scm:git:ssh://git@github.com:plantuml/plantuml.git")
url.set("https://github.com/plantuml/plantuml")
}
}
}
repositories {
maven {
name = "OSSRH"
val releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
val snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
url = uri(if (version.toString().endsWith("SNAPSHOT")) snapshotsRepoUrl else releasesRepoUrl)
credentials {
username = System.getenv("OSSRH_USERNAME")
password = System.getenv("OSSRH_PASSWORD")
}
}
}
}
signing {
if (hasProperty("signing.gnupg.keyName") && hasProperty("signing.gnupg.passphrase")) {
useGpgCmd()
} else if (hasProperty("signingKey") && hasProperty("signingPassword")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
}
if (hasProperty("signing.gnupg.passphrase") || hasProperty("signingPassword")) {
sign(publishing.publications["maven"])
}
}

View File

@ -0,0 +1,73 @@
/* +=======================================================================
* |
* | PlantUML : a free UML diagram generator
* |
* +=======================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/liberapay (only 1€ per month!)
* https://plantuml.com/paypal
*
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the MIT License.
*
* See http://opensource.org/licenses/MIT
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* PlantUML can occasionally display sponsored or advertising messages. Those
* messages are usually generated on welcome or error images and never on
* functional diagrams.
* See https://plantuml.com/professional if you want to remove them
*
* Images (whatever their format : PNG, SVG, EPS...) generated by running PlantUML
* are owned by the author of their corresponding sources code (that is, their
* textual description in PlantUML language). Those images are not covered by
* this MIT license.
*
* The generated images can then be used without any reference to the MIT license.
* It is not even necessary to stipulate that they have been generated with PlantUML,
* although this will be appreciated by the PlantUML team.
*
* There is an exception : if the textual description in PlantUML language is also covered
* by any license, then the generated images are logically covered
* by the very same license.
*
* This is the IGY distribution (Install GraphViz by Yourself).
* You have to install GraphViz and to setup the GRAPHVIZ_DOT environment variable
* (see https://plantuml.com/graphviz-dot )
*
* Icons provided by OpenIconic : https://useiconic.com/open
* Archimate sprites provided by Archi : http://www.archimatetool.com
* Stdlib AWS provided by https://github.com/milo-minderbinder/AWS-PlantUML
* Stdlib Icons provided https://github.com/tupadr3/plantuml-icon-font-sprites
* ASCIIMathML (c) Peter Jipsen http://www.chapman.edu/~jipsen
* ASCIIMathML (c) David Lippman http://www.pierce.ctc.edu/dlippman
* CafeUndZopfli ported by Eugene Klyuchnikov https://github.com/eustas/CafeUndZopfli
* Brotli (c) by the Brotli Authors https://github.com/google/brotli
* Themes (c) by Brett Schwarz https://github.com/bschwarz/puml-themes
* Twemoji (c) by Twitter at https://twemoji.twitter.com/
*
*/

296
pom.xml
View File

@ -1,296 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
========================================================================
PlantUML : a free UML diagram generator
========================================================================
(C) Copyright 2009, Arnaud Roques
Project Info: http://plantuml.sourceforge.net
This file is part of PlantUML.
PlantUML is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
PlantUML distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
[Java is a trademark or registered trademark of Sun Microsystems, Inc.
in the United States and other countries.]
Script Author: Julien Eluard
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sourceforge.plantuml</groupId>
<artifactId>plantuml</artifactId>
<version>1.2021.16-SNAPSHOT</version>
<packaging>jar</packaging>
<name>PlantUML</name>
<description>
PlantUML is a component that allows to quickly write :
* sequence diagram,
* use case diagram,
* class diagram,
* activity diagram,
* component diagram,
* state diagram
* object diagram
</description>
<url>https://plantuml.com</url>
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<properties>
<finalName>${project.artifactId}-${project.version}</finalName>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.testSource>1.8</maven.compiler.testSource>
<maven.compiler.testTarget>1.8</maven.compiler.testTarget>
<main.class>net.sourceforge.plantuml.Run</main.class>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.8.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.21.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scilab.forge</groupId>
<artifactId>jlatexmath</artifactId>
<version>1.0.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<licenses>
<license>
<name>The GNU General Public License</name>
<url>http://www.gnu.org/licenses/gpl.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<connection>scm:svn:svn://svn.code.sf.net/p/plantuml/code/trunk</connection>
<developerConnection>scm:svn:https://svn.code.sf.net/p/plantuml/code/trunk</developerConnection>
<url>svn://svn.code.sf.net/p/plantuml/code/trunk</url>
</scm>
<issueManagement>
<system>Sourceforge</system>
<url>http://sourceforge.net/tracker/?group_id=259736</url>
</issueManagement>
<developers>
<developer>
<id>arnaud.roques</id>
<name>Arnaud Roques</name>
<email>plantuml@gmail.com</email>
</developer>
</developers>
<build>
<finalName>${finalName}</finalName>
<sourceDirectory>${project.basedir}/src</sourceDirectory>
<testSourceDirectory>${project.basedir}/test</testSourceDirectory>
<resources>
<resource>
<directory>${project.basedir}/src</directory>
<includes>
<include>net/sourceforge/plantuml/version/*.png</include>
<include>net/sourceforge/plantuml/openiconic/data/*.txt</include>
<include>net/sourceforge/plantuml/openiconic/data/*.svg</include>
<include>net/sourceforge/plantuml/emoji/data/*.txt</include>
<include>net/sourceforge/plantuml/emoji/data/*.svg</include>
<include>net/sourceforge/plantuml/fun/*.png</include>
<include>sprites/archimate/*.png</include>
<include>net/sourceforge/plantuml/dedication/*.png</include>
<include>net/sourceforge/plantuml/math/*.js</include>
<include>net/sourceforge/plantuml/windowsdot/*.dat</include>
<include>net/sourceforge/plantuml/utils/*.txt</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}</directory>
<includes>
<include>stdlib/**/*.repx</include>
<include>skin/**/*.skin</include>
<include>themes/**/*.puml</include>
<include>svg/**/*.css</include>
<include>svg/**/*.js</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<debug>true</debug>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<javadoc.opts>-Xdoclint:none</javadoc.opts>
<additionalparam>-Xdoclint:none</additionalparam>
<doclint>none</doclint>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifestFile>manifest.txt</manifestFile>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<environmentVariables>
<PLANTUML_SECURITY_PROFILE>UNSECURE</PLANTUML_SECURITY_PROFILE>
</environmentVariables>
<systemPropertyVariables>
<java.awt.headless>true</java.awt.headless>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<mavenExecutorId>forked-path</mavenExecutorId>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.8.1</version>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<!--
Kludge to make 1.8 tests with 1.7 source work nicer in IntelliJ
See https://youtrack.jetbrains.com/issue/IDEA-85478
-->
<id>intellij</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>idea.maven.embedder.version</name>
</property>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</profile>
<profile>
<id>pdf</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>${main.class}</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>batik-all</artifactId>
<version>1.14</version>
</dependency>
</dependencies>
</profile>
</profiles>
</project>

19
settings.gradle.kts Normal file
View File

@ -0,0 +1,19 @@
// https://docs.gradle.org/current/javadoc/org/gradle/api/initialization/Settings.html
rootProject.name = "plantuml"
val isCiBuild = System.getenv("CI") != null
val version: String by settings
println("Running settings.gradle.kts")
// println(rootProject.projectDir)
println("Version is " + version)
include("plantuml-asl")
include("plantuml-bsd")
include("plantuml-epl")
include("plantuml-lgpl")
include("plantuml-mit")
include("plantuml-gplv2")

BIN
sjpp.jar Normal file

Binary file not shown.

View File

@ -1,6 +1,11 @@
root {
--common-background: #f1f1f1;
--note-background: #FEFFDD;
--grey-blue: #e2e2f0;
FontName SansSerif
HyperLinkColor blue
HyperLinkUnderlineThickness 1
FontColor black
FontSize 14
FontStyle plain
@ -8,19 +13,19 @@ root {
RoundCorner 0
DiagonalCorner 0
LineThickness 1.0
LineColor #A80036
BackGroundColor #FEFECE
Shadowing 0.0
LineColor #181818
BackGroundColor: var(--common-background);
Shadowing: 0.0;
}
document {
BackGroundColor White
BackGroundColor white
header {
HorizontalAlignment right
FontSize 10
FontColor #888888
BackGroundColor none
LineColor none
FontColor #8
BackGroundColor transparent
LineColor transparent
}
title {
HorizontalAlignment center
@ -28,74 +33,200 @@ document {
FontStyle bold
Padding 5
Margin 5
LineColor none
BackGroundColor none
LineColor transparent
BackGroundColor transparent
}
footer {
HorizontalAlignment center
FontSize 10
FontColor #888888
BackGroundColor none
LineColor none
FontColor #8
BackGroundColor transparent
LineColor transparent
}
legend {
LineColor black
BackGroundColor #DDDDDD
BackGroundColor #D
FontSize 14
RoundCorner 15
Padding 6
Margin 8
Padding 5
Margin 12
}
caption {
HorizontalAlignment center
FontSize 14
Padding 0
Margin 1
LineColor none
BackGroundColor none
LineColor transparent
BackGroundColor transparent
}
frame {
LineColor black
LineThickness 1.5
}
}
package {
title {
FontStyle bold
}
}
stereotype {
FontStyle italic
}
mainframe {
Padding 1 5
LineThickness 1.5
Margin 10 5
}
element {
Shadowing 4.0
title {
FontStyle bold
Shadowing 0.0
LineThickness 0.5
composite {
title {
FontStyle bold
}
}
}
group {
BackGroundColor white
BackGroundColor transparent
LineThickness 1.0
package {
LineThickness 1.5
LineColor black
}
folder {
LineThickness 1.5
LineColor black
}
}
sequenceDiagram {
group {
LineColor black
LineThickness 2.0
FontSize 11
FontStyle bold
}
groupHeader {
BackGroundColor #EEEEEE
LineColor black
FontSize 13
FontStyle bold
}
lifeLine {
BackGroundColor white
LineStyle 5
}
group {
LineColor black
LineThickness 1.5
FontSize 11
FontStyle bold
}
groupHeader {
LineThickness 1.5
BackGroundColor #e
LineColor black
FontSize 13
FontStyle bold
}
lifeLine {
BackGroundColor white
LineStyle 5
}
reference {
FontSize 12
LineColor black
BackGroundColor transparent
LineThickness 1.5
HorizontalAlignment center
}
referenceHeader {
LineColor black
BackGroundColor #e
FontColor black
FontSize 13
FontStyle bold
LineThickness 2.0
}
box {
BackGroundColor #d
FontSize 13
FontStyle bold
}
separator {
LineColor black
LineThickness 2.0
BackGroundColor #e
FontSize 13
FontStyle bold
}
participant {
RoundCorner 5
}
participant,actor,boundary,control,entity,queue,database,collections {
BackgroundColor: var(--grey-blue);
HorizontalAlignment center
}
}
classDiagram {
classDiagram,componentDiagram,objectDiagram {
element {
RoundCorner 5
}
}
visibilityIcon {
public {
LineColor #038048
BackgroundColor #84BE84
}
private {
LineColor #C82930
BackgroundColor #F24D5C
}
protected {
LineColor #B38D22
BackgroundColor #FFFF44
}
package {
LineColor #1963A0
BackgroundColor #4177AF
}
IEMandatory {
LineColor black
BackgroundColor black
}
}
spot {
spotAnnotation {
BackgroundColor #E3664A
}
spotAbstractClass {
BackgroundColor #A9DCDF
}
spotClass {
BackgroundColor #ADD1B2
}
spotInterface {
BackgroundColor #B4A7E5
}
spotEnum {
BackgroundColor #EB937F
}
spotEntity {
BackgroundColor #ADD1B2
}
spotException {
BackgroundColor #D94321
}
spotMetaClass {
BackgroundColor #CCCCCC
}
spotStereotype {
BackgroundColor #FF77FF
}
}
@ -103,113 +234,53 @@ stateDiagram {
state {
RoundCorner 25
}
stateBody {
BackGroundColor transparent
}
element {
title {
FontStyle plain
}
}
group {
LineThickness 0.5
}
header {
FontSize 12
}
circle {
start, stop, end {
LineColor #2
BackgroundColor #2
}
}
}
destroy {
}
reference {
FontSize 12
LineColor black
BackGroundColor while
LineThickness 2.0
HorizontalAlignment center
}
referenceHeader {
LineColor black
BackGroundColor #EEEEEE
FontColor black
FontSize 13
FontStyle bold
LineThickness 2.0
}
box {
BackGroundColor #DDDDDD
FontSize 13
FontStyle bold
}
separator {
LineColor black
LineThickness 2.0
BackGroundColor #EEEEEE
FontSize 13
FontStyle bold
}
delay {
FontSize 11
FontStyle plain
HorizontalAlignment center
}
participant {
LineThickness 1.5
HorizontalAlignment center
}
actor {
LineThickness 2.0
HorizontalAlignment center
}
boundary {
LineThickness 2.0
HorizontalAlignment center
}
control {
LineThickness 2.0
HorizontalAlignment center
}
entity {
LineThickness 2.0
HorizontalAlignment center
}
queue {
LineThickness 2.0
HorizontalAlignment center
}
database {
HorizontalAlignment center
}
collections {
LineThickness 1.5
HorizontalAlignment center
}
swimlane {
BackGroundColor none
BackGroundColor transparent
LineColor black
LineThickness 2
LineThickness 1.5
FontSize 18
}
diamond {
Shadowing 3.0
}
arrow {
FontSize 13
LineThickness 1.0
}
note {
FontSize 13
BackGroundColor #FBFB77
BackGroundColor: var(--note-background);
LineThickness 0.5
}
partition {
@ -242,36 +313,33 @@ wbsDiagram {
FontSize 12
}
activityDiagram {
Shadowing 3.0
}
activityDiagram {
activity {
LineThickness 1.5
Padding 10
FontSize 12
RoundCorner 25
}
partition {
composite {
LineColor black
BackgroundColor none
BackgroundColor transparent
LineThickness 1.5
}
diamond {
FontSize 11
}
arrow {
FontSize 11
LineThickness 1
}
circle {
start, stop, end {
LineColor #2
BackgroundColor #2
}
}
activityBar {
BackgroundColor #5
}
}
activityBar {
BackgroundColor black
}
circle {
LineColor black
Shadowing 3.0
}
@ -291,7 +359,6 @@ ganttDiagram {
}
note {
FontSize 9
Shadowing 0.0
}
separator {
FontSize 11
@ -300,19 +367,35 @@ ganttDiagram {
Margin 5
Padding 5
}
verticalSeparator {
LineThickness 2
LineStyle 2-2
LineColor black
}
timeline {
BackgroundColor transparent
LineColor #C0C0C0
FontSize 10
month {
FontSize 12
}
year {
FontSize 14
}
}
closed {
BackGroundColor #E0E8E8
FontColor #909898
BackGroundColor #F1E5E5
FontColor #989898
}
task {
BackGroundColor: var(--grey-blue);
RoundCorner 0
Margin 2 2 2 2
Padding 0
}
undone {
BackGroundColor white
}
milestone {
Margin 2
Padding 3
@ -325,12 +408,11 @@ usecase {
}
yamlDiagram,jsonDiagram {
BackGroundColor white
FontColor black
LineColor black
arrow {
LineThickness 1
LineStyle 3;3
LineStyle 3-3
}
node {
LineThickness 1.5
@ -349,27 +431,274 @@ yamlDiagram,jsonDiagram {
timingDiagram {
LineColor #3
FontColor #3
FontStyle bold
LineThickness 0.5
timeline {
FontStyle plain
FontSize 11
LineThickness 2
}
note {
LineThickness 0.5
}
arrow {
LineColor darkblue
LineThickness 1.5
}
constraintArrow {
FontSize 12
FontStyle plain
FontColor darkred
LineColor darkred
LineThickness 1.5
}
clock {
LineColor darkgreen
LineThickness 1.5
}
concise {
FontSize 12
LineColor darkgreen
BackgroundColor: var(--grey-blue);
LineThickness 1.5
}
robust {
FontStyle plain
FontSize 12
LineColor darkgreen
LineThickness 2
BackgroundColor: var(--grey-blue);
}
binary {
FontStyle plain
FontSize 12
LineColor darkgreen
LineThickness 2
}
highlight {
BackgroundColor #e
LineThickness 2
LineStyle 4-4
}
}
nwdiagDiagram {
network {
BackgroundColor: var(--grey-blue);
FontSize 12
Shadowing 1.0
}
server {
FontSize 12
}
group {
FontSize 12
BackGroundColor #ddd
BackGroundColor #e7e7e7
}
arrow {
FontSize 11
}
}
@media (prefers-color-scheme:dark) {
root {
HyperLinkColor blue
FontColor white
LineColor #e7e7e7
BackGroundColor #313139
}
document {
BackGroundColor #1B1B1B
header {
FontColor #7
}
footer {
FontColor #7
}
legend {
LineColor white
BackGroundColor #2
}
frame {
LineColor white
}
}
group {
package {
LineColor white
}
folder {
LineColor white
}
}
sequenceDiagram {
group {
LineColor white
}
groupHeader {
BackGroundColor #5
LineColor white
}
lifeLine {
BackGroundColor black
}
reference {
LineColor #d
}
referenceHeader {
LineColor #d
FontColor white
BackGroundColor #4
}
box {
BackGroundColor #2
}
separator {
LineColor white
BackGroundColor #1
}
participant,actor,boundary,control,entity,queue,database,collections {
BackgroundColor: #2;
HorizontalAlignment center
}
}
spot {
spotAnnotation {
BackgroundColor #4A0000
}
spotAbstractClass {
BackgroundColor #2A5D60
}
spotClass {
BackgroundColor #2E5233
}
spotInterface {
BackgroundColor #352866
}
spotEnum {
BackgroundColor #852D19
}
spotEntity {
BackgroundColor #2E5233
}
spotException {
BackgroundColor #7D0000
}
spotMetaClass {
BackgroundColor #7C7C7C
}
spotStereotype {
BackgroundColor #890089
}
}
swimlane {
LineColor white
}
note {
BackGroundColor #714137
}
activityDiagram {
partition {
LineColor white
}
circle {
start, stop, end {
LineColor #d
BackgroundColor #d
}
}
activityBar {
BackgroundColor #a
}
}
milestone {
BackGroundColor white
LineColor white
}
timingDiagram {
LineColor #d
FontColor #d
arrow {
LineColor lightblue
}
constraintArrow {
LineColor tomato
FontColor tomato
}
clock {
LineColor lightgreen
}
concise {
LineColor lightgreen
BackgroundColor #6
}
robust {
LineColor lightgreen
BackgroundColor #3
}
highlight {
BackgroundColor #1
}
}
ganttDiagram {
task {
BackGroundColor #555
}
timeline {
LineColor #3f3f3f
}
closed {
BackGroundColor #1f1f1f
FontColor #676767
}
undone {
BackGroundColor black
}
}
yamlDiagram,jsonDiagram {
FontColor white
LineColor white
node {
highlight {
BackGroundColor #ccff02
}
}
}
nwdiagDiagram {
network {
BackGroundColor #555
}
group {
BackGroundColor #2
}
}
}

537
skin/rose.skin Normal file
View File

@ -0,0 +1,537 @@
root {
FontName SansSerif
HyperLinkColor blue
HyperLinkUnderlineThickness 1
FontColor black
FontSize 14
FontStyle plain
HorizontalAlignment left
RoundCorner 0
DiagonalCorner 0
LineThickness 1.0
LineColor #A80036
BackGroundColor #FEFECE
Shadowing 0.0
}
document {
BackGroundColor white
header {
HorizontalAlignment right
FontSize 10
FontColor #8
BackGroundColor transparent
LineColor transparent
}
title {
HorizontalAlignment center
FontSize 14
FontStyle bold
Padding 5
Margin 5
LineColor transparent
BackGroundColor transparent
}
footer {
HorizontalAlignment center
FontSize 10
FontColor #8
BackGroundColor transparent
LineColor transparent
}
legend {
LineColor black
BackGroundColor #d
FontSize 14
RoundCorner 15
Padding 6
Margin 8
}
caption {
HorizontalAlignment center
FontSize 14
Padding 0
Margin 1
LineColor transparent
BackGroundColor transparent
}
frame {
LineColor black
LineThickness 1.5
}
}
stereotype {
FontStyle italic
}
element {
Shadowing 4.0
composite {
title {
FontStyle bold
}
}
}
artifact {
Shadowing 4.0
}
node {
Shadowing 2.0
}
person {
Shadowing 2.0
}
queue {
Shadowing 2.0
}
rectangle {
Shadowing 3.0
}
stack {
Shadowing 3.0
}
storage {
Shadowing 3.0
}
boundary {
Shadowing 4.0
}
card {
Shadowing 3.0
}
cloud {
Shadowing 3.0
}
collections {
Shadowing 3.0
}
component {
Shadowing 4.0
}
database {
Shadowing 3.0
}
file {
Shadowing 3.0
}
frame {
Shadowing 3.0
}
folder {
Shadowing 3.0
}
group {
package {
LineThickness 1.5
LineColor black
}
folder {
LineThickness 1.5
LineColor black
}
}
group {
BackGroundColor transparent
}
componentDiagram {
node, rectangle {
LineColor black
LineThickness 1.5
}
}
sequenceDiagram {
group {
LineColor black
LineThickness 2.0
FontSize 11
FontStyle bold
}
groupHeader {
BackGroundColor #e
LineColor black
FontSize 13
FontStyle bold
}
lifeLine {
BackGroundColor white
LineStyle 5
}
destroy {
}
reference {
FontSize 12
LineColor black
BackGroundColor white
LineThickness 2.0
HorizontalAlignment center
}
referenceHeader {
LineColor black
BackGroundColor #e
FontColor black
FontSize 13
FontStyle bold
LineThickness 2.0
}
box {
BackGroundColor #d
FontSize 13
FontStyle bold
}
separator {
LineColor black
LineThickness 2.0
BackGroundColor #e
FontSize 13
FontStyle bold
}
}
classDiagram {
}
visibilityIcon {
public {
LineColor #038048
BackgroundColor #84BE84
}
private {
LineColor #C82930
BackgroundColor #F24D5C
}
protected {
LineColor #B38D22
BackgroundColor #FFFF44
}
package {
LineColor #1963A0
BackgroundColor #4177AF
}
IEMandatory {
LineColor black
BackgroundColor black
}
}
spot {
spotAnnotation {
BackgroundColor #E3664A
}
spotAbstractClass {
BackgroundColor #A9DCDF
}
spotClass {
BackgroundColor #ADD1B2
}
spotInterface {
BackgroundColor #B4A7E5
}
spotEnum {
BackgroundColor #EB937F
}
spotEntity {
BackgroundColor #ADD1B2
}
}
stateDiagram {
state {
RoundCorner 25
}
element {
title {
FontStyle plain
}
}
circle {
start, stop, end {
LineColor black
BackgroundColor black
}
}
}
delay {
FontSize 11
FontStyle plain
HorizontalAlignment center
}
participant {
LineThickness 1.5
HorizontalAlignment center
}
actor {
LineThickness 2.0
HorizontalAlignment center
}
boundary {
LineThickness 2.0
HorizontalAlignment center
}
control {
LineThickness 2.0
HorizontalAlignment center
}
entity {
LineThickness 2.0
HorizontalAlignment center
}
queue {
LineThickness 2.0
HorizontalAlignment center
}
database {
HorizontalAlignment center
}
collections {
LineThickness 1.5
HorizontalAlignment center
}
swimlane {
BackGroundColor transparent
LineColor black
LineThickness 2
FontSize 18
}
diamond {
Shadowing 3.0
}
arrow {
FontSize 13
}
note {
FontSize 13
BackGroundColor #FBFB77
}
partition {
}
circle {
}
mindmapDiagram {
}
mindmapDiagram {
node {
Padding 10
Margin 10
RoundCorner 25
LineThickness 1.5
}
arrow {
LineThickness 1.0
}
}
wbsDiagram {
Padding 10
Margin 15
RoundCorner 0
LineThickness 1.5
FontSize 12
}
activityDiagram {
Shadowing 3.0
}
activityDiagram {
activity {
LineThickness 1.5
Padding 10
FontSize 12
RoundCorner 25
}
composite {
LineColor black
BackgroundColor transparent
}
diamond {
FontSize 11
}
arrow {
FontSize 11
}
circle {
start, stop, end {
LineColor black
BackgroundColor black
}
}
activityBar {
Shadowing 3.0
BackgroundColor black
}
}
task {
FontSize 11
}
milestone {
FontSize 11
BackGroundColor black
LineColor black
}
ganttDiagram {
arrow {
LineThickness 1.5
}
note {
FontSize 9
Shadowing 0.0
}
separator {
FontSize 11
FontStyle plain
BackGroundColor transparent
Margin 5
Padding 5
}
timeline {
BackgroundColor transparent
LineColor #C0C0C0
}
closed {
BackGroundColor #E0E8E8
FontColor #909898
}
task {
RoundCorner 0
Margin 2 2 2 2
Padding 0
}
undone {
BackGroundColor white
}
milestone {
Margin 2
Padding 3
}
}
usecase {
HorizontalAlignment center
}
yamlDiagram,jsonDiagram {
BackGroundColor white
FontColor black
LineColor black
arrow {
LineThickness 1
LineStyle 3-3
}
node {
LineThickness 1.5
RoundCorner 10
separator {
LineThickness 1
}
header {
FontStyle bold
}
highlight {
BackGroundColor #ccff02
}
}
}
timingDiagram {
LineColor #3
FontColor #3
FontStyle bold
LineThickness 1.5
timeline {
FontStyle plain
FontSize 11
}
arrow {
LineColor darkblue
LineThickness 1.5
}
constraintArrow {
FontSize 12
FontStyle plain
FontColor darkred
LineColor darkred
LineThickness 1.5
}
clock {
LineColor darkgreen
}
concise {
FontSize 12
LineColor darkgreen
BackgroundColor #c
LineThickness 1.5
}
robust {
FontStyle plain
FontSize 12
LineColor darkgreen
LineThickness 2
BackgroundColor #c
}
highlight {
BackgroundColor #e
LineThickness 2
LineStyle 4-4
}
}
nwdiagDiagram {
network {
FontSize 12
Shadowing 1.0
}
server {
FontSize 12
}
group {
FontSize 12
BackGroundColor #ddd
}
arrow {
FontSize 11
}
}

View File

@ -39,16 +39,16 @@ Please refer to [PlantUML site](http://plantuml.com) for that.
Here, some information about how PlantUML is implemented will be provided to help the
integration of PlantUML with other programs.
Unfortunatly, here, we have to raise a **warning**:
Unfortunately, here, we have to raise a **warning**:
While PlantUML language description remains stable over version and follow ascending
compatibility, the *implementation* of PlantUML changes very often over time.
So if you use classes described in this documentation, it's very likely that you will have
an issue someday, because thoses class may change without any notice. They could even be deleted.
an issue someday, because those class may change without any notice. They could even be deleted.
It used to happen more often than you think over years, because we try to constantly improve the
general design of PlantUML, and this imply a continuous refactoring.
general design of PlantUML, and this implies a continuous refactoring.
The only exception is the `net.sourceforge.plantuml` package, that we will keep
as stable as possible over time.

View File

@ -0,0 +1,203 @@
package com.plantuml.api.cheerpj;
import java.io.IOException;
import java.io.OutputStream;
public class Base64OutputStream extends OutputStream {
private final StringBuilder sb = new StringBuilder();
private int nb;
private byte a;
private byte b;
private byte c;
@Override
public void write(int data) throws IOException {
switch (nb) {
case 0:
a = (byte) (data & 0xFF);
nb = 1;
break;
case 1:
b = (byte) (data & 0xFF);
nb = 2;
break;
case 2:
c = (byte) (data & 0xFF);
nb = 0;
append3bytes(sb, a, b, c);
break;
}
}
@Override
public void close() throws IOException {
switch (nb) {
case 0:
break;
case 1:
append3bytes(sb, a, (byte) 0, (byte) 0);
break;
case 2:
append3bytes(sb, a, b, (byte) 0);
break;
}
super.close();
}
@Override
public String toString() {
return sb.toString();
}
private void append3bytes(StringBuilder sb, byte a, byte b, byte c) {
final int i0 = a & 0xff;
final int i1 = b & 0xff;
final int i2 = c & 0xff;
final int o0 = i0 >>> 2;
final int o1 = ((i0 & 3) << 4) | (i1 >>> 4);
final int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
final int o3 = i2 & 0x3F;
sb.append(getBase(o0));
sb.append(getBase(o1));
sb.append(getBase(o2));
sb.append(getBase(o3));
}
private String getBase(int i) {
switch (i) {
case 0:
return "A";
case 1:
return "B";
case 2:
return "C";
case 3:
return "D";
case 4:
return "E";
case 5:
return "F";
case 6:
return "G";
case 7:
return "H";
case 8:
return "I";
case 9:
return "J";
case 10:
return "K";
case 11:
return "L";
case 12:
return "M";
case 13:
return "N";
case 14:
return "O";
case 15:
return "P";
case 16:
return "Q";
case 17:
return "R";
case 18:
return "S";
case 19:
return "T";
case 20:
return "U";
case 21:
return "V";
case 22:
return "W";
case 23:
return "X";
case 24:
return "Y";
case 25:
return "Z";
case 26:
return "a";
case 27:
return "b";
case 28:
return "c";
case 29:
return "d";
case 30:
return "e";
case 31:
return "f";
case 32:
return "g";
case 33:
return "h";
case 34:
return "i";
case 35:
return "j";
case 36:
return "k";
case 37:
return "l";
case 38:
return "m";
case 39:
return "n";
case 40:
return "o";
case 41:
return "p";
case 42:
return "q";
case 43:
return "r";
case 44:
return "s";
case 45:
return "t";
case 46:
return "u";
case 47:
return "v";
case 48:
return "w";
case 49:
return "x";
case 50:
return "y";
case 51:
return "z";
case 52:
return "0";
case 53:
return "1";
case 54:
return "2";
case 55:
return "3";
case 56:
return "4";
case 57:
return "5";
case 58:
return "6";
case 59:
return "7";
case 60:
return "8";
case 61:
return "9";
case 62:
return "+";
case 63:
return "/";
}
return "*";
}
}

View File

@ -0,0 +1,120 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj;
import net.sourceforge.plantuml.ErrorUml;
import net.sourceforge.plantuml.core.Diagram;
import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.error.PSystemError;
//::revert when __CORE__
//import com.leaningtech.client.Global;
//::done
public class JsonResult {
private final StringBuilder sb = new StringBuilder();
private JsonResult(long startingTime) {
sb.append("{");
this.append("duration", System.currentTimeMillis() - startingTime);
}
private Object done() {
sb.append("}");
// ::revert when __CORE__
return sb.toString();
// return Global.JSString(sb.toString());
// ::done
}
public static Object noDataFound(long startingTime) {
final JsonResult res = new JsonResult(startingTime);
res.append("status", "No data found");
return res.done();
}
public static Object fromCrash(long startingTime, Throwable t) {
final JsonResult res = new JsonResult(startingTime);
res.append("status", "General failure");
res.append("exception", t.toString());
return res.done();
}
public static Object ok(long startingTime, ImageData imageData, Diagram diagram) {
final JsonResult res = new JsonResult(startingTime);
res.append("status", "ok");
if (imageData != null) {
res.append("width", imageData.getWidth());
res.append("height", imageData.getHeight());
}
res.append("description", diagram.getDescription().getDescription());
return res.done();
}
public static Object fromError(long startingTime, PSystemError system) {
final JsonResult res = new JsonResult(startingTime);
res.append("status", "Parsing error");
final ErrorUml err = system.getErrorsUml().iterator().next();
res.append("line", err.getPosition());
res.append("error", err.getError());
return res.done();
}
private void append(String key, String value) {
appendKeyOnly(key);
sb.append('\"');
sb.append(value);
sb.append('\"');
}
private void append(String key, long value) {
appendKeyOnly(key);
sb.append(value);
}
protected void appendKeyOnly(String key) {
if (sb.length() > 1)
sb.append(',');
sb.append('\"');
sb.append(key);
sb.append('\"');
sb.append(':');
}
}

View File

@ -0,0 +1,44 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj;
public class StaticMemory {
// ::remove folder when __HAXE__
public static String cheerpjPath = "/app/";
public static String elementIdDebugJava;
}

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
@ -31,28 +31,40 @@
*
* Original Author: Arnaud Roques
*
*
*
*/
package net.sourceforge.plantuml.posimo;
package com.plantuml.api.cheerpj;
import java.awt.geom.Line2D;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
public abstract class RacorderAbstract implements Racorder {
import net.sourceforge.plantuml.klimt.font.StringBounderRaw;
import net.sourceforge.plantuml.klimt.font.UFont;
import net.sourceforge.plantuml.klimt.font.UFontContext;
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
public final DotPath getRacordOut(Rectangle2D rect, Line2D tangeante) {
tangeante = symetric(tangeante);
return getRacordIn(rect, tangeante).reverse();
public class StringBounderCanvas extends StringBounderRaw {
private final Graphics2D g2d;
public StringBounderCanvas(Graphics2D g2d) {
super(g2d.getFontRenderContext());
this.g2d = g2d;
}
private static Line2D symetric(Line2D line) {
final double x1 = line.getX1();
final double y1 = line.getY1();
final double x2 = line.getX2();
final double y2 = line.getY2();
final double dx = x2 - x1;
final double dy = y2 - y1;
return new Line2D.Double(x1, y1, x1 - dx, y1 - dy);
@Override
public boolean matchesProperty(String propertyName) {
return false;
}
@Override
protected XDimension2D calculateDimensionInternal(UFont font, String text) {
final Font javaFont = font.getUnderlayingFont(UFontContext.G2D);
final FontMetrics fm = g2d.getFontMetrics(javaFont);
final Rectangle2D rect = fm.getStringBounds(text, g2d);
return new XDimension2D(rect.getWidth(), rect.getHeight());
}
}

View File

@ -0,0 +1,56 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj;
import java.io.IOException;
import java.io.OutputStream;
public class SvgOutputStream extends OutputStream {
private final StringBuilder sb = new StringBuilder();
@Override
public void write(int data) throws IOException {
if (data > 0 && data < 255)
sb.append((char) data);
}
@Override
public String toString() {
return sb.toString();
}
}

View File

@ -0,0 +1,49 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj;
public class Utils {
public static String cleanText(String text) {
if (text.endsWith("\n") == false)
text = text + "\n";
if (text.endsWith("@start") == false)
text = "@startuml\n" + text + "@enduml\n";
return text;
}
}

View File

@ -0,0 +1,75 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj;
import net.sourceforge.plantuml.utils.Log;
//::revert when __CORE__
//import com.leaningtech.client.Document;
//import com.leaningtech.client.Element;
//import com.leaningtech.client.Global;
//::done
public class WasmLog {
public static long start;
public static void log(String message) {
// ::revert when __CORE__
Log.info(message);
// try {
// if (start > 0) {
// final long duration = System.currentTimeMillis() - start;
// message = "(" + duration + " ms) " + message;
// }
// System.err.print(message);
// if (StaticMemory.elementIdDebugJava == null)
// return;
// final Document document = Global.document;
// if (document == null)
// return;
// final Element messageJava = document.getElementById(Global.JSString(StaticMemory.elementIdDebugJava));
// if (messageJava == null)
// return;
// messageJava.set_textContent(Global.JSString(message));
// } catch (Throwable t) {
// System.err.print("Error " + t);
// t.printStackTrace();
// }
// ::done
}
}

View File

@ -0,0 +1,7 @@
/**
* Provides classes used to manage PlantUML with the
* <a href="https://labs.leaningtech.com/cheerpj3" target="_top">
* CheerpJ</a> API.
*
*/
package com.plantuml.api.cheerpj;

View File

@ -0,0 +1,16 @@
# Directory Documentation for `cheerpj`
## Description
This package provides classes used to manage [CheerpJ](https://labs.leaningtech.com/cheerpj3) API.
## Reference
- [CheerpJ](https://labs.leaningtech.com/cheerpj3)
## Use by
- :octocat: [plantuml/plantuml-core](https://github.com/plantuml/plantuml-core)
- on [`/plantuml-core/src/main/java`](https://github.com/plantuml/plantuml-core/tree/main/plantuml-core/src/main/java)
- :octocat: [plantuml/plantuml.js](https://github.com/plantuml/plantuml.js)
## Demonstration
- [`plantuml-core/raw.html`](https://plantuml.github.io/plantuml-core/raw.html)
- [`plantuml.js`](https://plantuml.github.io/plantuml.js/)

View File

@ -0,0 +1,139 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj.v1;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics2D;
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
import com.plantuml.api.cheerpj.JsonResult;
import com.plantuml.api.cheerpj.StringBounderCanvas;
import com.plantuml.api.cheerpj.Utils;
import com.plantuml.api.cheerpj.WasmLog;
import net.sourceforge.plantuml.BlockUml;
import net.sourceforge.plantuml.BlockUmlBuilder;
import net.sourceforge.plantuml.ErrorUml;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.core.Diagram;
import net.sourceforge.plantuml.error.PSystemError;
import net.sourceforge.plantuml.klimt.color.ColorMapper;
import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColors;
import net.sourceforge.plantuml.klimt.drawing.g2d.UGraphicG2d;
import net.sourceforge.plantuml.klimt.font.StringBounder;
import net.sourceforge.plantuml.klimt.shape.URectangle;
import net.sourceforge.plantuml.preproc.Defines;
public class DirectDraw {
public static Frame frame;
public static Graphics2D g2d;
private static int frameWidth;
private static int frameHeight;
public static Object initArea(int width, int height) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("initCanvas");
if (g2d == null) {
frameWidth = width;
frameHeight = height;
frame = new Frame();
frame.setUndecorated(true);
frame.setSize(frameWidth, frameHeight);
frame.setLayout(null);
frame.setVisible(true);
g2d = (Graphics2D) frame.getGraphics();
WasmLog.log("initCanvas done = " + frame);
return 45;
}
WasmLog.log("initCanvas skipped because it has already been done");
return 47;
}
public static Object draw(String mode, String text) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
try {
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
WasmLog.log("...loading data...");
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
WasmLog.log("...processing...");
final HColor back = HColors.simple(Color.WHITE);
final StringBounder stringBounder = new StringBounderCanvas(g2d);
final UGraphicG2d ug = new UGraphicG2d(back, ColorMapper.IDENTITY, stringBounder, g2d, 1.0, FileFormat.PNG);
WasmLog.log("...cleaning...");
ug.apply(back).apply(back.bg()).draw(URectangle.build(frameWidth, frameHeight));
WasmLog.log("...drawing...");
system.exportDiagramGraphic(ug, new FileFormatOption(FileFormat.PNG));
WasmLog.log("done!");
return JsonResult.ok(start, null, system);
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
}

View File

@ -0,0 +1,121 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj.v1;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.IOException;
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
import com.plantuml.api.cheerpj.JsonResult;
import com.plantuml.api.cheerpj.Utils;
import com.plantuml.api.cheerpj.WasmLog;
import net.sourceforge.plantuml.BlockUml;
import net.sourceforge.plantuml.BlockUmlBuilder;
import net.sourceforge.plantuml.ErrorUml;
import net.sourceforge.plantuml.code.NoPlantumlCompressionException;
import net.sourceforge.plantuml.code.TranscoderUtil;
import net.sourceforge.plantuml.core.Diagram;
import net.sourceforge.plantuml.error.PSystemError;
import net.sourceforge.plantuml.preproc.Defines;
//::revert when __CORE__
//import com.leaningtech.client.Global;
//::done
public class Info {
public static Object decode(String text) {
String result;
try {
result = TranscoderUtil.getDefaultTranscoder().decode(text);
} catch (NoPlantumlCompressionException e) {
e.printStackTrace();
result = "";
}
// ::revert when __CORE__
return result;
// return Global.JSString(result);
// ::done
}
public static Object encode(String text) {
String result;
try {
result = TranscoderUtil.getDefaultTranscoder().encode(text);
} catch (IOException e) {
e.printStackTrace();
result = "";
}
// ::revert when __CORE__
return result;
// return Global.JSString(result);
// ::done
}
public static Object syntaxCheck(String text) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("Starting processing");
try {
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
return JsonResult.ok(start, null, system);
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
}

View File

@ -0,0 +1,156 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj.v1;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.File;
import java.io.FileOutputStream;
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
import com.plantuml.api.cheerpj.Base64OutputStream;
import com.plantuml.api.cheerpj.JsonResult;
import com.plantuml.api.cheerpj.Utils;
import com.plantuml.api.cheerpj.WasmLog;
import net.sourceforge.plantuml.BlockUml;
import net.sourceforge.plantuml.BlockUmlBuilder;
import net.sourceforge.plantuml.ErrorUml;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.core.Diagram;
import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.error.PSystemError;
import net.sourceforge.plantuml.klimt.color.ColorMapper;
import net.sourceforge.plantuml.preproc.Defines;
//::revert when __CORE__
//import com.leaningtech.client.Global;
//::done
public class Png {
public static Object convertToBlob(String mode, String text, String pathOut) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("Starting processing");
try {
FileFormatOption format = new FileFormatOption(FileFormat.PNG);
if ("dark".equalsIgnoreCase(mode))
format = format.withColorMapper(ColorMapper.DARK_MODE);
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
WasmLog.log("...processing...");
final FileOutputStream fos = new FileOutputStream(new File(pathOut));
WasmLog.log("...loading data...");
final ImageData imageData = system.exportDiagram(fos, 0, format);
WasmLog.log("Done!");
fos.close();
return JsonResult.ok(start, imageData, system);
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
public static Object convertToBase64(String mode, String text) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("Starting processing");
try {
FileFormatOption format = new FileFormatOption(FileFormat.PNG);
if ("dark".equalsIgnoreCase(mode))
format = format.withColorMapper(ColorMapper.DARK_MODE);
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
WasmLog.log("...processing...");
final Base64OutputStream os64 = new Base64OutputStream();
WasmLog.log("...loading data...");
final ImageData imageData = system.exportDiagram(os64, 0, format);
WasmLog.log("Done!");
os64.close();
final String base64 = os64.toString();
// ::revert when __CORE__
return base64;
// return Global.JSString(base64);
// ::done
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
}

View File

@ -0,0 +1,247 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj.v1;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
import com.plantuml.api.cheerpj.JsonResult;
import com.plantuml.api.cheerpj.Utils;
import com.plantuml.api.cheerpj.WasmLog;
import net.sourceforge.plantuml.BlockUml;
import net.sourceforge.plantuml.BlockUmlBuilder;
import net.sourceforge.plantuml.EmptyImageBuilder;
import net.sourceforge.plantuml.ErrorUml;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.api.ImageDataSimple;
import net.sourceforge.plantuml.core.Diagram;
import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.error.PSystemError;
import net.sourceforge.plantuml.klimt.color.ColorMapper;
import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColors;
import net.sourceforge.plantuml.klimt.drawing.g2d.UGraphicG2d;
import net.sourceforge.plantuml.klimt.font.StringBounder;
import net.sourceforge.plantuml.klimt.shape.URectangle;
import net.sourceforge.plantuml.preproc.Defines;
public class Raw {
private static final int MAX = 2000;
static private BufferedImage im;
static private Graphics2D g2d;
public static Object convertToBlob(String mode, String text, String pathOut) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("Starting processing");
try {
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
WasmLog.log("...loading data...");
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
WasmLog.log("...processing...");
final boolean dark = "dark".equalsIgnoreCase(mode);
final StringBounder stringBounder = FileFormat.PNG.getDefaultStringBounder();
if (im == null) {
final EmptyImageBuilder imageBuilder = new EmptyImageBuilder(null, MAX, MAX, Color.WHITE,
stringBounder);
im = imageBuilder.getBufferedImage();
g2d = im.createGraphics();
}
final HColor back;
final ColorMapper mapper;
if (dark) {
back = HColors.simple(Color.BLACK);
mapper = ColorMapper.DARK_MODE;
} else {
back = HColors.simple(Color.WHITE);
mapper = ColorMapper.IDENTITY;
}
final UGraphicG2d ug = new UGraphicG2d(back, mapper, stringBounder, g2d, 1.0, FileFormat.RAW);
WasmLog.log("...cleaning...");
ug.apply(back).apply(back.bg()).draw(URectangle.build(MAX, MAX));
ug.resetMax();
WasmLog.log("...drawing...");
system.exportDiagramGraphic(ug, new FileFormatOption(FileFormat.PNG));
final int width = (int) (2 + ug.getMaxX());
final int height = (int) (2 + ug.getMaxY());
WasmLog.log("...size is " + width + " x " + height + " ...");
final FileOutputStream fos = new FileOutputStream(new File(pathOut));
fos.write(((width & 0xFF00) >> 8));
fos.write((width & 0xFF));
fos.write(((height & 0xFF00) >> 8));
fos.write((height & 0xFF));
for (int j = 0; j < height; j++)
for (int i = 0; i < width; i++) {
int pixel = im.getRGB(i, j);
fos.write(((pixel & 0xFF0000) >> 16));
fos.write(((pixel & 0x00FF00) >> 8));
fos.write((pixel & 0xFF));
fos.write((255));
// // line.scanline[j++] = (((sample & 0xFF000000) >> 24) & 0xFF); // A
}
WasmLog.log("done!");
final ImageData imageData = new ImageDataSimple(width, height);
return JsonResult.ok(start, imageData, system);
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
public static Object convert(String mode, String text) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("Starting processing");
try {
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
WasmLog.log("...loading data...");
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
WasmLog.log("...processing...");
final boolean dark = "dark".equalsIgnoreCase(mode);
final StringBounder stringBounder = FileFormat.PNG.getDefaultStringBounder();
if (im == null) {
final EmptyImageBuilder imageBuilder = new EmptyImageBuilder(null, MAX, MAX, Color.WHITE,
stringBounder);
im = imageBuilder.getBufferedImage();
g2d = im.createGraphics();
}
final HColor back;
final ColorMapper mapper;
if (dark) {
back = HColors.simple(Color.BLACK);
mapper = ColorMapper.DARK_MODE;
} else {
back = HColors.simple(Color.WHITE);
mapper = ColorMapper.IDENTITY;
}
final UGraphicG2d ug = new UGraphicG2d(back, mapper, stringBounder, g2d, 1.0, FileFormat.RAW);
WasmLog.log("...cleaning...");
ug.apply(back).apply(back.bg()).draw(URectangle.build(MAX, MAX));
ug.resetMax();
WasmLog.log("...drawing...");
system.exportDiagramGraphic(ug, new FileFormatOption(FileFormat.PNG));
final int width = (int) (2 + ug.getMaxX());
final int height = (int) (2 + ug.getMaxY());
WasmLog.log("...size is " + width + " x " + height + " ...");
final byte[] data = new byte[width * height * 4];
WasmLog.log("...allocating array...");
int pos = 0;
data[pos++] = (byte) ((width & 0xFF00) >> 8);
data[pos++] = (byte) (width & 0xFF);
data[pos++] = (byte) ((height & 0xFF00) >> 8);
data[pos++] = (byte) (height & 0xFF);
for (int j = 0; j < height; j++)
for (int i = 0; i < width; i++) {
int pixel = im.getRGB(i, j);
data[pos++] = (byte) ((pixel & 0xFF0000) >> 16);
data[pos++] = (byte) ((pixel & 0x00FF00) >> 8);
data[pos++] = (byte) (pixel & 0xFF);
data[pos++] = (byte) (255);
// // line.scanline[j++] = (((sample & 0xFF000000) >> 24) & 0xFF); // A
}
WasmLog.log("done!");
return data;
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
}

View File

@ -0,0 +1,60 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj.v1;
import java.io.IOException;
import com.plantuml.api.cheerpj.StaticMemory;
import net.sourceforge.plantuml.version.Version;
public class RunInit {
public static void main(String[] argsArray) throws IOException {
if (argsArray.length > 0)
StaticMemory.cheerpjPath = argsArray[0];
if (argsArray.length > 1)
StaticMemory.elementIdDebugJava = argsArray[1];
if (StaticMemory.cheerpjPath.endsWith("/") == false)
StaticMemory.cheerpjPath = StaticMemory.cheerpjPath + "/";
System.err.print("PlantUML Version: " + Version.versionString());
System.err.print("Init ok. cheerpjPath is " + StaticMemory.cheerpjPath);
if (StaticMemory.elementIdDebugJava != null)
System.err.print("I will echo debug message to element id " + StaticMemory.elementIdDebugJava);
}
}

View File

@ -0,0 +1,113 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
* PlantUML is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PlantUML distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
*
* Original Author: Arnaud Roques
*
*
*/
package com.plantuml.api.cheerpj.v1;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.StringReader;
import java.util.Collections;
import java.util.List;
import com.plantuml.api.cheerpj.JsonResult;
import com.plantuml.api.cheerpj.SvgOutputStream;
import com.plantuml.api.cheerpj.Utils;
import com.plantuml.api.cheerpj.WasmLog;
import net.sourceforge.plantuml.BlockUml;
import net.sourceforge.plantuml.BlockUmlBuilder;
import net.sourceforge.plantuml.ErrorUml;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.core.Diagram;
import net.sourceforge.plantuml.core.ImageData;
import net.sourceforge.plantuml.error.PSystemError;
import net.sourceforge.plantuml.klimt.color.ColorMapper;
import net.sourceforge.plantuml.preproc.Defines;
//::revert when __CORE__
//import com.leaningtech.client.Global;
//::done
public class Svg {
// ::remove folder when __HAXE__
public static Object convert(String mode, String text) {
final long start = System.currentTimeMillis();
WasmLog.start = start;
WasmLog.log("Starting processing");
try {
FileFormatOption format = new FileFormatOption(FileFormat.SVG);
if ("dark".equalsIgnoreCase(mode))
format = format.withColorMapper(ColorMapper.DARK_MODE);
text = Utils.cleanText(text);
final BlockUmlBuilder builder = new BlockUmlBuilder(Collections.<String>emptyList(), UTF_8,
Defines.createEmpty(), new StringReader(text), null, "string");
List<BlockUml> blocks = builder.getBlockUmls();
if (blocks.size() == 0)
return JsonResult.noDataFound(start);
final Diagram system = blocks.get(0).getDiagram();
if (system instanceof PSystemError) {
final ErrorUml error = ((PSystemError) system).getFirstError();
WasmLog.log("[" + error.getPosition() + "] " + error.getError());
return JsonResult.fromError(start, (PSystemError) system);
}
WasmLog.log("...processing...");
final SvgOutputStream svgos = new SvgOutputStream();
WasmLog.log("...loading data...");
final ImageData imageData = system.exportDiagram(svgos, 0, format);
WasmLog.log("Done!");
svgos.close();
final String svg = svgos.toString();
// ::revert when __CORE__
return svg;
// return Global.JSString(svg);
// ::done
} catch (Throwable t) {
WasmLog.log("Fatal error " + t);
return JsonResult.fromCrash(start, t);
}
}
}

View File

@ -1,103 +0,0 @@
/*
* Copyright 2007 ZXing authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ext.plantuml.com.google.zxing;
import java.util.Hashtable;
/**
* Enumerates barcode formats known to this package.
*
* @author Sean Owen
*/
public final class BarcodeFormat {
// No, we can't use an enum here. J2ME doesn't support it.
private static final Hashtable VALUES = new Hashtable();
/** QR Code 2D barcode format. */
public static final BarcodeFormat QR_CODE = new BarcodeFormat("QR_CODE");
/** Data Matrix 2D barcode format. */
public static final BarcodeFormat DATA_MATRIX = new BarcodeFormat("DATA_MATRIX");
/** UPC-E 1D format. */
public static final BarcodeFormat UPC_E = new BarcodeFormat("UPC_E");
/** UPC-A 1D format. */
public static final BarcodeFormat UPC_A = new BarcodeFormat("UPC_A");
/** EAN-8 1D format. */
public static final BarcodeFormat EAN_8 = new BarcodeFormat("EAN_8");
/** EAN-13 1D format. */
public static final BarcodeFormat EAN_13 = new BarcodeFormat("EAN_13");
/** UPC/EAN extension format. Not a stand-alone format. */
public static final BarcodeFormat UPC_EAN_EXTENSION = new BarcodeFormat("UPC_EAN_EXTENSION");
/** Code 128 1D format. */
public static final BarcodeFormat CODE_128 = new BarcodeFormat("CODE_128");
/** Code 39 1D format. */
public static final BarcodeFormat CODE_39 = new BarcodeFormat("CODE_39");
/** Code 93 1D format. */
public static final BarcodeFormat CODE_93 = new BarcodeFormat("CODE_93");
/** CODABAR 1D format. */
public static final BarcodeFormat CODABAR = new BarcodeFormat("CODABAR");
/** ITF (Interleaved Two of Five) 1D format. */
public static final BarcodeFormat ITF = new BarcodeFormat("ITF");
/** RSS 14 */
public static final BarcodeFormat RSS14 = new BarcodeFormat("RSS14");
/** PDF417 format. */
public static final BarcodeFormat PDF417 = new BarcodeFormat("PDF417");
/** RSS EXPANDED */
public static final BarcodeFormat RSS_EXPANDED = new BarcodeFormat("RSS_EXPANDED");
private final String name;
private BarcodeFormat(String name) {
this.name = name;
VALUES.put(name, this);
}
public String getName() {
return name;
}
public String toString() {
return name;
}
public static BarcodeFormat valueOf(String name) {
if (name == null || name.length() == 0) {
throw new IllegalArgumentException();
}
BarcodeFormat format = (BarcodeFormat) VALUES.get(name);
if (format == null) {
throw new IllegalArgumentException();
}
return format;
}
}

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*
@ -26,6 +26,7 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.CONSTRUCTOR, ElementType.METHOD })
public @interface Comment {
// ::remove folder when __HAXE__
String comment();

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

View File

@ -2,14 +2,14 @@
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2020, Arnaud Roques
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: http://plantuml.com
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* http://plantuml.com/patreon (only 1$ per month!)
* http://plantuml.com/paypal
* https://plantuml.com/patreon (only 1$ per month!)
* https://plantuml.com/paypal
*
* This file is part of PlantUML.
*

Some files were not shown because too many files have changed in this diff Show More