mirror of
https://github.com/octoleo/plantuml.git
synced 2025-02-03 20:48:32 +00:00
Merge remote-tracking branch 'upstream/master' into cheneer
This commit is contained in:
commit
fb9fd7e13e
499
.github/actions/configure-workflow/package-lock.json
generated
vendored
499
.github/actions/configure-workflow/package-lock.json
generated
vendored
@ -125,28 +125,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/generator": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
|
||||
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
|
||||
"integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.15.6",
|
||||
"jsesc": "^2.5.1",
|
||||
"source-map": "^0.5.0"
|
||||
"@babel/types": "^7.23.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.2",
|
||||
"@jridgewell/trace-mapping": "^0.3.17",
|
||||
"jsesc": "^2.5.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/generator/node_modules/source-map": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-compilation-targets": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz",
|
||||
@ -165,39 +157,35 @@
|
||||
"@babel/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-function-name": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
|
||||
"integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
|
||||
"node_modules/@babel/helper-environment-visitor": {
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
|
||||
"integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-get-function-arity": "^7.15.4",
|
||||
"@babel/template": "^7.15.4",
|
||||
"@babel/types": "^7.15.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-get-function-arity": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
|
||||
"integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
|
||||
"node_modules/@babel/helper-function-name": {
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
|
||||
"integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/template": "^7.22.15",
|
||||
"@babel/types": "^7.23.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-hoist-variables": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
|
||||
"integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
|
||||
"version": "7.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
|
||||
"integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/types": "^7.22.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@ -246,15 +234,6 @@
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.15.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
|
||||
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-optimise-call-expression": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz",
|
||||
@ -304,21 +283,30 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-split-export-declaration": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
|
||||
"integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
|
||||
"version": "7.22.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
|
||||
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/types": "^7.22.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
|
||||
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.14.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
|
||||
"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
|
||||
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@ -348,13 +336,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/highlight": {
|
||||
"version": "7.14.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
|
||||
"integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
|
||||
"integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.14.5",
|
||||
"chalk": "^2.0.0",
|
||||
"@babel/helper-validator-identifier": "^7.22.20",
|
||||
"chalk": "^2.4.2",
|
||||
"js-tokens": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@ -362,9 +350,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
|
||||
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
|
||||
"integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
@ -536,44 +524,46 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/template": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
|
||||
"integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
|
||||
"version": "7.22.15",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
|
||||
"integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.14.5",
|
||||
"@babel/parser": "^7.15.4",
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/code-frame": "^7.22.13",
|
||||
"@babel/parser": "^7.22.15",
|
||||
"@babel/types": "^7.22.15"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/template/node_modules/@babel/code-frame": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
|
||||
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
|
||||
"version": "7.22.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/highlight": "^7.14.5"
|
||||
"@babel/highlight": "^7.22.13",
|
||||
"chalk": "^2.4.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
|
||||
"integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
|
||||
"integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.14.5",
|
||||
"@babel/generator": "^7.15.4",
|
||||
"@babel/helper-function-name": "^7.15.4",
|
||||
"@babel/helper-hoist-variables": "^7.15.4",
|
||||
"@babel/helper-split-export-declaration": "^7.15.4",
|
||||
"@babel/parser": "^7.15.4",
|
||||
"@babel/types": "^7.15.4",
|
||||
"@babel/code-frame": "^7.22.13",
|
||||
"@babel/generator": "^7.23.0",
|
||||
"@babel/helper-environment-visitor": "^7.22.20",
|
||||
"@babel/helper-function-name": "^7.23.0",
|
||||
"@babel/helper-hoist-variables": "^7.22.5",
|
||||
"@babel/helper-split-export-declaration": "^7.22.6",
|
||||
"@babel/parser": "^7.23.0",
|
||||
"@babel/types": "^7.23.0",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
@ -582,39 +572,32 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse/node_modules/@babel/code-frame": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
|
||||
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
|
||||
"version": "7.22.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/highlight": "^7.14.5"
|
||||
"@babel/highlight": "^7.22.13",
|
||||
"chalk": "^2.4.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.15.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
|
||||
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
|
||||
"integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.14.9",
|
||||
"@babel/helper-string-parser": "^7.22.5",
|
||||
"@babel/helper-validator-identifier": "^7.22.20",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types/node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.15.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
|
||||
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@bcoe/v8-coverage": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
|
||||
@ -1414,6 +1397,54 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/resolve-uri": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
|
||||
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/set-array": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.15",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
||||
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@jridgewell/trace-mapping": {
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
|
||||
"integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/resolve-uri": "^3.1.0",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||
}
|
||||
},
|
||||
"node_modules/@nodelib/fs.scandir": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
|
||||
@ -7279,6 +7310,12 @@
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/querystringify": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
|
||||
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
@ -7315,6 +7352,12 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/requires-port": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
||||
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
@ -7880,14 +7923,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/tough-cookie": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
|
||||
"integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
||||
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"psl": "^1.1.33",
|
||||
"punycode": "^2.1.1",
|
||||
"universalify": "^0.1.2"
|
||||
"universalify": "^0.2.0",
|
||||
"url-parse": "^1.5.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
@ -8093,9 +8137,9 @@
|
||||
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
|
||||
},
|
||||
"node_modules/universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|
||||
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 4.0.0"
|
||||
@ -8110,6 +8154,16 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/url-parse": {
|
||||
"version": "1.5.10",
|
||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"querystringify": "^2.1.1",
|
||||
"requires-port": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
@ -8483,22 +8537,15 @@
|
||||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz",
|
||||
"integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==",
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
|
||||
"integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.15.6",
|
||||
"jsesc": "^2.5.1",
|
||||
"source-map": "^0.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"source-map": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
||||
"dev": true
|
||||
}
|
||||
"@babel/types": "^7.23.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.2",
|
||||
"@jridgewell/trace-mapping": "^0.3.17",
|
||||
"jsesc": "^2.5.1"
|
||||
}
|
||||
},
|
||||
"@babel/helper-compilation-targets": {
|
||||
@ -8513,33 +8560,29 @@
|
||||
"semver": "^6.3.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-function-name": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz",
|
||||
"integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-get-function-arity": "^7.15.4",
|
||||
"@babel/template": "^7.15.4",
|
||||
"@babel/types": "^7.15.4"
|
||||
}
|
||||
"@babel/helper-environment-visitor": {
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
|
||||
"integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/helper-get-function-arity": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz",
|
||||
"integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
|
||||
"@babel/helper-function-name": {
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
|
||||
"integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/template": "^7.22.15",
|
||||
"@babel/types": "^7.23.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-hoist-variables": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz",
|
||||
"integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
|
||||
"version": "7.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
|
||||
"integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/types": "^7.22.5"
|
||||
}
|
||||
},
|
||||
"@babel/helper-member-expression-to-functions": {
|
||||
@ -8574,14 +8617,6 @@
|
||||
"@babel/template": "^7.15.4",
|
||||
"@babel/traverse": "^7.15.4",
|
||||
"@babel/types": "^7.15.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.15.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
|
||||
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/helper-optimise-call-expression": {
|
||||
@ -8621,18 +8656,24 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-split-export-declaration": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz",
|
||||
"integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
|
||||
"version": "7.22.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
|
||||
"integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/types": "^7.22.5"
|
||||
}
|
||||
},
|
||||
"@babel/helper-string-parser": {
|
||||
"version": "7.22.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
|
||||
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.14.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
|
||||
"integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
|
||||
"integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/helper-validator-option": {
|
||||
@ -8653,20 +8694,20 @@
|
||||
}
|
||||
},
|
||||
"@babel/highlight": {
|
||||
"version": "7.14.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
|
||||
"integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
|
||||
"version": "7.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
|
||||
"integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.14.5",
|
||||
"chalk": "^2.0.0",
|
||||
"@babel/helper-validator-identifier": "^7.22.20",
|
||||
"chalk": "^2.4.2",
|
||||
"js-tokens": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz",
|
||||
"integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==",
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
|
||||
"integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/plugin-syntax-async-generators": {
|
||||
@ -8787,71 +8828,67 @@
|
||||
}
|
||||
},
|
||||
"@babel/template": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz",
|
||||
"integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
|
||||
"version": "7.22.15",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
|
||||
"integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.14.5",
|
||||
"@babel/parser": "^7.15.4",
|
||||
"@babel/types": "^7.15.4"
|
||||
"@babel/code-frame": "^7.22.13",
|
||||
"@babel/parser": "^7.22.15",
|
||||
"@babel/types": "^7.22.15"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/code-frame": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
|
||||
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
|
||||
"version": "7.22.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/highlight": "^7.14.5"
|
||||
"@babel/highlight": "^7.22.13",
|
||||
"chalk": "^2.4.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.15.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz",
|
||||
"integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
|
||||
"version": "7.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
|
||||
"integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "^7.14.5",
|
||||
"@babel/generator": "^7.15.4",
|
||||
"@babel/helper-function-name": "^7.15.4",
|
||||
"@babel/helper-hoist-variables": "^7.15.4",
|
||||
"@babel/helper-split-export-declaration": "^7.15.4",
|
||||
"@babel/parser": "^7.15.4",
|
||||
"@babel/types": "^7.15.4",
|
||||
"@babel/code-frame": "^7.22.13",
|
||||
"@babel/generator": "^7.23.0",
|
||||
"@babel/helper-environment-visitor": "^7.22.20",
|
||||
"@babel/helper-function-name": "^7.23.0",
|
||||
"@babel/helper-hoist-variables": "^7.22.5",
|
||||
"@babel/helper-split-export-declaration": "^7.22.6",
|
||||
"@babel/parser": "^7.23.0",
|
||||
"@babel/types": "^7.23.0",
|
||||
"debug": "^4.1.0",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/code-frame": {
|
||||
"version": "7.15.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz",
|
||||
"integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==",
|
||||
"version": "7.22.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/highlight": "^7.14.5"
|
||||
"@babel/highlight": "^7.22.13",
|
||||
"chalk": "^2.4.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.15.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz",
|
||||
"integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==",
|
||||
"version": "7.23.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
|
||||
"integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-validator-identifier": "^7.14.9",
|
||||
"@babel/helper-string-parser": "^7.22.5",
|
||||
"@babel/helper-validator-identifier": "^7.22.20",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": {
|
||||
"version": "7.15.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
|
||||
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@bcoe/v8-coverage": {
|
||||
@ -9465,6 +9502,45 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/set-array": "^1.0.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.9"
|
||||
}
|
||||
},
|
||||
"@jridgewell/resolve-uri": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
|
||||
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/set-array": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
|
||||
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/sourcemap-codec": {
|
||||
"version": "1.4.15",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
|
||||
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
|
||||
"dev": true
|
||||
},
|
||||
"@jridgewell/trace-mapping": {
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
|
||||
"integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@jridgewell/resolve-uri": "^3.1.0",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||
}
|
||||
},
|
||||
"@nodelib/fs.scandir": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
|
||||
@ -13821,6 +13897,12 @@
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
||||
"dev": true
|
||||
},
|
||||
"querystringify": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
|
||||
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"react-is": {
|
||||
"version": "17.0.2",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
|
||||
@ -13845,6 +13927,12 @@
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||
"dev": true
|
||||
},
|
||||
"requires-port": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
||||
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
|
||||
"dev": true
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
@ -14271,14 +14359,15 @@
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
|
||||
"integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
||||
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"psl": "^1.1.33",
|
||||
"punycode": "^2.1.1",
|
||||
"universalify": "^0.1.2"
|
||||
"universalify": "^0.2.0",
|
||||
"url-parse": "^1.5.3"
|
||||
}
|
||||
},
|
||||
"tr46": {
|
||||
@ -14414,9 +14503,9 @@
|
||||
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w=="
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|
||||
"integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
|
||||
"dev": true
|
||||
},
|
||||
"uri-js": {
|
||||
@ -14428,6 +14517,16 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"url-parse": {
|
||||
"version": "1.5.10",
|
||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
|
||||
"integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"querystringify": "^2.1.1",
|
||||
"requires-port": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "8.3.2",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||
|
7
.github/labeler.yml
vendored
7
.github/labeler.yml
vendored
@ -21,10 +21,15 @@
|
||||
- 'src/**/*'
|
||||
- 'stdlib/**/*'
|
||||
- 'svg/**/*'
|
||||
- 'test/**/*'
|
||||
- 'themes/**/*'
|
||||
- 'manifest.txt'
|
||||
|
||||
'm:test':
|
||||
- 'test/**/*'
|
||||
|
||||
'm:license':
|
||||
- '**/*license.txt'
|
||||
|
||||
'm:docker':
|
||||
- Dockerfile
|
||||
|
||||
|
6
.github/scripts/release-snapshot.sh
vendored
6
.github/scripts/release-snapshot.sh
vendored
@ -36,6 +36,9 @@ cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-sources.jar" "gith
|
||||
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
|
||||
@ -60,6 +63,9 @@ if [[ -e "build/publications/maven/module.json.asc" ]]; then
|
||||
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"
|
||||
|
6
.github/scripts/release.sh
vendored
6
.github/scripts/release.sh
vendored
@ -29,6 +29,9 @@ cp "plantuml-lgpl/build/libs/plantuml-lgpl-${RELEASE_VERSION}-sources.jar" "gith
|
||||
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
|
||||
@ -52,6 +55,9 @@ if [[ -e "build/publications/maven/module.json.asc" ]]; then
|
||||
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 \
|
||||
|
97
.github/workflows/ci.yml
vendored
97
.github/workflows/ci.yml
vendored
@ -26,11 +26,12 @@ 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@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Configure workflow
|
||||
id: config
|
||||
@ -53,7 +54,6 @@ 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
|
||||
@ -61,6 +61,8 @@ jobs:
|
||||
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" && "${ACTOR}" == "arnaudroques" ]]; then
|
||||
echo "::notice title=::This run will release a snapshot"
|
||||
@ -68,9 +70,13 @@ jobs:
|
||||
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
|
||||
@ -89,7 +95,7 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
if: needs.workflow_config.outputs.do_test_linux == 'true'
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up java
|
||||
if: needs.workflow_config.outputs.do_test_linux == 'true'
|
||||
@ -116,43 +122,6 @@ jobs:
|
||||
name: ${{ github.run_number }}-${{ matrix.os }}-java-${{ matrix.java_version }}-test-reports
|
||||
path: build/reports/tests/
|
||||
|
||||
test_windows:
|
||||
needs: workflow_config
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
java_version: [ 8 ]
|
||||
os: [ windows-latest ]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
if: needs.workflow_config.outputs.do_test_windows == 'true'
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up java
|
||||
if: needs.workflow_config.outputs.do_test_windows == 'true'
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: ${{ matrix.java_version }}
|
||||
distribution: temurin
|
||||
cache: gradle
|
||||
|
||||
# Compile / Test / Package are separate steps so the reason for any failure is more obvious in GitHub UI
|
||||
- name: Compile
|
||||
if: needs.workflow_config.outputs.do_test_windows == 'true'
|
||||
run: gradle -q compileJava --no-daemon
|
||||
|
||||
- name: Test
|
||||
if: needs.workflow_config.outputs.do_test_windows == 'true'
|
||||
run: gradle test --no-daemon -i
|
||||
|
||||
- name: Upload test reports
|
||||
uses: actions/upload-artifact@v3
|
||||
if: needs.workflow_config.outputs.do_test_windows == 'true'
|
||||
with:
|
||||
# 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/
|
||||
|
||||
build_artifacts:
|
||||
needs: [ workflow_config ]
|
||||
@ -161,7 +130,7 @@ jobs:
|
||||
release_version: ${{ steps.version.outputs.release_version }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
@ -197,6 +166,7 @@ jobs:
|
||||
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: |
|
||||
@ -212,9 +182,34 @@ jobs:
|
||||
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@v4
|
||||
|
||||
- name: Set up java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: 17
|
||||
distribution: temurin
|
||||
|
||||
- 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' ||
|
||||
@ -223,7 +218,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up java
|
||||
uses: actions/setup-java@v3
|
||||
@ -243,6 +238,7 @@ jobs:
|
||||
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
|
||||
@ -260,6 +256,7 @@ jobs:
|
||||
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'
|
||||
@ -296,19 +293,19 @@ jobs:
|
||||
gradle --debug publish
|
||||
|
||||
push_to_docker_registry:
|
||||
needs: [ workflow_config, upload, test_linux, test_windows ]
|
||||
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@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
uses: docker/setup-qemu-action@v3
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
uses: docker/metadata-action@v5
|
||||
with:
|
||||
# list of Docker images to use as base name for tags
|
||||
images: |
|
||||
@ -321,18 +318,18 @@ jobs:
|
||||
type=semver,pattern={{major}}
|
||||
type=sha
|
||||
- name: Log into Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
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@v2
|
||||
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@v4
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
|
@ -24,8 +24,8 @@ jobs:
|
||||
repo: context.repo.repo,
|
||||
body: welcomeMessage
|
||||
})
|
||||
- uses: peter-evans/close-issue@v2
|
||||
- uses: actions/add-to-project@v0.4.1
|
||||
- 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 }}
|
3
.github/workflows/native-image.yml
vendored
3
.github/workflows/native-image.yml
vendored
@ -23,7 +23,7 @@ jobs:
|
||||
runs-on: ${{matrix.os}}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- uses: graalvm/setup-graalvm@v1
|
||||
with:
|
||||
@ -42,6 +42,7 @@ jobs:
|
||||
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
|
||||
|
@ -11,7 +11,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: configure workflow
|
||||
uses: ./.github/actions/configure-workflow
|
||||
id: config
|
||||
|
143
BUILDING.md
Normal file
143
BUILDING.md
Normal 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 version’s 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
7
CITATION.cff
Normal 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"
|
113
README.md
113
README.md
@ -1,5 +1,6 @@
|
||||
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/)
|
||||
@ -16,49 +17,89 @@ 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 **not** affected by the log4j vulnerability.](https://github.com/plantuml/plantuml/issues/826)
|
||||
## ℹ️ About
|
||||
|
||||
PlantUML is a component that allows to quickly write:
|
||||
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.
|
||||
|
||||
* [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).
|
||||
### 🗃️ Supported Diagram Types
|
||||
|
||||
The following non-UML diagrams are also supported:
|
||||
* [JSON data](http://plantuml.com/json)
|
||||
* [YAML data](http://plantuml.com/yaml)
|
||||
* [Extended Backus-Naur Form (EBNF) diagram](http://plantuml.com/ebnf)
|
||||
* [Regular Expression (regex) diagram](http://plantuml.com/regex)
|
||||
* [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)
|
||||
- 🧩 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)
|
||||
- [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)
|
||||
- [IE/ER (Information Engineering/Entity Relationship)](http://plantuml.com/ie-diagram)
|
||||
|
||||
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)
|
||||
### 📣 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
attic.md
Normal file
12
attic.md
Normal 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)
|
@ -13,6 +13,7 @@ plugins {
|
||||
java
|
||||
`maven-publish`
|
||||
signing
|
||||
// id("com.adarshr.test-logger") version "3.2.0"
|
||||
}
|
||||
|
||||
group = "net.sourceforge.plantuml"
|
||||
@ -27,12 +28,22 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.apache.ant:ant:1.10.13")
|
||||
compileOnly("org.apache.ant:ant:1.10.14")
|
||||
|
||||
testImplementation("io.github.glytching:junit-extensions:2.6.0")
|
||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
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.8")
|
||||
"pdfRuntimeOnly"("org.apache.xmlgraphics:batik-all:1.16")
|
||||
|
||||
"pdfRuntimeOnly"("org.apache.xmlgraphics:fop:2.9")
|
||||
"pdfRuntimeOnly"("org.apache.xmlgraphics:batik-all:1.17")
|
||||
}
|
||||
|
||||
repositories {
|
||||
@ -147,6 +158,10 @@ tasks.withType<Javadoc>().configureEach {
|
||||
}
|
||||
|
||||
tasks.test {
|
||||
doFirst {
|
||||
println("Java Home:" + System.getProperty("java.home"));
|
||||
println("Java Version: " + System.getProperty("java.version"));
|
||||
}
|
||||
useJUnitPlatform()
|
||||
testLogging.showStandardStreams = true
|
||||
}
|
||||
|
137
build.xml
Normal file
137
build.xml
Normal file
@ -0,0 +1,137 @@
|
||||
<!--
|
||||
========================================================================
|
||||
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" />
|
||||
|
||||
<!-- 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" />
|
||||
<include name="*.svg" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/net/sourceforge/plantuml/emoji/data">
|
||||
<fileset dir="src/net/sourceforge/plantuml/emoji/data">
|
||||
<include name="*.txt" />
|
||||
<include name="*.svg" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/net/sourceforge/plantuml/fun">
|
||||
<fileset dir="src/net/sourceforge/plantuml/fun">
|
||||
<include name="*.png" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/sprites/archimate">
|
||||
<fileset dir="src/sprites/archimate">
|
||||
<include name="*.png" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/net/sourceforge/plantuml/dedication">
|
||||
<fileset dir="src/net/sourceforge/plantuml/dedication">
|
||||
<include name="*.png" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/net/sourceforge/plantuml/math">
|
||||
<fileset dir="src/net/sourceforge/plantuml/math">
|
||||
<include name="*.js" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/net/sourceforge/plantuml/utils">
|
||||
<fileset dir="src/net/sourceforge/plantuml/utils">
|
||||
<include name="*.txt" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/net/sourceforge/plantuml/windowsdot">
|
||||
<fileset dir="src/net/sourceforge/plantuml/windowsdot">
|
||||
<include name="*.dat" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/stdlib">
|
||||
<fileset dir="stdlib">
|
||||
<include name="**/*.repx" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/skin">
|
||||
<fileset dir="skin">
|
||||
<include name="**/*.skin" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/themes">
|
||||
<fileset dir="themes">
|
||||
<include name="**/*.puml" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="build/svg">
|
||||
<fileset dir="svg">
|
||||
<include name="**/*.js" />
|
||||
<include name="**/*.css" />
|
||||
</fileset>
|
||||
</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" />
|
||||
<attribute name="Main-Class" value="net.sourceforge.plantuml.Run" />
|
||||
<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>
|
||||
|
||||
</project>
|
81
docs/TESTING.md
Normal file
81
docs/TESTING.md
Normal 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)
|
@ -1,4 +1,4 @@
|
||||
# Warning, "version" should be the same in gradle.properties and Version.java
|
||||
# Any idea anyone how to magically synchronize those :-) ?
|
||||
version = 1.2023.11beta2
|
||||
version = 1.2023.13beta1
|
||||
org.gradle.workers.max = 3
|
@ -24,9 +24,9 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.apache.ant:ant:1.10.13")
|
||||
compileOnly("org.apache.ant:ant:1.10.14")
|
||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
|
||||
}
|
||||
|
||||
@ -41,7 +41,8 @@ sourceSets {
|
||||
srcDirs("build/generated/sjpp")
|
||||
}
|
||||
resources {
|
||||
srcDirs("build/generated/sjpp")
|
||||
srcDirs("build/sources/sjpp/java")
|
||||
include("**/graphviz.dat")
|
||||
include("**/*.png")
|
||||
include("**/*.svg")
|
||||
include("**/*.txt")
|
||||
|
@ -24,9 +24,9 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.apache.ant:ant:1.10.13")
|
||||
compileOnly("org.apache.ant:ant:1.10.14")
|
||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
|
||||
}
|
||||
|
||||
@ -41,7 +41,8 @@ sourceSets {
|
||||
srcDirs("build/generated/sjpp")
|
||||
}
|
||||
resources {
|
||||
srcDirs("build/generated/sjpp")
|
||||
srcDirs("build/sources/sjpp/java")
|
||||
include("**/graphviz.dat")
|
||||
include("**/*.png")
|
||||
include("**/*.svg")
|
||||
include("**/*.txt")
|
||||
|
@ -24,9 +24,9 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.apache.ant:ant:1.10.13")
|
||||
compileOnly("org.apache.ant:ant:1.10.14")
|
||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
|
||||
}
|
||||
|
||||
@ -41,7 +41,8 @@ sourceSets {
|
||||
srcDirs("build/generated/sjpp")
|
||||
}
|
||||
resources {
|
||||
srcDirs("build/generated/sjpp")
|
||||
srcDirs("build/sources/sjpp/java")
|
||||
include("**/graphviz.dat")
|
||||
include("**/*.png")
|
||||
include("**/*.svg")
|
||||
include("**/*.txt")
|
||||
@ -124,7 +125,6 @@ tasks.named("sourcesJar"){
|
||||
dependsOn(preprocessLicenceAntTask)
|
||||
}
|
||||
|
||||
|
||||
publishing {
|
||||
publications.create<MavenPublication>("maven") {
|
||||
from(components["java"])
|
||||
|
183
plantuml-gplv2/build.gradle.kts
Normal file
183
plantuml-gplv2/build.gradle.kts
Normal file
@ -0,0 +1,183 @@
|
||||
// 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.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
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 "__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"])
|
||||
}
|
||||
}
|
70
plantuml-gplv2/gplv2-license.txt
Normal file
70
plantuml-gplv2/gplv2-license.txt
Normal 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/
|
||||
*
|
||||
*/
|
@ -24,9 +24,9 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.apache.ant:ant:1.10.13")
|
||||
compileOnly("org.apache.ant:ant:1.10.14")
|
||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ sourceSets {
|
||||
srcDirs("build/generated/sjpp")
|
||||
}
|
||||
resources {
|
||||
srcDirs("build/generated/sjpp")
|
||||
srcDirs("build/sources/sjpp/java")
|
||||
include("**/*.png")
|
||||
include("**/*.svg")
|
||||
include("**/*.txt")
|
||||
|
@ -24,9 +24,9 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.apache.ant:ant:1.10.13")
|
||||
compileOnly("org.apache.ant:ant:1.10.14")
|
||||
testImplementation("org.assertj:assertj-core:3.24.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")
|
||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
|
||||
testImplementation("org.scilab.forge:jlatexmath:1.0.7")
|
||||
}
|
||||
|
||||
@ -41,7 +41,8 @@ sourceSets {
|
||||
srcDirs("build/generated/sjpp")
|
||||
}
|
||||
resources {
|
||||
srcDirs("build/generated/sjpp")
|
||||
srcDirs("build/sources/sjpp/java")
|
||||
include("**/graphviz.dat")
|
||||
include("**/*.png")
|
||||
include("**/*.svg")
|
||||
include("**/*.txt")
|
||||
|
@ -14,4 +14,6 @@ include("plantuml-bsd")
|
||||
include("plantuml-epl")
|
||||
include("plantuml-lgpl")
|
||||
include("plantuml-mit")
|
||||
include("plantuml-gplv2")
|
||||
|
||||
|
||||
|
@ -248,6 +248,12 @@ stateDiagram {
|
||||
header {
|
||||
FontSize 12
|
||||
}
|
||||
circle {
|
||||
start, stop, end {
|
||||
LineColor #2
|
||||
BackgroundColor #2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -326,18 +332,10 @@ activityDiagram {
|
||||
LineThickness 1
|
||||
}
|
||||
circle {
|
||||
start {
|
||||
start, stop, end {
|
||||
LineColor #2
|
||||
BackgroundColor #2
|
||||
}
|
||||
stop {
|
||||
LineColor #2
|
||||
BackgroundColor transparent
|
||||
}
|
||||
end {
|
||||
LineColor #2
|
||||
BackgroundColor transparent
|
||||
}
|
||||
}
|
||||
activityBar {
|
||||
BackgroundColor #5
|
||||
@ -610,18 +608,10 @@ activityDiagram {
|
||||
LineColor white
|
||||
}
|
||||
circle {
|
||||
start {
|
||||
start, stop, end {
|
||||
LineColor #d
|
||||
BackgroundColor #d
|
||||
}
|
||||
stop {
|
||||
LineColor #d
|
||||
BackgroundColor transparent
|
||||
}
|
||||
end {
|
||||
LineColor #d
|
||||
BackgroundColor transparent
|
||||
}
|
||||
}
|
||||
activityBar {
|
||||
BackgroundColor #a
|
||||
|
@ -262,6 +262,12 @@ stateDiagram {
|
||||
FontStyle plain
|
||||
}
|
||||
}
|
||||
circle {
|
||||
start, stop, end {
|
||||
LineColor black
|
||||
BackgroundColor black
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -382,18 +388,10 @@ activityDiagram {
|
||||
FontSize 11
|
||||
}
|
||||
circle {
|
||||
start {
|
||||
start, stop, end {
|
||||
LineColor black
|
||||
BackgroundColor black
|
||||
}
|
||||
stop {
|
||||
LineColor black
|
||||
BackgroundColor white
|
||||
}
|
||||
end {
|
||||
LineColor black
|
||||
BackgroundColor white
|
||||
}
|
||||
}
|
||||
activityBar {
|
||||
Shadowing 3.0
|
||||
|
7
src/com/plantuml/api/cheerpj/package-info.java
Normal file
7
src/com/plantuml/api/cheerpj/package-info.java
Normal 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;
|
16
src/com/plantuml/api/cheerpj/readme.md
Normal file
16
src/com/plantuml/api/cheerpj/readme.md
Normal 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/)
|
12
src/gen/annotation/package-info.java
Normal file
12
src/gen/annotation/package-info.java
Normal file
@ -0,0 +1,12 @@
|
||||
/**
|
||||
* This package is part of Smetana:
|
||||
* the internal port (from <code>C</code> to <code>Java</code>)
|
||||
* of <a href="https://graphviz.org"target="_top">GraphViz/Dot</a>
|
||||
* in <a href="https://plantuml.com/smetana02" target="_top">plantuml</a>.
|
||||
*
|
||||
* @see h
|
||||
* @see smetana.core
|
||||
* @see net.sourceforge.plantuml.sdot
|
||||
*
|
||||
*/
|
||||
package gen.annotation;
|
12
src/gen/package-info.java
Normal file
12
src/gen/package-info.java
Normal file
@ -0,0 +1,12 @@
|
||||
/**
|
||||
* This package is part of Smetana:
|
||||
* the internal port (from <code>C</code> to <code>Java</code>)
|
||||
* of <a href="https://graphviz.org"target="_top">GraphViz/Dot</a>
|
||||
* in <a href="https://plantuml.com/smetana02" target="_top">plantuml</a>.
|
||||
*
|
||||
* @see h
|
||||
* @see smetana.core
|
||||
* @see net.sourceforge.plantuml.sdot
|
||||
*
|
||||
*/
|
||||
package gen;
|
28
src/gen/readme.md
Normal file
28
src/gen/readme.md
Normal file
@ -0,0 +1,28 @@
|
||||
# Directory Documentation for `gen`
|
||||
|
||||
## Description
|
||||
This package is part of Smetana: the internal port (from `C` to `Java`) of [GraphViz/Dot](https://graphviz.org) in [plantuml](https://plantuml.com/smetana02).
|
||||
|
||||
## Link
|
||||
- [Smetana](https://plantuml.com/smetana02) and :octocat: [plantuml/smetana](https://github.com/plantuml/smetana)
|
||||
- [`src/h`](../h)
|
||||
- [`src/gen`](../gen)
|
||||
- [`src/smetana/core`](../smetana/core)
|
||||
|
||||
## Reference
|
||||
- [Graphviz](https://graphviz.org)
|
||||
- [Graphviz DOT Language](https://www.graphviz.org/doc/info/lang.html)
|
||||
- [Graphviz _(on GitLab)_](https://gitlab.com/graphviz/graphviz/)
|
||||
- [Graphviz _(on Wikipedia)_](https://en.wikipedia.org/wiki/Graphviz)
|
||||
|
||||
## Credit
|
||||
- :octocat: [plantuml/smetana](https://github.com/plantuml/smetana)
|
||||
|
||||
## Internaly use by
|
||||
- [`plantuml/sdot`](../net/sourceforge/plantuml/sdot)
|
||||
- [`plantuml/gitlog/SmetanaForGit.java`](../net/sourceforge/plantuml/gitlog/SmetanaForGit.java)
|
||||
- [`plantuml/jsondiagram/SmetanaForJson.java`](../net/sourceforge/plantuml/jsondiagram/SmetanaForJson.java)
|
||||
|
||||
## Misc.
|
||||
- [Bedřich Smetana _(on Wikipedia)_](https://en.wikipedia.org/wiki/Bed%C5%99ich_Smetana)
|
||||
- [Smetana _(on Wikipedia)_](https://en.wikipedia.org/wiki/Smetana_(disambiguation))
|
23
src/h/package-info.java
Normal file
23
src/h/package-info.java
Normal file
@ -0,0 +1,23 @@
|
||||
/**
|
||||
* This package is part of Smetana:
|
||||
* the internal port (from <code>C</code> to <code>Java</code>)
|
||||
* of <a href="https://graphviz.org"target="_top">GraphViz/Dot</a>
|
||||
* in <a href="https://plantuml.com/smetana02" target="_top">plantuml</a>.
|
||||
*
|
||||
* <p>
|
||||
* Port of the <code>C header</code> (<code>.h</code>) of Graphviz on Java:
|
||||
* <ul>
|
||||
* <li><code>EN</code> for <code>enumeration</code> or <code>enum</code></li>
|
||||
* <li><code>ST</code> for <code>structure</code></li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @see gen
|
||||
* @see gen.annotation
|
||||
* @see gen.lib
|
||||
* @see gen.plugin.dot_layout
|
||||
* @see smetana.core
|
||||
* @see net.sourceforge.plantuml.sdot
|
||||
*
|
||||
*/
|
||||
package h;
|
32
src/h/readme.md
Normal file
32
src/h/readme.md
Normal file
@ -0,0 +1,32 @@
|
||||
# Directory Documentation for `h`
|
||||
|
||||
## Description
|
||||
This package is part of Smetana: the internal port (from `C` to `Java`) of [GraphViz/Dot](https://graphviz.org) in [plantuml](https://plantuml.com/smetana02).
|
||||
|
||||
Port of the `C header` (`.h`) of Graphviz on Java:
|
||||
- `EN` for `enumeration` or `enum`
|
||||
- `ST` for `structure`
|
||||
|
||||
## Link
|
||||
- [Smetana](https://plantuml.com/smetana02) and :octocat: [plantuml/smetana](https://github.com/plantuml/smetana)
|
||||
- [`src/h`](../h)
|
||||
- [`src/gen`](../gen)
|
||||
- [`src/smetana/core`](../smetana/core)
|
||||
|
||||
## Reference
|
||||
- [Graphviz](https://graphviz.org)
|
||||
- [Graphviz DOT Language](https://www.graphviz.org/doc/info/lang.html)
|
||||
- [Graphviz _(on GitLab)_](https://gitlab.com/graphviz/graphviz/)
|
||||
- [Graphviz _(on Wikipedia)_](https://en.wikipedia.org/wiki/Graphviz)
|
||||
|
||||
## Credit
|
||||
- :octocat: [plantuml/smetana](https://github.com/plantuml/smetana)
|
||||
|
||||
## Internaly use by
|
||||
- [`plantuml/sdot`](../net/sourceforge/plantuml/sdot)
|
||||
- [`plantuml/gitlog/SmetanaForGit.java`](../net/sourceforge/plantuml/gitlog/SmetanaForGit.java)
|
||||
- [`plantuml/jsondiagram/SmetanaForJson.java`](../net/sourceforge/plantuml/jsondiagram/SmetanaForJson.java)
|
||||
|
||||
## Misc.
|
||||
- [Bedřich Smetana _(on Wikipedia)_](https://en.wikipedia.org/wiki/Bed%C5%99ich_Smetana)
|
||||
- [Smetana _(on Wikipedia)_](https://en.wikipedia.org/wiki/Smetana_(disambiguation))
|
@ -84,10 +84,12 @@ import net.sourceforge.plantuml.security.SecurityUtils;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.skin.VisibilityModifier;
|
||||
import net.sourceforge.plantuml.statediagram.StateDiagram;
|
||||
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||
import net.sourceforge.plantuml.style.ClockwiseTopRightBottomLeft;
|
||||
import net.sourceforge.plantuml.svek.CucaDiagramFileMaker;
|
||||
import net.sourceforge.plantuml.svek.CucaDiagramFileMakerSvek;
|
||||
import net.sourceforge.plantuml.text.BackSlash;
|
||||
import net.sourceforge.plantuml.text.Guillemet;
|
||||
import net.sourceforge.plantuml.xmi.CucaDiagramXmiMaker;
|
||||
import net.sourceforge.plantuml.xmlsc.StateDiagramScxmlMaker;
|
||||
|
||||
@ -523,6 +525,41 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy,
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getVisibleStereotypeLabels(Entity entity) {
|
||||
Stereotype stereotype = entity.getStereotype();
|
||||
|
||||
if (stereotype == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<EntityHideOrShow> commands = new ArrayList<>();
|
||||
for (EntityHideOrShow hideOrShowEntry : hideOrShows) {
|
||||
if (hideOrShowEntry.portion == EntityPortion.STEREOTYPE) {
|
||||
commands.add(hideOrShowEntry);
|
||||
}
|
||||
}
|
||||
|
||||
List<String> visibleStereotypeLabels = new ArrayList<>();
|
||||
for (String stereoTypeLabel : entity.getStereotype().getLabels(Guillemet.DOUBLE_COMPARATOR)) {
|
||||
if (isHiddenStereotypeLabel(stereoTypeLabel, commands)) {
|
||||
visibleStereotypeLabels.add(stereoTypeLabel);
|
||||
}
|
||||
}
|
||||
|
||||
return visibleStereotypeLabels;
|
||||
}
|
||||
|
||||
private boolean isHiddenStereotypeLabel(String stereoTypeLabel, List<EntityHideOrShow> commands) {
|
||||
for (EntityHideOrShow cmd : commands) {
|
||||
String gender = cmd.gender.getGender();
|
||||
if (gender != null && gender.equals(stereoTypeLabel)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public final void hideOrShow(EntityGender gender, EntityPortion portions, boolean show) {
|
||||
for (EntityPortion portion : portions.asSet())
|
||||
this.hideOrShows.add(new EntityHideOrShow(gender, portion, show));
|
||||
|
@ -37,8 +37,6 @@ package net.atmp;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
@ -46,22 +44,16 @@ import java.io.OutputStream;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import com.plantuml.api.cheerpj.WasmLog;
|
||||
|
||||
import net.sourceforge.plantuml.AnimatedGifEncoder;
|
||||
import net.sourceforge.plantuml.AnnotatedBuilder;
|
||||
import net.sourceforge.plantuml.AnnotatedWorker;
|
||||
import net.sourceforge.plantuml.EmptyImageBuilder;
|
||||
import net.sourceforge.plantuml.FileFormat;
|
||||
import net.sourceforge.plantuml.FileFormatOption;
|
||||
import net.sourceforge.plantuml.FileUtils;
|
||||
import net.sourceforge.plantuml.OptionFlags;
|
||||
import net.sourceforge.plantuml.Scale;
|
||||
import net.sourceforge.plantuml.TitledDiagram;
|
||||
import net.sourceforge.plantuml.anim.AffineTransformation;
|
||||
import net.sourceforge.plantuml.anim.Animation;
|
||||
import net.sourceforge.plantuml.api.ImageDataComplex;
|
||||
import net.sourceforge.plantuml.api.ImageDataSimple;
|
||||
import net.sourceforge.plantuml.braille.UGraphicBraille;
|
||||
@ -87,14 +79,10 @@ import net.sourceforge.plantuml.klimt.drawing.tikz.UGraphicTikz;
|
||||
import net.sourceforge.plantuml.klimt.drawing.txt.UGraphicTxt;
|
||||
import net.sourceforge.plantuml.klimt.drawing.visio.UGraphicVdx;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.klimt.shape.URectangle;
|
||||
import net.sourceforge.plantuml.mjpeg.MJPEGGenerator;
|
||||
import net.sourceforge.plantuml.security.SFile;
|
||||
import net.sourceforge.plantuml.security.SImageIO;
|
||||
import net.sourceforge.plantuml.skin.ColorParam;
|
||||
import net.sourceforge.plantuml.skin.CornerParam;
|
||||
import net.sourceforge.plantuml.skin.LineParam;
|
||||
@ -113,9 +101,6 @@ import net.sourceforge.plantuml.url.Url;
|
||||
|
||||
public class ImageBuilder {
|
||||
|
||||
// ::comment when __CORE__
|
||||
private Animation animation;
|
||||
// ::done
|
||||
private boolean annotations;
|
||||
private HColor backcolor = getDefaultHBackColor();
|
||||
|
||||
@ -223,9 +208,6 @@ public class ImageBuilder {
|
||||
public ImageBuilder styled(TitledDiagram diagram) {
|
||||
skinParam = diagram.getSkinParam();
|
||||
stringBounder = fileFormatOption.getDefaultStringBounder(skinParam);
|
||||
// ::comment when __CORE__
|
||||
animation = diagram.getAnimation();
|
||||
// ::done
|
||||
annotations = true;
|
||||
backcolor = diagram.calculateBackColor();
|
||||
margin = calculateMargin(diagram);
|
||||
@ -246,21 +228,7 @@ public class ImageBuilder {
|
||||
udrawable = annotatedWorker.addAdd((TextBlock) udrawable);
|
||||
}
|
||||
|
||||
// ::comment when __CORE__
|
||||
switch (fileFormatOption.getFileFormat()) {
|
||||
case MJPEG:
|
||||
return writeImageMjpeg(os);
|
||||
case ANIMATED_GIF:
|
||||
return writeImageAnimatedGif(os);
|
||||
default:
|
||||
return writeImageInternal(os, animation);
|
||||
// ::done
|
||||
// ::uncomment when __CORE__
|
||||
// return writeImageInternal(os);
|
||||
// ::done
|
||||
// ::comment when __CORE__
|
||||
}
|
||||
// ::done
|
||||
return writeImageInternal(os);
|
||||
}
|
||||
|
||||
public byte[] writeByteArray() throws IOException {
|
||||
@ -270,34 +238,16 @@ public class ImageBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
// ::revert when __CORE__
|
||||
private ImageData writeImageInternal(OutputStream os, Animation animationArg) throws IOException {
|
||||
// private ImageData writeImageInternal(OutputStream os) throws IOException {
|
||||
// ::done
|
||||
private ImageData writeImageInternal(OutputStream os) throws IOException {
|
||||
XDimension2D dim = getFinalDimension();
|
||||
double dx = 0;
|
||||
double dy = 0;
|
||||
// ::comment when __CORE__
|
||||
if (animationArg != null) {
|
||||
final MinMax minmax = animationArg.getMinMax(dim);
|
||||
animationArg.setDimension(dim);
|
||||
dim = minmax.getDimension();
|
||||
dx = -minmax.getMinX();
|
||||
dy = -minmax.getMinY();
|
||||
}
|
||||
// ::done
|
||||
final Scale scale = titledDiagram == null ? null : titledDiagram.getScale();
|
||||
final double scaleFactor = (scale == null ? 1 : scale.getScale(dim.getWidth(), dim.getHeight())) * getDpi()
|
||||
/ 96.0;
|
||||
if (scaleFactor <= 0)
|
||||
throw new IllegalStateException("Bad scaleFactor");
|
||||
WasmLog.log("...image drawing...");
|
||||
// ::revert when __CORE__
|
||||
UGraphic ug = createUGraphic(dim, animationArg, dx, dy, scaleFactor,
|
||||
UGraphic ug = createUGraphic(dim, scaleFactor,
|
||||
titledDiagram == null ? new Pragma() : titledDiagram.getPragma());
|
||||
// UGraphic ug = createUGraphic(dim, dx, dy, scaleFactor,
|
||||
// titledDiagram == null ? new Pragma() : titledDiagram.getPragma());
|
||||
// ::done
|
||||
maybeDrawBorder(ug, dim);
|
||||
if (randomPixel)
|
||||
drawRandomPoint(ug);
|
||||
@ -330,8 +280,8 @@ public class ImageBuilder {
|
||||
if (stroke == null)
|
||||
return;
|
||||
|
||||
final URectangle rectangle = URectangle.build(dim.getWidth() - stroke.getThickness(),
|
||||
dim.getHeight() - stroke.getThickness())
|
||||
final URectangle rectangle = URectangle
|
||||
.build(dim.getWidth() - stroke.getThickness(), dim.getHeight() - stroke.getThickness())
|
||||
.rounded(skinParam.getRoundCorner(CornerParam.diagramBorder, null));
|
||||
|
||||
ug.apply(color == null ? HColors.BLACK : color).apply(stroke).draw(rectangle);
|
||||
@ -364,83 +314,13 @@ public class ImageBuilder {
|
||||
return ug;
|
||||
}
|
||||
|
||||
// ::comment when __CORE__
|
||||
private ImageData writeImageMjpeg(OutputStream os) throws IOException {
|
||||
|
||||
final XDimension2D dim = getFinalDimension();
|
||||
|
||||
final SFile f = new SFile("c:/tmp.avi");
|
||||
|
||||
final int nbframe = 100;
|
||||
|
||||
final MJPEGGenerator m = new MJPEGGenerator(f, getAviImage(null).getWidth(null),
|
||||
getAviImage(null).getHeight(null), 12.0, nbframe);
|
||||
for (int i = 0; i < nbframe; i++) {
|
||||
// AffineTransform at = AffineTransform.getRotateInstance(1.0);
|
||||
AffineTransform at = AffineTransform.getTranslateInstance(dim.getWidth() / 2, dim.getHeight() / 2);
|
||||
at.rotate(90.0 * Math.PI / 180.0 * i / 100);
|
||||
at.translate(-dim.getWidth() / 2, -dim.getHeight() / 2);
|
||||
// final AffineTransform at = AffineTransform.getTranslateInstance(i, 0);
|
||||
// final ImageIcon ii = new ImageIcon(getAviImage(at));
|
||||
// m.addImage(ii.getImage());
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
m.finishAVI();
|
||||
|
||||
FileUtils.copyToStream(f, os);
|
||||
|
||||
return createImageData(dim);
|
||||
}
|
||||
|
||||
private ImageData writeImageAnimatedGif(OutputStream os) throws IOException {
|
||||
|
||||
final XDimension2D dim = getFinalDimension();
|
||||
|
||||
final MinMax minmax = animation.getMinMax(dim);
|
||||
|
||||
final AnimatedGifEncoder e = new AnimatedGifEncoder();
|
||||
// e.setQuality(1);
|
||||
e.setRepeat(0);
|
||||
e.start(os);
|
||||
// e.setDelay(1000); // 1 frame per sec
|
||||
// e.setDelay(100); // 10 frame per sec
|
||||
e.setDelay(60); // 16 frame per sec
|
||||
// e.setDelay(50); // 20 frame per sec
|
||||
|
||||
for (AffineTransformation at : animation.getAll()) {
|
||||
final ImageIcon ii = new ImageIcon(getAviImage(at));
|
||||
e.addFrame((BufferedImage) ii.getImage());
|
||||
}
|
||||
e.finish();
|
||||
return createImageData(dim);
|
||||
}
|
||||
|
||||
private Image getAviImage(AffineTransformation affineTransform) throws IOException {
|
||||
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
writeImageInternal(baos, Animation.singleton(affineTransform));
|
||||
baos.close();
|
||||
return SImageIO.read(baos.toByteArray());
|
||||
}
|
||||
// ::done
|
||||
|
||||
// ::revert when __CORE__
|
||||
private UGraphic createUGraphic(final XDimension2D dim, Animation animationArg, double dx, double dy,
|
||||
double scaleFactor, Pragma pragma) {
|
||||
// private UGraphic createUGraphic(final XDimension2D dim, double dx, double dy,
|
||||
// double scaleFactor, Pragma pragma) {
|
||||
// ::done
|
||||
private UGraphic createUGraphic(final XDimension2D dim, double scaleFactor, Pragma pragma) {
|
||||
final ColorMapper colorMapper = fileFormatOption.getColorMapper();
|
||||
switch (fileFormatOption.getFileFormat()) {
|
||||
case PNG:
|
||||
case RAW:
|
||||
// ::comment when __CORE__
|
||||
return createUGraphicPNG(scaleFactor, dim, animationArg, dx, dy, fileFormatOption.getWatermark(),
|
||||
return createUGraphicPNG(scaleFactor, dim, fileFormatOption.getWatermark(),
|
||||
fileFormatOption.getFileFormat());
|
||||
// ::done
|
||||
// ::uncomment when __CORE__
|
||||
// return createUGraphicPNG(scaleFactor, dim, dx, dy,
|
||||
// fileFormatOption.getWatermark(), fileFormatOption.getFileFormat());
|
||||
// ::done
|
||||
case SVG:
|
||||
return createUGraphicSVG(scaleFactor, dim, pragma);
|
||||
// ::comment when __CORE__
|
||||
@ -492,14 +372,8 @@ public class ImageBuilder {
|
||||
|
||||
}
|
||||
|
||||
// ::uncomment when __CORE__
|
||||
// private UGraphic createUGraphicPNG(double scaleFactor, final XDimension2D
|
||||
// dim, double dx, double dy, String watermark, FileFormat format) {
|
||||
// ::done
|
||||
// ::comment when __CORE__
|
||||
private UGraphic createUGraphicPNG(double scaleFactor, final XDimension2D dim, Animation affineTransforms,
|
||||
double dx, double dy, String watermark, FileFormat format) {
|
||||
// ::done
|
||||
private UGraphic createUGraphicPNG(double scaleFactor, final XDimension2D dim, String watermark,
|
||||
FileFormat format) {
|
||||
Color pngBackColor = new Color(0, 0, 0, 0);
|
||||
|
||||
if (this.backcolor instanceof HColorSimple)
|
||||
@ -513,15 +387,9 @@ public class ImageBuilder {
|
||||
(int) (dim.getHeight() * scaleFactor), pngBackColor, stringBounder);
|
||||
final Graphics2D graphics2D = builder.getGraphics2D();
|
||||
|
||||
// ::comment when __CORE__
|
||||
final UGraphicG2d ug = new UGraphicG2d(backcolor, fileFormatOption.getColorMapper(), stringBounder, graphics2D,
|
||||
scaleFactor, dx, dy, format, affineTransforms == null ? null : affineTransforms.getFirst());
|
||||
// ::done
|
||||
// ::uncomment when __CORE__
|
||||
// final UGraphicG2d ug = new UGraphicG2d(backcolor,
|
||||
// fileFormatOption.getColorMapper(), stringBounder, graphics2D,
|
||||
// scaleFactor, dx, dy, format);
|
||||
// ::done
|
||||
scaleFactor, format);
|
||||
|
||||
ug.setBufferedImage(builder.getBufferedImage());
|
||||
final BufferedImage im = ug.getBufferedImage();
|
||||
if (this.backcolor instanceof HColorGradient)
|
||||
|
@ -67,6 +67,15 @@ import net.sourceforge.plantuml.utils.BlocLines;
|
||||
import net.sourceforge.plantuml.version.License;
|
||||
import net.sourceforge.plantuml.version.Version;
|
||||
|
||||
/**
|
||||
* An abstract class for all diagram classes.
|
||||
*
|
||||
* <p>
|
||||
* Short for "{@link net.sourceforge.plantuml.plasma plasma} system", although
|
||||
* most newer diagram types do not use entities stored in a plasma.
|
||||
*
|
||||
* @see PSystemBuilder
|
||||
*/
|
||||
public abstract class AbstractPSystem implements Diagram {
|
||||
// ::remove file when __HAXE__
|
||||
|
||||
|
@ -76,8 +76,6 @@ public enum FileFormat {
|
||||
SCXML("application/scxml+xml"), //
|
||||
GRAPHML("application/graphml+xml"), //
|
||||
PDF("application/pdf"), //
|
||||
MJPEG("video/x-msvideo"), //
|
||||
ANIMATED_GIF("image/gif"), //
|
||||
HTML("text/html"), //
|
||||
HTML5("text/html"), //
|
||||
VDX("application/vnd.visio.xml"), //
|
||||
@ -112,15 +110,9 @@ public enum FileFormat {
|
||||
if (name().startsWith("XMI"))
|
||||
return ".xmi";
|
||||
|
||||
if (this == MJPEG)
|
||||
return ".avi";
|
||||
|
||||
if (this == LATEX || this == LATEX_NO_PREAMBLE)
|
||||
return ".tex";
|
||||
|
||||
if (this == ANIMATED_GIF)
|
||||
return ".gif";
|
||||
|
||||
if (this == BRAILLE_PNG)
|
||||
return ".braille.png";
|
||||
|
||||
|
@ -83,7 +83,7 @@ public class OptionFlags {
|
||||
static public void setMaxPixel(int max) {
|
||||
}
|
||||
|
||||
static public final boolean USE_HECTOR = false;
|
||||
// static public final boolean USE_HECTOR = false;
|
||||
static public boolean ADD_NICE_FOR_DOT = false;
|
||||
|
||||
// static public final boolean USE_IF_VERTICAL = true;
|
||||
|
@ -71,6 +71,7 @@ import net.sourceforge.plantuml.eggs.PSystemWelcomeFactory;
|
||||
import net.sourceforge.plantuml.emoji.PSystemListEmojiFactory;
|
||||
import net.sourceforge.plantuml.error.PSystemError;
|
||||
import net.sourceforge.plantuml.error.PSystemErrorUtils;
|
||||
import net.sourceforge.plantuml.error.PSystemUnsupported;
|
||||
import net.sourceforge.plantuml.filesdiagram.FilesDiagramFactory;
|
||||
import net.sourceforge.plantuml.flowdiagram.FlowDiagramFactory;
|
||||
import net.sourceforge.plantuml.font.PSystemListFontsFactory;
|
||||
@ -109,6 +110,15 @@ import net.sourceforge.plantuml.wbs.WBSDiagramFactory;
|
||||
import net.sourceforge.plantuml.wire.WireDiagramFactory;
|
||||
import net.sourceforge.plantuml.yaml.YamlDiagramFactory;
|
||||
|
||||
/**
|
||||
* Builds a diagram from pre-processed PlantUML source.
|
||||
*
|
||||
* <p>
|
||||
* Tries each of the factories (enumerated in the static block below) until one
|
||||
* succeeds.
|
||||
*
|
||||
* @see AbstractPSystem
|
||||
*/
|
||||
public class PSystemBuilder {
|
||||
// ::remove file when __HAXE__
|
||||
|
||||
@ -138,6 +148,9 @@ public class PSystemBuilder {
|
||||
}
|
||||
|
||||
final DiagramType diagramType = umlSource.getDiagramType();
|
||||
if (diagramType == DiagramType.UNKNOWN)
|
||||
return new PSystemUnsupported(umlSource);
|
||||
|
||||
final List<PSystemError> errors = new ArrayList<>();
|
||||
for (PSystemFactory systemFactory : factories) {
|
||||
if (diagramType != systemFactory.getDiagramType())
|
||||
@ -151,6 +164,8 @@ public class PSystemBuilder {
|
||||
}
|
||||
errors.add((PSystemError) sys);
|
||||
}
|
||||
if (errors.size() == 0)
|
||||
return new PSystemUnsupported(umlSource);
|
||||
|
||||
result = PSystemErrorUtils.merge(errors);
|
||||
return result;
|
||||
@ -210,10 +225,12 @@ public class PSystemBuilder {
|
||||
// ::done
|
||||
|
||||
// ::comment when __CORE__ or __MIT__ or __EPL__ or __BSD__ or __ASL__ or __LGPL__
|
||||
factories.add(new PSystemDitaaFactory());
|
||||
factories.add(new PSystemJcckitFactory());
|
||||
factories.add(new PSystemSudokuFactory());
|
||||
// ::done
|
||||
// ::comment when __CORE__ or __MIT__ or __EPL__ or __BSD__ or __ASL__
|
||||
factories.add(new PSystemDitaaFactory());
|
||||
// ::done
|
||||
|
||||
// ::comment when __CORE__
|
||||
factories.add(new PSystemDefinitionFactory());
|
||||
|
@ -47,13 +47,14 @@ import java.io.PrintStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
import net.sourceforge.plantuml.core.DiagramDescription;
|
||||
import net.sourceforge.plantuml.error.PSystemError;
|
||||
import net.sourceforge.plantuml.preproc.Defines;
|
||||
import net.sourceforge.plantuml.security.SFile;
|
||||
import net.sourceforge.plantuml.url.CMapData;
|
||||
|
||||
public class Pipe {
|
||||
// ::remove file when __CORE__
|
||||
@ -190,7 +191,12 @@ public class Pipe {
|
||||
if (state == State.START_MARK_NOT_FOUND && line.startsWith("@start")) {
|
||||
sb.setLength(0); // discard any previous input
|
||||
state = State.START_MARK_FOUND;
|
||||
expectedEnd = "@end" + line.substring(6).split("^[A-Za-z]")[0];
|
||||
final Matcher m = Pattern.compile("@start([A-Za-z]*)").matcher(line);
|
||||
if (m.matches())
|
||||
expectedEnd = "@end" + m.group(1);
|
||||
else
|
||||
expectedEnd = "@end";
|
||||
|
||||
} else if (state == State.START_MARK_FOUND && line.startsWith(expectedEnd)) {
|
||||
state = State.COMPLETE;
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ public class SourceStringReader {
|
||||
public DiagramDescription outputImage(OutputStream os, int numImage, FileFormatOption fileFormatOption)
|
||||
throws IOException {
|
||||
if (blocks.size() == 0) {
|
||||
noStartumlFound(os, fileFormatOption);
|
||||
noValidStartFound(os, fileFormatOption);
|
||||
return null;
|
||||
}
|
||||
for (BlockUml b : blocks) {
|
||||
@ -230,8 +230,8 @@ public class SourceStringReader {
|
||||
|
||||
}
|
||||
|
||||
public ImageData noStartumlFound(OutputStream os, FileFormatOption fileFormatOption) throws IOException {
|
||||
final TextBlock error = GraphicStrings.createForError(Arrays.asList("No @startuml/@enduml found"),
|
||||
public ImageData noValidStartFound(OutputStream os, FileFormatOption fileFormatOption) throws IOException {
|
||||
final TextBlock error = GraphicStrings.createForError(Arrays.asList("No valid @start/@end found, please check the version"),
|
||||
fileFormatOption.isUseRedForError());
|
||||
|
||||
return plainImageBuilder(error, fileFormatOption).write(os);
|
||||
|
@ -42,8 +42,6 @@ import java.util.Map;
|
||||
import net.atmp.ImageBuilder;
|
||||
import net.sourceforge.plantuml.abel.DisplayPositioned;
|
||||
import net.sourceforge.plantuml.abel.DisplayPositionned;
|
||||
import net.sourceforge.plantuml.anim.Animation;
|
||||
import net.sourceforge.plantuml.anim.AnimationDecoder;
|
||||
import net.sourceforge.plantuml.api.ApiStable;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.core.Diagram;
|
||||
@ -88,10 +86,6 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
||||
|
||||
private final SkinParam skinParam;
|
||||
|
||||
// ::comment when __CORE__
|
||||
private Animation animation;
|
||||
// ::done
|
||||
|
||||
private final Pragma pragma = new Pragma();
|
||||
|
||||
public Pragma getPragma() {
|
||||
@ -218,21 +212,6 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram,
|
||||
return ClockwiseTopRightBottomLeft.same(10);
|
||||
}
|
||||
|
||||
// ::comment when __CORE__
|
||||
final public void setAnimation(Iterable<CharSequence> animationData) {
|
||||
// try {
|
||||
final AnimationDecoder animationDecoder = new AnimationDecoder(animationData);
|
||||
this.animation = Animation.create(animationDecoder.decode());
|
||||
// } catch (ScriptException e) {
|
||||
// Logme.error(e);
|
||||
// }
|
||||
}
|
||||
|
||||
final public Animation getAnimation() {
|
||||
return animation;
|
||||
}
|
||||
// ::done
|
||||
|
||||
@Override
|
||||
public ImageBuilder createImageBuilder(FileFormatOption fileFormatOption) throws IOException {
|
||||
return super.createImageBuilder(fileFormatOption).styled(this);
|
||||
|
@ -38,10 +38,8 @@ package net.sourceforge.plantuml;
|
||||
import static net.atmp.ImageBuilder.plainImageBuilder;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
@ -74,10 +72,8 @@ import net.sourceforge.plantuml.klimt.shape.TextBlock;
|
||||
import net.sourceforge.plantuml.klimt.shape.UDrawable;
|
||||
import net.sourceforge.plantuml.klimt.shape.UImage;
|
||||
import net.sourceforge.plantuml.log.Logme;
|
||||
import net.sourceforge.plantuml.mjpeg.MJPEGGenerator;
|
||||
import net.sourceforge.plantuml.pdf.PdfConverter;
|
||||
import net.sourceforge.plantuml.security.SFile;
|
||||
import net.sourceforge.plantuml.security.SImageIO;
|
||||
import net.sourceforge.plantuml.security.SecurityUtils;
|
||||
import net.sourceforge.plantuml.skin.UmlDiagramType;
|
||||
import net.sourceforge.plantuml.style.NoStyleAvailableException;
|
||||
@ -258,27 +254,6 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot
|
||||
}
|
||||
|
||||
// ::comment when __CORE__
|
||||
private void exportDiagramInternalMjpeg(OutputStream os) throws IOException {
|
||||
final SFile f = new SFile("c:/test.avi");
|
||||
final int nb = 150;
|
||||
final double framerate = 30;
|
||||
final MJPEGGenerator m = new MJPEGGenerator(f, 640, 480, framerate, nb);
|
||||
|
||||
for (int i = 0; i < nb; i++) {
|
||||
final AffineTransform at = new AffineTransform();
|
||||
final double coef = (nb - 1 - i) * 1.0 / nb;
|
||||
at.setToShear(coef, coef);
|
||||
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
// exportDiagramTOxxBEREMOVED(baos, null, 0, new
|
||||
// FileFormatOption(FileFormat.PNG, at));
|
||||
baos.close();
|
||||
final BufferedImage im = SImageIO.read(baos.toByteArray());
|
||||
m.addImage(im);
|
||||
}
|
||||
m.finishAVI();
|
||||
|
||||
}
|
||||
|
||||
private ImageData exportDiagramInternalPdf(OutputStream os, int index) throws IOException {
|
||||
final File svg = FileUtils.createTempFileLegacy("pdf", ".svf");
|
||||
final File pdfFile = FileUtils.createTempFileLegacy("pdf", ".pdf");
|
||||
|
@ -37,4 +37,6 @@ package net.sourceforge.plantuml.abel;
|
||||
|
||||
public interface EntityGender {
|
||||
public boolean contains(Entity test);
|
||||
|
||||
public String getGender();
|
||||
}
|
||||
|
@ -44,6 +44,11 @@ public class EntityGenderUtils {
|
||||
public boolean contains(Entity test) {
|
||||
return test.getLeafType() == type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return type.name();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -52,6 +57,11 @@ public class EntityGenderUtils {
|
||||
public boolean contains(Entity test) {
|
||||
return test.getUid().equals(entity.getUid());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return entity.getUid();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -61,7 +71,19 @@ public class EntityGenderUtils {
|
||||
if (test.getStereotype() == null) {
|
||||
return false;
|
||||
}
|
||||
return stereotype.equals(test.getStereotype().getLabel(Guillemet.DOUBLE_COMPARATOR));
|
||||
|
||||
for (String label : test.getStereotype().getLabels(Guillemet.DOUBLE_COMPARATOR)) {
|
||||
if (label.equals(stereotype)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return stereotype;
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -80,6 +102,11 @@ public class EntityGenderUtils {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -88,6 +115,11 @@ public class EntityGenderUtils {
|
||||
public boolean contains(Entity test) {
|
||||
return g1.contains(test) && g2.contains(test);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -96,6 +128,11 @@ public class EntityGenderUtils {
|
||||
public boolean contains(Entity test) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -104,6 +141,11 @@ public class EntityGenderUtils {
|
||||
public boolean contains(Entity test) {
|
||||
return test.getBodier().getMethodsToDisplay().size() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -112,7 +154,26 @@ public class EntityGenderUtils {
|
||||
public boolean contains(Entity test) {
|
||||
return test.getBodier().getFieldsToDisplay().size() == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return null;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
static public EntityGender byClassName(final String className) {
|
||||
return new EntityGender() {
|
||||
@Override
|
||||
public boolean contains(Entity test) {
|
||||
return className.equals(test.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGender() {
|
||||
return className;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
6
src/net/sourceforge/plantuml/abel/package-info.java
Normal file
6
src/net/sourceforge/plantuml/abel/package-info.java
Normal file
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Provides classes used to manage {@link Entity}.
|
||||
*
|
||||
* @see net.sourceforge.plantuml.plasma
|
||||
*/
|
||||
package net.sourceforge.plantuml.abel;
|
14
src/net/sourceforge/plantuml/abel/readme.md
Normal file
14
src/net/sourceforge/plantuml/abel/readme.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Directory Documentation for `abel`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [`Entity`](./Entity.java).
|
||||
|
||||
## Link
|
||||
|
||||
## Reference
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
||||
- [Abel _(on Wikipedia)_](https://en.wikipedia.org/wiki/Abel_(disambiguation))
|
||||
- [Niels Henrik Abel](https://en.wikipedia.org/wiki/Niels_Henrik_Abel)
|
8
src/net/sourceforge/plantuml/acearth/package-info.java
Normal file
8
src/net/sourceforge/plantuml/acearth/package-info.java
Normal file
@ -0,0 +1,8 @@
|
||||
/**
|
||||
* Provides classes used to generate
|
||||
* <a href="https://plantuml.com/xearth" target="_top">
|
||||
* XEarth Image</a>.
|
||||
*
|
||||
* @see ext.plantuml.com.ctreber.acearth
|
||||
*/
|
||||
package net.sourceforge.plantuml.acearth;
|
20
src/net/sourceforge/plantuml/acearth/readme.md
Normal file
20
src/net/sourceforge/plantuml/acearth/readme.md
Normal file
@ -0,0 +1,20 @@
|
||||
# Directory Documentation for `acearth`
|
||||
|
||||
## Description
|
||||
This package provides classes used to generate [XEarth Image](https://plantuml.com/xearth).
|
||||
|
||||
The Java port of `XEarth` used in `PlantUML` is the [`AC.earth` of Christian Treber](../../../../ext/plantuml/com/ctreber/acearth/).
|
||||
|
||||
## Link
|
||||
- [XEarth Image _(on `PlantUML`)_](https://plantuml.com/xearth)
|
||||
|
||||
## Reference
|
||||
- [`xearth` of Kirk Lauritz Johnson](https://hewgill.com/xearth/original/)
|
||||
- [`xearth` for Windows of Greg Hewgill](https://hewgill.com/xearth/)
|
||||
|
||||
## Credit
|
||||
- [`AC.earth` of Christian Treber](../../../../ext/plantuml/com/ctreber/acearth/)
|
||||
- [AC Earth _(on Web Archive)_](https://web.archive.org/web/20180428011447/http://www.acproductions.de/acearth)
|
||||
|
||||
## Misc.
|
||||
- [Earth Day _(on Wikipedia)_](https://en.wikipedia.org/wiki/Earth_Day)
|
@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/activity-diagram-legacy" target="_top">
|
||||
* Activity Diagram (legacy)</a>.
|
||||
*
|
||||
* <p>
|
||||
* For new syntax see {@link net.sourceforge.plantuml.activitydiagram3}
|
||||
* and
|
||||
* <a href="https://plantuml.com/activity-diagram-beta" target="_top">
|
||||
* Activity Diagram (New Syntax)</a>.
|
||||
*/
|
||||
package net.sourceforge.plantuml.activitydiagram;
|
18
src/net/sourceforge/plantuml/activitydiagram/readme.md
Normal file
18
src/net/sourceforge/plantuml/activitydiagram/readme.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Directory Documentation for `activitydiagram`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [Activity Diagram (legacy)](https://plantuml.com/activity-diagram-legacy).
|
||||
|
||||
For new syntax see [`activitydiagram3`](../activitydiagram3)
|
||||
and [Activity Diagram (New Syntax)](https://plantuml.com/activity-diagram-beta).
|
||||
|
||||
## Link
|
||||
- [Activity Diagram (legacy)](https://plantuml.com/activity-diagram-legacy)
|
||||
- [Activity Diagram (New Syntax)](https://plantuml.com/activity-diagram-beta)
|
||||
|
||||
## Reference
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
||||
|
@ -388,11 +388,11 @@ public class ActivityDiagram3 extends UmlDiagram {
|
||||
}
|
||||
|
||||
public CommandExecutionResult backward(Display label, BoxStyle boxStyle, LinkRendering incoming1,
|
||||
LinkRendering incoming2) {
|
||||
LinkRendering incoming2, Stereotype stereotype) {
|
||||
manageSwimlaneStrategy();
|
||||
if (current() instanceof InstructionRepeat) {
|
||||
final InstructionRepeat instructionRepeat = (InstructionRepeat) current();
|
||||
instructionRepeat.setBackward(label, swinlanes.getCurrentSwimlane(), boxStyle, incoming1, incoming2);
|
||||
instructionRepeat.setBackward(label, swinlanes.getCurrentSwimlane(), boxStyle, incoming1, incoming2, stereotype);
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
if (current() instanceof InstructionWhile) {
|
||||
|
@ -57,6 +57,7 @@ import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.geom.VerticalAlignment;
|
||||
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
||||
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
||||
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
|
||||
public class InstructionRepeat extends AbstractInstruction implements Instruction {
|
||||
@ -74,6 +75,7 @@ public class InstructionRepeat extends AbstractInstruction implements Instructio
|
||||
|
||||
private Display backward = Display.NULL;
|
||||
|
||||
private Stereotype stereotype;
|
||||
private LinkRendering incoming1 = LinkRendering.none();
|
||||
private LinkRendering incoming2 = LinkRendering.none();
|
||||
private List<PositionedNote> backwardNotes = new ArrayList<>();
|
||||
@ -110,12 +112,13 @@ public class InstructionRepeat extends AbstractInstruction implements Instructio
|
||||
}
|
||||
|
||||
public void setBackward(Display label, Swimlane swimlaneBackward, BoxStyle boxStyle, LinkRendering incoming1,
|
||||
LinkRendering incoming2) {
|
||||
LinkRendering incoming2, Stereotype stereotype) {
|
||||
this.backward = label;
|
||||
this.swimlaneBackward = swimlaneBackward;
|
||||
this.boxStyle = boxStyle;
|
||||
this.incoming1 = incoming1;
|
||||
this.incoming2 = incoming2;
|
||||
this.stereotype = stereotype;
|
||||
}
|
||||
|
||||
public boolean hasBackward() {
|
||||
@ -166,7 +169,7 @@ public class InstructionRepeat extends AbstractInstruction implements Instructio
|
||||
if (Display.isNull(backward))
|
||||
return null;
|
||||
|
||||
Ftile result = factory.activity(backward, swimlaneBackward, boxStyle, Colors.empty(), null);
|
||||
Ftile result = factory.activity(backward, swimlaneBackward, boxStyle, Colors.empty(), stereotype);
|
||||
if (backwardNotes.size() > 0)
|
||||
result = factory.addNote(result, swimlaneBackward, backwardNotes, VerticalAlignment.CENTER);
|
||||
|
||||
|
@ -50,6 +50,7 @@ import net.sourceforge.plantuml.regex.RegexLeaf;
|
||||
import net.sourceforge.plantuml.regex.RegexOptional;
|
||||
import net.sourceforge.plantuml.regex.RegexOr;
|
||||
import net.sourceforge.plantuml.regex.RegexResult;
|
||||
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||
import net.sourceforge.plantuml.utils.LineLocation;
|
||||
|
||||
public class CommandBackward3 extends SingleLineCommand2<ActivityDiagram3> {
|
||||
@ -96,12 +97,18 @@ public class CommandBackward3 extends SingleLineCommand2<ActivityDiagram3> {
|
||||
else
|
||||
boxStyle = BoxStyle.fromString(styleString);
|
||||
|
||||
final String stereo = arg.get("STYLE", 1);
|
||||
|
||||
Stereotype stereotype = null;
|
||||
if (stereo != null)
|
||||
stereotype = Stereotype.build(stereo);
|
||||
|
||||
final Display label = Display.getWithNewlines(arg.get("LABEL", 0));
|
||||
|
||||
final LinkRendering in = getBackRendering(diagram, arg, "INCOMING");
|
||||
final LinkRendering out = getBackRendering(diagram, arg, "OUTCOMING");
|
||||
|
||||
return diagram.backward(label, boxStyle, in, out);
|
||||
return diagram.backward(label, boxStyle, in, out, stereotype);
|
||||
}
|
||||
|
||||
static public LinkRendering getBackRendering(ActivityDiagram3 diagram, RegexResult arg, String name)
|
||||
|
@ -47,6 +47,7 @@ import net.sourceforge.plantuml.regex.IRegex;
|
||||
import net.sourceforge.plantuml.regex.RegexConcat;
|
||||
import net.sourceforge.plantuml.regex.RegexLeaf;
|
||||
import net.sourceforge.plantuml.regex.RegexResult;
|
||||
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||
import net.sourceforge.plantuml.utils.BlocLines;
|
||||
|
||||
public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
||||
@ -86,6 +87,11 @@ public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
||||
final RegexResult line0 = getStartingPattern().matcher(lines.getFirst().getTrimmed().getString());
|
||||
final RegexResult lineLast = getPatternEnd2().matcher(lines.getLast().getString());
|
||||
final String end = lineLast.get("END", 0);
|
||||
final String stereo = lineLast.get("END", 1);
|
||||
|
||||
Stereotype stereotype = null;
|
||||
if (stereo != null)
|
||||
stereotype = Stereotype.build(stereo);
|
||||
|
||||
final BoxStyle style = BoxStyle.fromString(end);
|
||||
lines = lines.removeStartingAndEnding(line0.get("DATA", 0), end.length());
|
||||
@ -93,6 +99,6 @@ public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
||||
final LinkRendering in = LinkRendering.none();
|
||||
final LinkRendering out = LinkRendering.none();
|
||||
|
||||
return diagram.backward(lines.toDisplay(), style, in, out);
|
||||
return diagram.backward(lines.toDisplay(), style, in, out, stereotype);
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.FtileAssemblySimple;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileFactory;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileBox;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileCircleEnd;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileCircleEndCross;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileCircleSpot;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileCircleStart;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.vertical.FtileCircleStop;
|
||||
@ -66,7 +66,6 @@ import net.sourceforge.plantuml.klimt.font.UFont;
|
||||
import net.sourceforge.plantuml.klimt.geom.VerticalAlignment;
|
||||
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.SName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.style.StyleBuilder;
|
||||
@ -111,17 +110,13 @@ public class VCompactFactory implements FtileFactory {
|
||||
@Override
|
||||
public Ftile start(Swimlane swimlane) {
|
||||
final Style style = getSignatureCircleStart().getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
final HColor color = style.value(PName.LineColor).asColor(skinParam.getIHtmlColorSet());
|
||||
|
||||
return new FtileCircleStart(skinParam(), color, swimlane, style);
|
||||
return new FtileCircleStart(skinParam(), swimlane, style);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ftile stop(Swimlane swimlane) {
|
||||
final Style style = getSignatureCircleStop().getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
final HColor borderColor = style.value(PName.LineColor).asColor(skinParam.getIHtmlColorSet());
|
||||
final HColor backgroundColor = skinParam.getBackgroundColor();
|
||||
return new FtileCircleStop(skinParam(), backgroundColor, borderColor, swimlane, style);
|
||||
return new FtileCircleStop(skinParam(), swimlane, style);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -134,10 +129,7 @@ public class VCompactFactory implements FtileFactory {
|
||||
@Override
|
||||
public Ftile end(Swimlane swimlane) {
|
||||
final Style style = getSignatureCircleEnd().getMergedStyle(skinParam.getCurrentStyleBuilder());
|
||||
final HColor borderColor = style.value(PName.LineColor).asColor(skinParam.getIHtmlColorSet());
|
||||
final HColor backgroundColor = skinParam.getBackgroundColor();
|
||||
|
||||
return new FtileCircleEnd(skinParam(), backgroundColor, borderColor, swimlane, style);
|
||||
return new FtileCircleEndCross(skinParam(), swimlane, style);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -46,6 +46,7 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||
import net.sourceforge.plantuml.klimt.UStroke;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.shape.UEllipse;
|
||||
@ -54,12 +55,12 @@ import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
|
||||
public class FtileCircleEnd extends AbstractFtile {
|
||||
public class FtileCircleEndCross extends AbstractFtile {
|
||||
|
||||
private static final int SIZE = 20;
|
||||
|
||||
private HColor borderColor;
|
||||
private HColor backColor;
|
||||
private final HColor lineColor;
|
||||
private final HColor backColor;
|
||||
private final Swimlane swimlane;
|
||||
private double shadowing;
|
||||
|
||||
@ -68,14 +69,12 @@ public class FtileCircleEnd extends AbstractFtile {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public FtileCircleEnd(ISkinParam skinParam, HColor backColor, HColor borderColor, Swimlane swimlane, Style style) {
|
||||
public FtileCircleEndCross(ISkinParam skinParam, Swimlane swimlane, Style style) {
|
||||
super(skinParam);
|
||||
this.borderColor = borderColor;
|
||||
this.backColor = backColor;
|
||||
this.swimlane = swimlane;
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
this.backColor = style.value(PName.BackGroundColor).asColor(getIHtmlColorSet());
|
||||
this.borderColor = style.value(PName.LineColor).asColor(getIHtmlColorSet());
|
||||
this.lineColor = style.value(PName.LineColor).asColor(getIHtmlColorSet());
|
||||
|
||||
}
|
||||
|
||||
@ -102,10 +101,11 @@ public class FtileCircleEnd extends AbstractFtile {
|
||||
|
||||
final UEllipse circle = UEllipse.build(SIZE, SIZE);
|
||||
circle.setDeltaShadow(shadowing);
|
||||
ug = ug.apply(borderColor);
|
||||
ug = ug.apply(lineColor).apply(HColors.transparent().bg());
|
||||
final double thickness = 2.5;
|
||||
ug.apply(backColor.bg()).apply(UStroke.withThickness(1.5)).apply(new UTranslate(xTheoricalPosition, yTheoricalPosition))
|
||||
.draw(circle);
|
||||
ug.apply(UStroke.withThickness(1.5)).apply(new UTranslate(xTheoricalPosition, yTheoricalPosition)).draw(circle);
|
||||
|
||||
ug = ug.apply(backColor.bg());
|
||||
|
||||
final double size2 = (SIZE - thickness) / Math.sqrt(2);
|
||||
final double delta = (SIZE - size2) / 2;
|
@ -43,32 +43,22 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileGeometry;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.color.Colors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.shape.UEllipse;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.svek.image.CircleStart;
|
||||
|
||||
public class FtileCircleStart extends AbstractFtile {
|
||||
|
||||
private static final int SIZE = 20;
|
||||
|
||||
private HColor backColor;
|
||||
private HColor borderColor;
|
||||
private final CircleStart circle;
|
||||
private final Swimlane swimlane;
|
||||
private double shadowing;
|
||||
|
||||
public FtileCircleStart(ISkinParam skinParam, HColor backColor, Swimlane swimlane, Style style) {
|
||||
public FtileCircleStart(ISkinParam skinParam, Swimlane swimlane, Style style) {
|
||||
super(skinParam);
|
||||
this.swimlane = swimlane;
|
||||
this.backColor = backColor;
|
||||
this.borderColor = HColors.none();
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
this.backColor = style.value(PName.BackGroundColor).asColor(getIHtmlColorSet());
|
||||
this.borderColor = style.value(PName.LineColor).asColor(getIHtmlColorSet());
|
||||
this.circle = new CircleStart(skinParam, style, Colors.empty());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -92,14 +82,13 @@ public class FtileCircleStart extends AbstractFtile {
|
||||
}
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
final UEllipse circle = UEllipse.build(SIZE, SIZE);
|
||||
circle.setDeltaShadow(shadowing);
|
||||
ug.apply(borderColor).apply(backColor.bg()).draw(circle);
|
||||
circle.drawU(ug);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FtileGeometry calculateDimensionFtile(StringBounder stringBounder) {
|
||||
return new FtileGeometry(SIZE, SIZE, SIZE / 2, 0, SIZE);
|
||||
final double size = circle.calculateDimension(stringBounder).getWidth();
|
||||
return new FtileGeometry(size, size, size / 2, 0, size);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -43,38 +43,29 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.AbstractFtile;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Ftile;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.FtileGeometry;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlane;
|
||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||
import net.sourceforge.plantuml.klimt.color.HColor;
|
||||
import net.sourceforge.plantuml.klimt.color.HColors;
|
||||
import net.sourceforge.plantuml.klimt.color.Colors;
|
||||
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
|
||||
import net.sourceforge.plantuml.klimt.font.StringBounder;
|
||||
import net.sourceforge.plantuml.klimt.shape.UEllipse;
|
||||
import net.sourceforge.plantuml.style.ISkinParam;
|
||||
import net.sourceforge.plantuml.style.PName;
|
||||
import net.sourceforge.plantuml.style.Style;
|
||||
import net.sourceforge.plantuml.svek.image.CircleEnd;
|
||||
|
||||
public class FtileCircleStop extends AbstractFtile {
|
||||
|
||||
private static final int SIZE = 22;
|
||||
|
||||
private HColor borderColor;
|
||||
private HColor backColor;
|
||||
private final Swimlane swimlane;
|
||||
private double shadowing;
|
||||
private final CircleEnd circle;
|
||||
|
||||
@Override
|
||||
public Collection<Ftile> getMyChildren() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
public FtileCircleStop(ISkinParam skinParam, HColor backColor, HColor borderColor, Swimlane swimlane, Style style) {
|
||||
public FtileCircleStop(ISkinParam skinParam, Swimlane swimlane, Style style) {
|
||||
super(skinParam);
|
||||
this.borderColor = borderColor;
|
||||
this.backColor = backColor;
|
||||
this.swimlane = swimlane;
|
||||
this.shadowing = style.value(PName.Shadowing).asDouble();
|
||||
this.backColor = style.value(PName.BackGroundColor).asColor(getIHtmlColorSet());
|
||||
this.borderColor = style.value(PName.LineColor).asColor(getIHtmlColorSet());
|
||||
this.circle = new CircleEnd(skinParam, style, Colors.empty());
|
||||
|
||||
}
|
||||
|
||||
@ -94,18 +85,7 @@ public class FtileCircleStop extends AbstractFtile {
|
||||
}
|
||||
|
||||
public void drawU(UGraphic ug) {
|
||||
final UEllipse circle = UEllipse.build(SIZE, SIZE);
|
||||
circle.setDeltaShadow(shadowing);
|
||||
|
||||
ug.apply(borderColor).apply(backColor.bg()).draw(circle);
|
||||
|
||||
final double delta = 5;
|
||||
final UEllipse circleSmall = UEllipse.build(SIZE - delta * 2, SIZE - delta * 2);
|
||||
// if (skinParam().shadowing(null)) {
|
||||
// circleSmall.setDeltaShadow(3);
|
||||
// }
|
||||
final HColor middle = HColors.middle(borderColor, backColor);
|
||||
ug.apply(middle).apply(borderColor.bg()).apply(new UTranslate(delta, delta)).draw(circleSmall);
|
||||
circle.drawU(ug);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/activity-diagram-beta" target="_top">
|
||||
* Activity Diagram (New Syntax)</a>.
|
||||
*/
|
||||
package net.sourceforge.plantuml.activitydiagram3;
|
13
src/net/sourceforge/plantuml/activitydiagram3/readme.md
Normal file
13
src/net/sourceforge/plantuml/activitydiagram3/readme.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Directory Documentation for `activitydiagram3`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [Activity Diagram (New Syntax)](https://plantuml.com/activity-diagram-beta).
|
||||
|
||||
## Link
|
||||
- [Activity Diagram (New Syntax)](https://plantuml.com/activity-diagram-beta)
|
||||
|
||||
## Reference
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
@ -1,157 +0,0 @@
|
||||
/* ========================================================================
|
||||
* 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 net.sourceforge.plantuml.anim;
|
||||
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.util.Objects;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.sourceforge.plantuml.StringUtils;
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
import net.sourceforge.plantuml.klimt.geom.XPoint2D;
|
||||
|
||||
public class AffineTransformation {
|
||||
// ::remove folder when __HAXE__
|
||||
// ::remove folder when __CORE__
|
||||
|
||||
static private final Pattern rotate = Pattern.compile("rotate\\s+(-?\\d+\\.?\\d*)");
|
||||
static private final Pattern shear = Pattern.compile("shear\\s+(-?\\d+\\.?\\d*)\\s+(-?\\d+\\.?\\d*)");
|
||||
static private final Pattern translate = Pattern.compile("translate\\s+(-?\\d+\\.?\\d*)\\s+(-?\\d+\\.?\\d*)");
|
||||
static private final Pattern scale = Pattern.compile("scale\\s+(-?\\d+\\.?\\d*)\\s+(-?\\d+\\.?\\d*)");
|
||||
static private final Pattern color = Pattern.compile("color\\s+.*");
|
||||
|
||||
private final AffineTransform affineTransform;
|
||||
private XDimension2D dimension;
|
||||
|
||||
private AffineTransformation(AffineTransform affineTransform) {
|
||||
this.affineTransform = Objects.requireNonNull(affineTransform);
|
||||
}
|
||||
|
||||
private AffineTransformation compose(AffineTransformation other) {
|
||||
final AffineTransform tmp = new AffineTransform(this.affineTransform);
|
||||
tmp.concatenate(other.affineTransform);
|
||||
return new AffineTransformation(tmp);
|
||||
}
|
||||
|
||||
public static AffineTransformation from(AffineTransform affineTransform) {
|
||||
return new AffineTransformation(affineTransform);
|
||||
}
|
||||
|
||||
static AffineTransformation create(String value) {
|
||||
final StringTokenizer st = new StringTokenizer(value, "|");
|
||||
AffineTransformation result = null;
|
||||
while (st.hasMoreTokens()) {
|
||||
final String s = st.nextToken();
|
||||
final AffineTransformation tmp = createSimple(s);
|
||||
if (tmp != null) {
|
||||
if (result == null) {
|
||||
result = tmp;
|
||||
} else {
|
||||
result = result.compose(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static AffineTransformation createSimple(String value) {
|
||||
Matcher m = rotate.matcher(StringUtils.trin(value));
|
||||
if (m.find()) {
|
||||
final double angle = Double.parseDouble(m.group(1));
|
||||
return new AffineTransformation(AffineTransform.getRotateInstance(angle * Math.PI / 180.0));
|
||||
}
|
||||
m = shear.matcher(value);
|
||||
if (m.find()) {
|
||||
final double shx = Double.parseDouble(m.group(1));
|
||||
final double shy = Double.parseDouble(m.group(2));
|
||||
return new AffineTransformation(AffineTransform.getShearInstance(shx, shy));
|
||||
}
|
||||
m = translate.matcher(value);
|
||||
if (m.find()) {
|
||||
final double tx = Double.parseDouble(m.group(1));
|
||||
final double ty = Double.parseDouble(m.group(2));
|
||||
return new AffineTransformation(AffineTransform.getTranslateInstance(tx, ty));
|
||||
}
|
||||
m = scale.matcher(value);
|
||||
if (m.find()) {
|
||||
final double scalex = Double.parseDouble(m.group(1));
|
||||
final double scaley = Double.parseDouble(m.group(2));
|
||||
return new AffineTransformation(AffineTransform.getScaleInstance(scalex, scaley));
|
||||
}
|
||||
m = color.matcher(value);
|
||||
if (m.find()) {
|
||||
return new AffineTransformation(new AffineTransform());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public final AffineTransform getAffineTransform() {
|
||||
return getAffineTransform(dimension);
|
||||
}
|
||||
|
||||
private AffineTransform getAffineTransform(XDimension2D dimension) {
|
||||
if (dimension == null) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
final AffineTransform at = AffineTransform.getTranslateInstance(dimension.getWidth() / 2,
|
||||
dimension.getHeight() / 2);
|
||||
at.concatenate(affineTransform);
|
||||
at.translate(-dimension.getWidth() / 2, -dimension.getHeight() / 2);
|
||||
|
||||
return at;
|
||||
}
|
||||
|
||||
public void setDimension(XDimension2D dim) {
|
||||
this.dimension = dim;
|
||||
|
||||
}
|
||||
|
||||
public MinMax getMinMax(XDimension2D rect) {
|
||||
MinMax result = MinMax.getEmpty(false);
|
||||
final AffineTransform tmp = getAffineTransform(rect);
|
||||
|
||||
result = result.addPoint(new XPoint2D(0, 0).transform(tmp));
|
||||
result = result.addPoint(new XPoint2D(0, rect.getHeight()).transform(tmp));
|
||||
result = result.addPoint(new XPoint2D(rect.getWidth(), 0).transform(tmp));
|
||||
result = result.addPoint(new XPoint2D(rect.getWidth(), rect.getHeight()).transform(tmp));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,99 +0,0 @@
|
||||
/* ========================================================================
|
||||
* 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 net.sourceforge.plantuml.anim;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import net.sourceforge.plantuml.klimt.geom.MinMax;
|
||||
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
|
||||
|
||||
public class Animation {
|
||||
|
||||
private final List<AffineTransformation> all;
|
||||
|
||||
private Animation(List<AffineTransformation> all) {
|
||||
if (all.size() == 0) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
this.all = all;
|
||||
}
|
||||
|
||||
public static Animation singleton(AffineTransformation affineTransformation) {
|
||||
if (affineTransformation == null) {
|
||||
return null;
|
||||
}
|
||||
return new Animation(Collections.singletonList(affineTransformation));
|
||||
}
|
||||
|
||||
public static Animation create(List<String> descriptions) {
|
||||
final List<AffineTransformation> all = new ArrayList<>();
|
||||
for (String s : descriptions) {
|
||||
final AffineTransformation tmp = AffineTransformation.create(s);
|
||||
if (tmp != null) {
|
||||
all.add(tmp);
|
||||
}
|
||||
}
|
||||
return new Animation(all);
|
||||
}
|
||||
|
||||
public Collection<AffineTransformation> getAll() {
|
||||
return Collections.unmodifiableCollection(all);
|
||||
}
|
||||
|
||||
public void setDimension(XDimension2D dim) {
|
||||
for (AffineTransformation affineTransform : all) {
|
||||
affineTransform.setDimension(dim);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public AffineTransformation getFirst() {
|
||||
return all.get(0);
|
||||
}
|
||||
|
||||
public MinMax getMinMax(XDimension2D dim) {
|
||||
MinMax result = MinMax.getEmpty(false);
|
||||
for (AffineTransformation affineTransform : all) {
|
||||
final MinMax m = affineTransform.getMinMax(dim);
|
||||
result = result.addMinMax(m);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
/* ========================================================================
|
||||
* 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 net.sourceforge.plantuml.anim;
|
||||
|
||||
public class AnimationScript {
|
||||
|
||||
// private final ScriptEngine engine;
|
||||
|
||||
public AnimationScript() {
|
||||
|
||||
// final ScriptEngineManager manager = new ScriptEngineManager();
|
||||
// engine = manager.getEngineByName("js");
|
||||
|
||||
// ScriptEngineManager manager = new ScriptEngineManager();
|
||||
// List<ScriptEngineFactory> factories = manager.getEngineFactories();
|
||||
// for (ScriptEngineFactory factory : factories) {
|
||||
// System.out.println("Name : " + factory.getEngineName());
|
||||
// System.out.println("Version : " + factory.getEngineVersion());
|
||||
// System.out.println("Language name : " + factory.getLanguageName());
|
||||
// System.out.println("Language version : " + factory.getLanguageVersion());
|
||||
// System.out.println("Extensions : " + factory.getExtensions());
|
||||
// System.out.println("Mime types : " + factory.getMimeTypes());
|
||||
// System.out.println("Names : " + factory.getNames());
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
public String eval(String line) {
|
||||
throw new UnsupportedOperationException();
|
||||
// final ScriptContext context = engine.getContext();
|
||||
// final StringWriter sw = new StringWriter();
|
||||
// context.setWriter(new PrintWriter(sw));
|
||||
// engine.eval(line, context);
|
||||
// final String result = sw.toString();
|
||||
// return result;
|
||||
}
|
||||
}
|
13
src/net/sourceforge/plantuml/annotation/DeadCode.java
Normal file
13
src/net/sourceforge/plantuml/annotation/DeadCode.java
Normal file
@ -0,0 +1,13 @@
|
||||
package net.sourceforge.plantuml.annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@Target({ ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE })
|
||||
public @interface DeadCode {
|
||||
|
||||
String comment() default "";
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
/**
|
||||
* Provides classes used to manage Java User Annotation on PlantUML.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.annotation;
|
6
src/net/sourceforge/plantuml/annotation/readme.md
Normal file
6
src/net/sourceforge/plantuml/annotation/readme.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Directory Documentation for `annotation`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage Java User Annotation on PlantUML.
|
||||
|
||||
Currently use to identify 'DeadCode' with the `@DeadCode` Annotation.
|
7
src/net/sourceforge/plantuml/ant/package-info.java
Normal file
7
src/net/sourceforge/plantuml/ant/package-info.java
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/ant-task)" target="_top">
|
||||
* PlantUML Ant task</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.ant;
|
11
src/net/sourceforge/plantuml/ant/readme.md
Normal file
11
src/net/sourceforge/plantuml/ant/readme.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Directory Documentation for `ant`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [PlantUML Ant task](https://plantuml.com/ant-task).
|
||||
|
||||
## Link
|
||||
- [PlantUML Ant task](https://plantuml.com/ant-task)
|
||||
|
||||
## Reference
|
||||
- [Apache Ant](https://ant.apache.org)
|
||||
- [Apache Ant _(on Wikipedia)_](https://en.wikipedia.org/wiki/Apache_Ant)
|
28
src/net/sourceforge/plantuml/argon2/package-info.java
Normal file
28
src/net/sourceforge/plantuml/argon2/package-info.java
Normal file
@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Provides classes used to manage the Password-Hashing Function nammed
|
||||
* <a href="https://github.com/andreas1327250/argon2-java" target="_top">
|
||||
* Argon2</a>.
|
||||
*
|
||||
* <p>
|
||||
* The code is taken from:
|
||||
* <ul>
|
||||
* <li><a href="https://github.com/andreas1327250/argon2-java" target="_top">
|
||||
* Andreas1327250/Argon2-java</a></li>
|
||||
* <li><a href="https://github.com/alphazero/Blake2b/" target="_top">
|
||||
* Alphazero/Blake2b/</a></li>
|
||||
* </ul>
|
||||
* </p>
|
||||
* <p>
|
||||
* <i>Ref.</i>:
|
||||
* <ul>
|
||||
* <li><a href="https://github.com/P-H-C/phc-winner-argon2" target="_top">
|
||||
* P-H-C/PHC-winner-argon2</a></li>
|
||||
* <li><a href="https://www.password-hashing.net" target="_top">
|
||||
* Password Hashing Competition (PHC)</a></li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @see net.sourceforge.plantuml.argon2.blake2
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.argon2;
|
22
src/net/sourceforge/plantuml/argon2/readme.md
Normal file
22
src/net/sourceforge/plantuml/argon2/readme.md
Normal file
@ -0,0 +1,22 @@
|
||||
# Directory Documentation for `argon2`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage the password-hashing function nammed [Argon2](https://github.com/andreas1327250/argon2-java).
|
||||
|
||||
## Link
|
||||
- :octocat: [Andreas1327250/Argon2-java](https://github.com/andreas1327250/argon2-java)
|
||||
|
||||
## Reference
|
||||
- [Argon2 _(on Wikipedia)_](https://en.wikipedia.org/wiki/Argon2)
|
||||
- [RFC 9106 (Argon2)](https://datatracker.ietf.org/doc/html/rfc9106)
|
||||
- :octocat: [P-H-C/PHC-winner-argon2](https://github.com/P-H-C/phc-winner-argon2)
|
||||
- [Password Hashing Competition (PHC)](https://www.password-hashing.net)
|
||||
- [BLAKE2](https://www.blake2.net)
|
||||
- [RFC 7693 (BLAKE2)](https://datatracker.ietf.org/doc/html/rfc7693)
|
||||
|
||||
## Credit
|
||||
- :octocat: [Andreas1327250/Argon2-java](https://github.com/andreas1327250/argon2-java)
|
||||
- :octocat: [Alphazero/Blake2b](https://github.com/alphazero/Blake2b/)
|
||||
|
||||
## Misc.
|
||||
|
7
src/net/sourceforge/plantuml/asciiart/package-info.java
Normal file
7
src/net/sourceforge/plantuml/asciiart/package-info.java
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/ascii-art" target="_top">
|
||||
* ASCII Art output format</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.asciiart;
|
11
src/net/sourceforge/plantuml/asciiart/readme.md
Normal file
11
src/net/sourceforge/plantuml/asciiart/readme.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Directory Documentation for `asciiart`
|
||||
|
||||
## Description
|
||||
This package provides classes used to export diagram to an [ASCII Art](https://plantuml.com/ascii-art) output format.
|
||||
|
||||
## Link
|
||||
- [ASCII Art Output Format](https://plantuml.com/ascii-art)
|
||||
- [ASCII Art _(on Wikipedia)_](https://en.wikipedia.org/wiki/ASCII_art)
|
||||
|
||||
## Reference
|
||||
|
7
src/net/sourceforge/plantuml/board/package-info.java
Normal file
7
src/net/sourceforge/plantuml/board/package-info.java
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="http://alphadoc.plantuml.com/doc/markdown/en/board-diagram" target="_top">
|
||||
* Board Diagram</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.board;
|
11
src/net/sourceforge/plantuml/board/readme.md
Normal file
11
src/net/sourceforge/plantuml/board/readme.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Directory Documentation for `board`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [PlantUML Board Diagram](http://alphadoc.plantuml.com/doc/markdown/en/board-diagram).
|
||||
|
||||
## Link
|
||||
- [Board Diagram _(on Alpha-doc)_](http://alphadoc.plantuml.com/doc/markdown/en/board-diagram)
|
||||
|
||||
## Reference
|
||||
- [GH-423](https://github.com/plantuml/plantuml/issues/423)
|
||||
|
@ -148,7 +148,7 @@ public class BpmElement extends AbstractConnectorPuzzle implements ConnectorPuzz
|
||||
|
||||
public TextBlock toTextBlockInternal(ISkinParam skinParam) {
|
||||
if (type == BpmElementType.START) {
|
||||
return new FtileCircleStart(skinParam, HColors.BLACK, null, getStyle(skinParam));
|
||||
return new FtileCircleStart(skinParam, null, getStyle(skinParam));
|
||||
}
|
||||
if (type == BpmElementType.MERGE) {
|
||||
final HColor borderColor = SkinParamUtils.getColor(skinParam, null, ColorParam.activityBorder);
|
||||
|
7
src/net/sourceforge/plantuml/bpm/package-info.java
Normal file
7
src/net/sourceforge/plantuml/bpm/package-info.java
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="http://alphadoc.plantuml.com/doc/markdown/en/bpmn" target="_top">
|
||||
* BPMN (Business Process Model and Notation) Diagram</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.bpm;
|
16
src/net/sourceforge/plantuml/bpm/readme.md
Normal file
16
src/net/sourceforge/plantuml/bpm/readme.md
Normal file
@ -0,0 +1,16 @@
|
||||
# Directory Documentation for `bpm`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [PlantUML BPMN diagram](http://alphadoc.plantuml.com/doc/markdown/en/bpmn).
|
||||
|
||||
## Link
|
||||
- [BPMN Diagram _(on Alpha-doc)_](http://alphadoc.plantuml.com/doc/markdown/en/bpmn)
|
||||
- [BPMN _(on Wikipedia)_](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation)
|
||||
|
||||
## Reference
|
||||
- [QA-5647](https://forum.plantuml.net/5647/plans-for-bpmn-support)
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
||||
|
7
src/net/sourceforge/plantuml/braille/package-info.java
Normal file
7
src/net/sourceforge/plantuml/braille/package-info.java
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/en/command-line#458de91d76a8569c" target="_top">
|
||||
* Braille output format</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.braille;
|
11
src/net/sourceforge/plantuml/braille/readme.md
Normal file
11
src/net/sourceforge/plantuml/braille/readme.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Directory Documentation for `braille`
|
||||
|
||||
## Description
|
||||
This package provides classes used to export diagram to a [Braille](https://plantuml.com/en/command-line#458de91d76a8569c) output format.
|
||||
|
||||
## Link
|
||||
- [PlantUML Braille Output Format](https://plantuml.com/en/command-line#458de91d76a8569c)
|
||||
|
||||
## Reference
|
||||
- [QA-4752](https://forum.plantuml.net/4752/translate-class-diagram-to-braille)
|
||||
|
18
src/net/sourceforge/plantuml/brotli/package-info.java
Normal file
18
src/net/sourceforge/plantuml/brotli/package-info.java
Normal file
@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://github.com/google/brotli" target="_top">
|
||||
* Brotli Compression Algorithm</a>.
|
||||
*
|
||||
* <p>
|
||||
* The code is taken from:
|
||||
* <ul>
|
||||
* <li><a href="https://github.com/google/brotli" target="_top">
|
||||
* Google/Brotli</a></li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @see net.sourceforge.plantuml.code.deflate
|
||||
* @see net.sourceforge.plantuml.zopfli
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.brotli;
|
18
src/net/sourceforge/plantuml/brotli/readme.md
Normal file
18
src/net/sourceforge/plantuml/brotli/readme.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Directory Documentation for `brotli`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [Brotli Compression Algorithm](https://github.com/google/brotli).
|
||||
|
||||
## Link
|
||||
- :octocat: [Google/Brotli](https://github.com/google/brotli)
|
||||
|
||||
## Reference
|
||||
- [Brotli _(on Wikipedia)_](https://en.wikipedia.org/wiki/Brotli)
|
||||
- [RFC 7932](https://datatracker.ietf.org/doc/html/rfc7932)
|
||||
|
||||
## Credit
|
||||
- :octocat: [Google/Brotli](https://github.com/google/brotli)
|
||||
|
||||
## Misc.
|
||||
- [Brötchen _(on Wikipedia)_](https://de.wikipedia.org/wiki/Br%C3%B6tchen)
|
||||
- [Bread roll _(on Wikipedia)_](https://en.wikipedia.org/wiki/Bread_roll)
|
@ -190,18 +190,25 @@ public class CommandHideShowByGender extends SingleLineCommand2<UmlDiagram> {
|
||||
} else {
|
||||
arg1 = StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg1);
|
||||
final Quark<Entity> quark = diagram.quarkInContext(true, diagram.cleanId(arg1));
|
||||
if (quark == null) {
|
||||
// Not sure it could really happens... to be checked
|
||||
return CommandExecutionResult.error("No such quark " + arg1);
|
||||
}
|
||||
if (portion == EntityPortion.METHOD) {
|
||||
gender = EntityGenderUtils.byClassName(arg1);
|
||||
} else {
|
||||
Entity entity = quark.getData();
|
||||
if (entity == null)
|
||||
return CommandExecutionResult.error("No such element " + quark.getName());
|
||||
gender = EntityGenderUtils.byEntityAlone(entity);
|
||||
}
|
||||
if (gender != null) {
|
||||
}
|
||||
final boolean empty = arg.get("EMPTY", 0) != null;
|
||||
final boolean emptyMembers = empty && portion == EntityPortion.MEMBER;
|
||||
if (empty == true && emptyMembers == false)
|
||||
if (empty && !emptyMembers)
|
||||
gender = EntityGenderUtils.and(gender, emptyByGender(portion));
|
||||
|
||||
if (diagram.getCurrentGroup().isRoot() == false)
|
||||
if (!diagram.getCurrentGroup().isRoot())
|
||||
gender = EntityGenderUtils.and(gender, EntityGenderUtils.byPackage(diagram.getCurrentGroup()));
|
||||
|
||||
if (emptyMembers) {
|
||||
@ -212,7 +219,6 @@ public class CommandHideShowByGender extends SingleLineCommand2<UmlDiagram> {
|
||||
} else {
|
||||
diagram.hideOrShow(gender, portion, arg.get("COMMAND", 0).equalsIgnoreCase("show"));
|
||||
}
|
||||
}
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/class-diagram" target="_top">
|
||||
* Class Diagram</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.classdiagram;
|
14
src/net/sourceforge/plantuml/classdiagram/readme.md
Normal file
14
src/net/sourceforge/plantuml/classdiagram/readme.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Directory Documentation for `classdiagram`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [PlantUML Class Diagram](https://plantuml.com/class-diagram).
|
||||
|
||||
## Link
|
||||
- [Class Diagram](https://plantuml.com/class-diagram)
|
||||
|
||||
## Reference
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
||||
|
@ -40,6 +40,9 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import net.sourceforge.plantuml.annotation.DeadCode;
|
||||
|
||||
@DeadCode(comment = "try for text diagram compression")
|
||||
public class Tokens {
|
||||
// ::remove file when __CORE__
|
||||
|
||||
|
9
src/net/sourceforge/plantuml/code/package-info.java
Normal file
9
src/net/sourceforge/plantuml/code/package-info.java
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Provides classes used to manage Coding and Compression.
|
||||
*
|
||||
* @see net.sourceforge.plantuml.brotli
|
||||
* @see net.sourceforge.plantuml.code.deflate
|
||||
* @see net.sourceforge.plantuml.zopfli
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.code;
|
19
src/net/sourceforge/plantuml/code/readme.md
Normal file
19
src/net/sourceforge/plantuml/code/readme.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Directory Documentation for `code`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage Coding and Compression.
|
||||
|
||||
## Link
|
||||
- [`brotli`](../brotli/)
|
||||
- [`code.deflate`](./deflate/)
|
||||
- [`zopfli`](../zopfli/)
|
||||
|
||||
## Reference
|
||||
- [Simple DEFLATE decompressor](https://www.nayuki.io/page/simple-deflate-decompressor)
|
||||
- [RFC 1951 (DEFLATE)](https://datatracker.ietf.org/doc/html/rfc1951)
|
||||
|
||||
## Credit
|
||||
- :octocat: [Nayuki/Simple-DEFLATE-decompressor](https://github.com/nayuki/Simple-DEFLATE-decompressor)
|
||||
|
||||
## Misc.
|
||||
|
@ -1,71 +0,0 @@
|
||||
/* ========================================================================
|
||||
* 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 net.sourceforge.plantuml.command;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import net.sourceforge.plantuml.UmlDiagram;
|
||||
import net.sourceforge.plantuml.regex.IRegex;
|
||||
import net.sourceforge.plantuml.regex.RegexConcat;
|
||||
import net.sourceforge.plantuml.regex.RegexLeaf;
|
||||
import net.sourceforge.plantuml.regex.RegexResult;
|
||||
import net.sourceforge.plantuml.utils.LineLocation;
|
||||
|
||||
public class CommandAffineTransform extends SingleLineCommand2<UmlDiagram> {
|
||||
|
||||
public static final CommandAffineTransform ME = new CommandAffineTransform();
|
||||
|
||||
private CommandAffineTransform() {
|
||||
super(getRegexConcat());
|
||||
}
|
||||
|
||||
static IRegex getRegexConcat() {
|
||||
return RegexConcat.build(CommandAffineTransform.class.getName(), RegexLeaf.start(), //
|
||||
new RegexLeaf("!transformation"), //
|
||||
RegexLeaf.spaceOneOrMore(), //
|
||||
new RegexLeaf("ANIMATION", "([^{}]*)"), RegexLeaf.end()); //
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CommandExecutionResult executeArg(UmlDiagram diagram, LineLocation location, RegexResult arg) {
|
||||
final CharSequence value = arg.get("ANIMATION", 0);
|
||||
// ::comment when __CORE__
|
||||
diagram.setAnimation(Collections.singletonList(value));
|
||||
// ::done
|
||||
return CommandExecutionResult.ok();
|
||||
}
|
||||
|
||||
}
|
@ -73,8 +73,6 @@ public final class CommonCommands {
|
||||
cmds.add(CommandScaleMaxWidth.ME);
|
||||
cmds.add(CommandScaleMaxHeight.ME);
|
||||
cmds.add(CommandScaleMaxWidthAndHeight.ME);
|
||||
cmds.add(CommandAffineTransform.ME);
|
||||
cmds.add(CommandAffineTransformMultiline.ME);
|
||||
final CommandFactorySprite factorySpriteCommand = new CommandFactorySprite();
|
||||
cmds.add(factorySpriteCommand.createMultiLine(false));
|
||||
cmds.add(factorySpriteCommand.createSingleLine());
|
||||
|
9
src/net/sourceforge/plantuml/command/package-info.java
Normal file
9
src/net/sourceforge/plantuml/command/package-info.java
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/commons" target="_top">
|
||||
* PlantUML End User Common Commands</a>.
|
||||
*
|
||||
* @see net.sourceforge.plantuml.regex
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.command;
|
14
src/net/sourceforge/plantuml/command/readme.md
Normal file
14
src/net/sourceforge/plantuml/command/readme.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Directory Documentation for `command`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [PlantUML End User Common Commands](https://plantuml.com/commons).
|
||||
|
||||
## Link
|
||||
- [Common Commands in PlantUML](https://plantuml.com/commons)
|
||||
|
||||
## Reference
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
||||
|
@ -39,7 +39,7 @@ import net.sourceforge.plantuml.utils.StartUtils;
|
||||
|
||||
public enum DiagramType {
|
||||
// ::remove folder when __HAXE__
|
||||
UML, BPM, DITAA, DOT, PROJECT, JCCKIT, SALT, FLOW, CREOLE, JUNGLE, CUTE, MATH, LATEX, DEFINITION, GANTT, NW,
|
||||
UML, BPM, DITAA, DOT, PROJECT, JCCKIT, SALT, FLOW, CREOLE, MATH, LATEX, DEFINITION, GANTT, NW,
|
||||
MINDMAP, WBS, WIRE, JSON, GIT, BOARD, YAML, HCL, EBNF, REGEX, FILES, CHEN_EER, UNKNOWN;
|
||||
|
||||
static public DiagramType getTypeFromArobaseStart(String s) {
|
||||
@ -59,11 +59,15 @@ public enum DiagramType {
|
||||
if (StartUtils.startsWithSymbolAnd("startdot", s))
|
||||
return DOT;
|
||||
|
||||
// ::comment when __CORE__ or __MIT__ or __EPL__ or __BSD__ or __ASL__ or __LGPL__
|
||||
if (StartUtils.startsWithSymbolAnd("startjcckit", s))
|
||||
return JCCKIT;
|
||||
// ::done
|
||||
|
||||
// ::comment when __CORE__ or __MIT__ or __EPL__ or __BSD__ or __ASL__
|
||||
if (StartUtils.startsWithSymbolAnd("startditaa", s))
|
||||
return DITAA;
|
||||
// ::done
|
||||
|
||||
if (StartUtils.startsWithSymbolAnd("startproject", s))
|
||||
return PROJECT;
|
||||
@ -77,12 +81,6 @@ public enum DiagramType {
|
||||
if (StartUtils.startsWithSymbolAnd("startcreole", s))
|
||||
return CREOLE;
|
||||
|
||||
if (StartUtils.startsWithSymbolAnd("starttree", s))
|
||||
return JUNGLE;
|
||||
|
||||
if (StartUtils.startsWithSymbolAnd("startcute", s))
|
||||
return CUTE;
|
||||
|
||||
if (StartUtils.startsWithSymbolAnd("startmath", s))
|
||||
return MATH;
|
||||
|
||||
|
@ -45,7 +45,6 @@ import net.sourceforge.plantuml.klimt.creole.Display;
|
||||
import net.sourceforge.plantuml.regex.Matcher2;
|
||||
import net.sourceforge.plantuml.regex.MyPattern;
|
||||
import net.sourceforge.plantuml.regex.Pattern2;
|
||||
import net.sourceforge.plantuml.text.BackSlash;
|
||||
import net.sourceforge.plantuml.text.StringLocated;
|
||||
import net.sourceforge.plantuml.utils.LineLocation;
|
||||
import net.sourceforge.plantuml.utils.StartUtils;
|
||||
|
@ -38,7 +38,11 @@ package net.sourceforge.plantuml.cucadiagram;
|
||||
import net.sourceforge.plantuml.abel.Entity;
|
||||
import net.sourceforge.plantuml.abel.EntityPortion;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface PortionShower {
|
||||
|
||||
boolean showPortion(EntityPortion portion, Entity entity);
|
||||
|
||||
List<String> getVisibleStereotypeLabels(Entity entity);
|
||||
}
|
||||
|
16
src/net/sourceforge/plantuml/cucadiagram/package-info.java
Normal file
16
src/net/sourceforge/plantuml/cucadiagram/package-info.java
Normal file
@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Provides classes used to manage PlantUML Class-UseCase-Activity (CUCA) Diagram.
|
||||
*
|
||||
* <p>
|
||||
* The PlantUML CUCA Diagrams are:
|
||||
* <ul>
|
||||
* <li><a href="https://plantuml.com/class-diagram" target="_top">
|
||||
* Class Diagram</a>;</li>
|
||||
* <li><a href="https://plantuml.com/use-case-diagram" target="_top">
|
||||
* Use Case Diagram</a>;</li>
|
||||
* <li><a href="https://plantuml.com/activity-diagram-legacy" target="_top">
|
||||
* Activity Diagram (legacy)</a>.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*/
|
||||
package net.sourceforge.plantuml.cucadiagram;
|
8
src/net/sourceforge/plantuml/cucadiagram/readme.md
Normal file
8
src/net/sourceforge/plantuml/cucadiagram/readme.md
Normal file
@ -0,0 +1,8 @@
|
||||
# Directory Documentation for `cucadiagram`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage PlantUML Class-UseCase-Activity (CUCA) Diagram:
|
||||
- [Class Diagram](https://plantuml.com/class-diagram)
|
||||
- [Use Case Diagram](https://plantuml.com/use-case-diagram)
|
||||
- [Activity Diagram (legacy)](https://plantuml.com/activity-diagram-legacy)
|
||||
|
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/dedication" target="_top">
|
||||
* Dedication</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.dedication;
|
13
src/net/sourceforge/plantuml/dedication/readme.md
Normal file
13
src/net/sourceforge/plantuml/dedication/readme.md
Normal file
@ -0,0 +1,13 @@
|
||||
# Directory Documentation for `dedication`
|
||||
|
||||
## Description
|
||||
This package provides classes used to manage [PlantUML Dedication](https://plantuml.com/dedication).
|
||||
|
||||
## Link
|
||||
- [Dedication](https://plantuml.com/dedication)
|
||||
|
||||
## Reference
|
||||
|
||||
## Credit
|
||||
|
||||
## Misc.
|
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Provides classes used to manage
|
||||
* <a href="https://plantuml.com/en/sources#dd263f8f99d9d776" target="_top">
|
||||
* Definition Diagram</a>.
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.definition;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user