From 39c585ee094d0d5aa83ad6fcb7704e34f7b827b3 Mon Sep 17 00:00:00 2001 From: Arnaud Roques Date: Sun, 23 May 2021 17:35:13 +0200 Subject: [PATCH] Import version 1.2021.7 --- pom.xml | 2 +- .../com/at/gadermaier/argon2/Validation.java | 63 --------- .../sourceforge/plantuml/AbstractPSystem.java | 12 +- .../sourceforge/plantuml/NewpagedDiagram.java | 4 +- src/net/sourceforge/plantuml/Option.java | 8 +- src/net/sourceforge/plantuml/OptionPrint.java | 1 - .../sourceforge/plantuml/PSystemBuilder.java | 29 ++-- .../sourceforge/plantuml/PlainDiagram.java | 13 +- .../plantuml/PlainStringsDiagram.java | 11 +- src/net/sourceforge/plantuml/Run.java | 29 +--- .../plantuml/SourceStringReader.java | 4 +- src/net/sourceforge/plantuml/StringUtils.java | 7 +- .../sourceforge/plantuml/TitledDiagram.java | 8 +- src/net/sourceforge/plantuml/UmlDiagram.java | 12 +- src/net/sourceforge/plantuml/UrlBuilder.java | 4 +- .../plantuml/acearth/PSystemXearth.java | 4 +- .../acearth/PSystemXearthFactory.java | 8 +- .../activitydiagram/ActivityDiagram.java | 5 +- .../ActivityDiagramFactory.java | 12 +- .../activitydiagram/command/CommandIf.java | 8 +- .../command/CommandLinkActivity.java | 12 +- .../command/CommandLinkLongActivity.java | 8 +- .../activitydiagram3/ActivityDiagram3.java | 5 +- .../ActivityDiagramFactory3.java | 11 +- .../activitydiagram3/command/CommandGoto.java | 2 +- .../command/CommandLabel.java | 2 +- .../command/CommandNoteLong3.java | 2 +- .../CommandRepeatWhile3Multilines.java | 8 +- .../activitydiagram3/ftile/FtileUtils.java | 3 + .../ftile/FtileWithConnection.java | 2 +- .../vcompact/FtileFactoryDelegatorSwitch.java | 2 +- .../ftile/vcompact/ParallelBuilderFork.java | 4 +- .../ftile/vcompact/ParallelBuilderMerge.java | 50 ++++--- .../ftile/vcompact/ParallelBuilderSplit.java | 4 +- .../cond/FtileSwitchWithManyLinks.java | 13 +- .../plantuml/api/PSystemFactory.java | 3 +- .../sourceforge/plantuml}/argon2/Argon2.java | 24 ++-- .../plantuml}/argon2/Argon2Factory.java | 2 +- .../plantuml}/argon2/Constants.java | 4 +- .../sourceforge/plantuml}/argon2/Util.java | 2 +- .../plantuml/argon2/Validation.java | 63 +++++++++ .../plantuml}/argon2/algorithm/FillBlock.java | 4 +- .../argon2/algorithm/FillMemory.java | 8 +- .../argon2/algorithm/FillSegment.java | 18 +-- .../plantuml}/argon2/algorithm/Finalize.java | 8 +- .../plantuml}/argon2/algorithm/Functions.java | 14 +- .../argon2/algorithm/Initialize.java | 14 +- .../plantuml}/argon2/blake2/Blake2b.java | 7 +- .../argon2/exception/Argon2Exception.java | 2 +- .../Argon2InvalidParameterException.java | 2 +- .../plantuml}/argon2/model/Argon2Type.java | 2 +- .../plantuml}/argon2/model/Block.java | 8 +- .../plantuml}/argon2/model/Instance.java | 6 +- .../plantuml}/argon2/model/Position.java | 2 +- .../plantuml/board/BoardDiagram.java | 5 +- .../plantuml/board/BoardDiagramFactory.java | 6 +- .../sourceforge/plantuml/bpm/BpmDiagram.java | 5 +- .../plantuml/bpm/BpmDiagramFactory.java | 6 +- .../sourceforge/plantuml/bpm/CommandGoto.java | 2 +- .../plantuml/bpm/CommandMerge.java | 2 +- .../plantuml/bpm/CommandResume.java | 2 +- .../classdiagram/AbstractEntityDiagram.java | 5 +- .../plantuml/classdiagram/ClassDiagram.java | 5 +- .../classdiagram/ClassDiagramFactory.java | 11 +- .../command/CommandAddMethod.java | 2 +- .../command/CommandCreateClassMultilines.java | 6 +- .../command/CommandDiamondAssociation.java | 2 +- .../command/CommandHideShowByGender.java | 2 +- .../command/CommandLinkClass.java | 6 +- .../command/CommandLinkLollipop.java | 4 +- .../command/CommandStereotype.java | 2 +- .../classdiagram/command/CommandUrl.java | 2 +- .../code/ArobaseStringCompressor.java | 2 +- .../CommandAffineTransformMultiline.java | 4 +- .../plantuml/command/CommandCaption.java | 2 +- .../command/CommandFactorySprite.java | 6 +- .../plantuml/command/CommandFooter.java | 2 +- .../plantuml/command/CommandHeader.java | 2 +- .../plantuml/command/CommandLegend.java | 2 +- .../plantuml/command/CommandMainframe.java | 2 +- .../plantuml/command/CommandMultilines.java | 2 +- .../command/CommandMultilinesBracket.java | 2 +- .../command/CommandMultilinesCaption.java | 4 +- .../command/CommandMultilinesComment.java | 6 +- .../command/CommandMultilinesFooter.java | 4 +- .../command/CommandMultilinesHeader.java | 4 +- .../command/CommandMultilinesLegend.java | 2 +- .../command/CommandMultilinesTitle.java | 4 +- .../plantuml/command/CommandNamespace.java | 2 +- .../plantuml/command/CommandNamespace2.java | 2 +- .../command/CommandNamespaceEmpty.java | 2 +- .../plantuml/command/CommandPackage.java | 2 +- .../plantuml/command/CommandPackageEmpty.java | 2 +- .../command/CommandSkinParamMultilines.java | 2 +- .../plantuml/command/CommandSpriteFile.java | 2 +- .../plantuml/command/CommandTitle.java | 2 +- .../command/PSystemAbstractFactory.java | 2 - .../plantuml/command/PSystemBasicFactory.java | 20 +-- .../command/PSystemCommandFactory.java | 10 +- .../command/PSystemSingleLineFactory.java | 9 +- .../command/note/CommandFactoryNote.java | 6 +- .../note/CommandFactoryNoteActivity.java | 2 +- .../note/CommandFactoryNoteOnEntity.java | 4 +- .../note/CommandFactoryNoteOnLink.java | 2 +- .../note/CommandFactoryTipOnEntity.java | 4 +- .../FactorySequenceNoteAcrossCommand.java | 2 +- .../sequence/FactorySequenceNoteCommand.java | 6 +- .../FactorySequenceNoteOnArrowCommand.java | 2 +- ...FactorySequenceNoteOverSeveralCommand.java | 10 +- .../plantuml/command/regex/MyPattern.java | 66 ++++++--- .../plantuml/command/regex/RegexComposed.java | 3 +- .../plantuml/command/regex/RegexLeaf.java | 8 +- .../compositediagram/CompositeDiagram.java | 5 +- .../CompositeDiagramFactory.java | 5 +- .../command/CommandCreateBlock.java | 2 +- .../command/CommandCreatePackageBlock.java | 2 +- .../command/CommandLinkBlock.java | 4 +- .../sourceforge/plantuml/core/UmlSource.java | 2 +- .../creole/command/CommandCreoleCache.java | 59 ++++++++ .../CommandCreoleColorAndSizeChange.java | 18 ++- .../command/CommandCreoleColorChange.java | 19 ++- .../command/CommandCreoleExposantChange.java | 19 +-- .../CommandCreoleFontFamilyChange.java | 19 ++- .../creole/command/CommandCreoleImg.java | 7 +- .../creole/command/CommandCreoleLatex.java | 7 +- .../creole/command/CommandCreoleMath.java | 7 +- .../command/CommandCreoleMonospaced.java | 2 +- .../creole/command/CommandCreoleOpenIcon.java | 8 +- .../creole/command/CommandCreoleQrcode.java | 7 +- .../command/CommandCreoleSizeChange.java | 19 +-- .../creole/command/CommandCreoleSpace.java | 7 +- .../creole/command/CommandCreoleSprite.java | 8 +- .../creole/command/CommandCreoleStyle.java | 11 +- .../creole/command/CommandCreoleStyle2.java | 14 +- .../CommandCreoleSvgAttributeChange.java | 19 +-- .../creole/command/CommandCreoleUrl.java | 7 +- .../plantuml/creole/legacy/PSystemCreole.java | 4 +- .../creole/legacy/PSystemCreoleFactory.java | 9 +- .../plantuml/cucadiagram/CucaDiagram.java | 5 +- .../plantuml/dedication/Noise.java | 6 +- .../dedication/PSystemDedication.java | 4 +- .../dedication/PSystemDedicationFactory.java | 5 +- .../definition/PSystemDefinition.java | 4 +- .../definition/PSystemDefinitionFactory.java | 8 +- .../descdiagram/DescriptionDiagram.java | 5 +- .../DescriptionDiagramFactory.java | 15 +- .../command/CommandArchimateMultilines.java | 4 +- .../command/CommandCreateElementFull.java | 4 +- .../CommandCreateElementMultilines.java | 8 +- .../CommandCreateElementParenthesis.java | 7 - .../command/CommandLinkElement.java | 2 +- .../descdiagram/command/CommandNewpage.java | 4 +- .../plantuml/directdot/PSystemDot.java | 8 +- .../plantuml/directdot/PSystemDotFactory.java | 9 +- .../plantuml/ditaa/PSystemDitaa.java | 6 +- .../plantuml/ditaa/PSystemDitaaFactory.java | 11 +- .../plantuml/donors/PSystemDonors.java | 9 +- .../plantuml/donors/PSystemDonorsFactory.java | 5 +- .../donors/PSystemSkinparameterList.java | 9 +- .../PSystemSkinparameterListFactory.java | 5 +- .../plantuml/eggs/PSystemAppleTwo.java | 4 +- .../plantuml/eggs/PSystemAppleTwoFactory.java | 5 +- .../plantuml/eggs/PSystemCharlie.java | 4 +- .../plantuml/eggs/PSystemCharlieFactory.java | 5 +- .../plantuml/eggs/PSystemColors.java | 4 +- .../plantuml/eggs/PSystemColorsFactory.java | 5 +- .../sourceforge/plantuml/eggs/PSystemEgg.java | 4 +- .../plantuml/eggs/PSystemEggFactory.java | 5 +- .../plantuml/eggs/PSystemLost.java | 4 +- .../plantuml/eggs/PSystemLostFactory.java | 5 +- .../plantuml/eggs/PSystemPath.java | 4 +- .../plantuml/eggs/PSystemPathFactory.java | 7 +- .../sourceforge/plantuml/eggs/PSystemRIP.java | 4 +- .../plantuml/eggs/PSystemRIPFactory.java | 5 +- .../plantuml/eggs/PSystemWelcome.java | 4 +- .../plantuml/eggs/PSystemWelcomeFactory.java | 6 +- .../plantuml/error/PSystemError.java | 12 +- .../plantuml/error/PSystemErrorEmpty.java | 2 +- .../error/PSystemErrorPreprocessor.java | 3 +- .../plantuml/error/PSystemErrorUtils.java | 3 + .../plantuml/error/PSystemErrorV2.java | 2 +- .../plantuml/flowdiagram/FlowDiagram.java | 9 +- .../flowdiagram/FlowDiagramFactory.java | 6 +- .../plantuml/font/PSystemListFonts.java | 4 +- .../font/PSystemListFontsFactory.java | 5 +- .../plantuml/gitlog/GitDiagram.java | 5 +- .../plantuml/gitlog/GitDiagramFactory.java | 6 +- .../plantuml/graphic/ColorAndSizeChange.java | 4 +- .../plantuml/graphic/ColorChange.java | 2 +- .../plantuml/graphic/FontFamilyChange.java | 2 +- .../plantuml/graphic/HtmlCommandFactory.java | 7 +- src/net/sourceforge/plantuml/graphic/Img.java | 8 +- .../plantuml/graphic/SizeChange.java | 2 +- .../plantuml/graphic/Splitter.java | 5 +- src/net/sourceforge/plantuml/help/Help.java | 5 +- .../plantuml/help/HelpFactory.java | 6 +- .../plantuml/jcckit/PSystemJcckit.java | 4 +- .../plantuml/jcckit/PSystemJcckitFactory.java | 17 ++- .../plantuml/jsondiagram/JsonDiagram.java | 5 +- .../jsondiagram/JsonDiagramFactory.java | 7 +- .../plantuml/logo/PSystemLogo.java | 4 +- .../plantuml/logo/PSystemLogoFactory.java | 10 +- .../plantuml/math/PSystemLatex.java | 4 +- .../plantuml/math/PSystemLatexFactory.java | 8 +- .../plantuml/math/PSystemMath.java | 4 +- .../plantuml/math/PSystemMathFactory.java | 8 +- .../plantuml/mindmap/MindMapDiagram.java | 5 +- .../mindmap/MindMapDiagramFactory.java | 6 +- .../plantuml/nwdiag/CommandElement.java | 2 +- .../plantuml/nwdiag/CommandGroup.java | 2 +- .../plantuml/nwdiag/CommandLink.java | 4 +- .../plantuml/nwdiag/CommandNetwork.java | 2 +- .../plantuml/nwdiag/NwDiagram.java | 21 +-- .../plantuml/nwdiag/NwDiagramFactory.java | 11 +- .../AbstractClassOrObjectDiagram.java | 5 +- .../objectdiagram/command/CommandAddData.java | 2 +- .../command/CommandCreateEntityObject.java | 2 +- .../CommandCreateEntityObjectMultilines.java | 4 +- .../command/CommandCreateMap.java | 4 +- .../plantuml/openiconic/OpenIcon.java | 8 +- .../openiconic/PSystemListOpenIconic.java | 5 + .../PSystemListOpenIconicFactory.java | 5 +- .../openiconic/PSystemOpenIconic.java | 4 +- .../openiconic/PSystemOpenIconicFactory.java | 5 +- .../plantuml/oregon/PSystemOregon.java | 7 +- .../plantuml/oregon/PSystemOregonFactory.java | 20 ++- .../plantuml/project/GanttDiagram.java | 5 +- .../plantuml/project/GanttDiagramFactory.java | 11 +- .../project/command/CommandColorTask.java | 2 +- .../project/command/CommandGanttArrow.java | 4 +- .../project/command/CommandNoteBottom.java | 4 +- .../plantuml/salt/PSystemSalt.java | 9 +- .../plantuml/salt/PSystemSaltFactory.java | 10 +- .../plantuml/salt/PSystemSaltFactory2.java | 6 +- .../sequencediagram/SequenceDiagram.java | 5 +- .../SequenceDiagramFactory.java | 11 +- .../command/CommandActivate.java | 2 +- .../command/CommandActivate2.java | 2 +- .../sequencediagram/command/CommandArrow.java | 16 +-- .../command/CommandAutonumber.java | 2 +- .../command/CommandExoArrowLeft.java | 2 +- .../command/CommandExoArrowRight.java | 2 +- .../command/CommandLinkAnchor.java | 4 +- .../command/CommandNewpage.java | 2 +- .../command/CommandParticipantA.java | 2 +- .../command/CommandParticipantA2.java | 2 +- .../command/CommandParticipantA3.java | 4 +- ...CommandReferenceMultilinesOverSeveral.java | 4 +- .../command/CommandReferenceOverSeveral.java | 2 +- .../sequencediagram/command/CommandUrl.java | 2 +- .../sequencediagram/graphic/Step1Message.java | 43 +++--- .../teoz/CommunicationTileSelf.java | 49 +++++-- .../plantuml/skin/ArrowConfiguration.java | 15 +- .../skin/rose/ComponentRoseSelfArrow.java | 128 +++++++++++------- .../plantuml/sprite/ListSpriteDiagram.java | 5 +- .../sprite/ListSpriteDiagramFactory.java | 11 +- .../sprite/PSystemListInternalSprites.java | 5 + .../PSystemListInternalSpritesFactory.java | 5 +- .../plantuml/sprite/StdlibDiagram.java | 5 +- .../plantuml/sprite/StdlibDiagramFactory.java | 11 +- .../plantuml/statediagram/StateDiagram.java | 5 +- .../statediagram/StateDiagramFactory.java | 13 +- .../statediagram/command/CommandAddField.java | 2 +- .../command/CommandCreatePackageState.java | 4 +- .../command/CommandCreateState.java | 6 +- .../command/CommandLinkState.java | 2 +- .../plantuml/stats/PSystemStats.java | 12 +- .../plantuml/stats/PSystemStatsFactory.java | 5 +- .../style/CommandStyleMultilinesCSS.java | 2 +- .../plantuml/sudoku/PSystemSudoku.java | 4 +- .../plantuml/sudoku/PSystemSudokuFactory.java | 9 +- .../plantuml/swing/AboutWindow.java | 7 +- .../sourceforge/plantuml/tim/TContext.java | 4 + .../plantuml/tim/stdlib/ReverseColor.java | 73 ++++++++++ .../tim/stdlib/ReverseHsluvColor.java | 73 ++++++++++ .../plantuml/timingdiagram/TimingDiagram.java | 5 +- .../timingdiagram/TimingDiagramFactory.java | 6 +- .../timingdiagram/command/CommandAnalog.java | 2 +- .../timingdiagram/command/CommandAtTime.java | 2 +- .../timingdiagram/command/CommandBinary.java | 2 +- .../command/CommandChangeState.java | 2 +- .../timingdiagram/command/CommandClock.java | 2 +- .../command/CommandDefineStateLong.java | 4 +- .../command/CommandDefineStateShort.java | 6 +- .../command/CommandNoteLong.java | 2 +- .../command/CommandPixelHeight.java | 2 +- .../command/CommandRobustConcise.java | 2 +- .../timingdiagram/command/CommandTicks.java | 2 +- .../command/CommandTimeMessage.java | 2 +- .../command/TimeTickBuilder.java | 4 +- .../ugraphic/color/ColorMapperIdentity.java | 3 + .../color/ColorMapperLightnessInverse.java | 2 + .../plantuml/ugraphic/color/ColorUtils.java | 21 +++ .../plantuml/ugraphic/color/HColor.java | 4 + .../ugraphic/color/HColorAbstract.java | 15 +- .../plantuml/ugraphic/color/HColorSimple.java | 10 ++ .../plantuml/utils/StartUtils.java | 4 +- .../plantuml/version/PSystemKeycheck.java | 4 +- .../plantuml/version/PSystemKeygen.java | 4 +- .../plantuml/version/PSystemLicense.java | 9 +- .../version/PSystemLicenseFactory.java | 5 +- .../plantuml/version/PSystemVersion.java | 69 +++++----- .../version/PSystemVersionFactory.java | 33 ++--- .../sourceforge/plantuml/version/Version.java | 4 +- .../sourceforge/plantuml/wbs/WBSDiagram.java | 5 +- .../plantuml/wbs/WBSDiagramFactory.java | 6 +- .../plantuml/wire/WireDiagram.java | 5 +- .../plantuml/wire/WireDiagramFactory.java | 6 +- .../plantuml/yaml/YamlDiagramFactory.java | 7 +- stdlib/logos-abx.repx | Bin 11357 -> 11441 bytes stdlib/logos-dex.repx | Bin 274235 -> 276215 bytes .../plantuml/ugraphic/ImageBuilderTest.java | 8 +- 312 files changed, 1510 insertions(+), 1035 deletions(-) delete mode 100644 src/ext/plantuml/com/at/gadermaier/argon2/Validation.java rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/Argon2.java (85%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/Argon2Factory.java (83%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/Constants.java (97%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/Util.java (97%) create mode 100644 src/net/sourceforge/plantuml/argon2/Validation.java rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/algorithm/FillBlock.java (93%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/algorithm/FillMemory.java (89%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/algorithm/FillSegment.java (92%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/algorithm/Finalize.java (79%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/algorithm/Functions.java (91%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/algorithm/Initialize.java (84%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/blake2/Blake2b.java (99%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/exception/Argon2Exception.java (83%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/exception/Argon2InvalidParameterException.java (84%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/model/Argon2Type.java (79%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/model/Block.java (86%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/model/Instance.java (91%) rename src/{ext/plantuml/com/at/gadermaier => net/sourceforge/plantuml}/argon2/model/Position.java (89%) create mode 100644 src/net/sourceforge/plantuml/creole/command/CommandCreoleCache.java create mode 100644 src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java create mode 100644 src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java diff --git a/pom.xml b/pom.xml index ecdf6469b..b1c6b72ae 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ net.sourceforge.plantuml plantuml - 1.2021.6-SNAPSHOT + 1.2021.8-SNAPSHOT jar PlantUML diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/Validation.java b/src/ext/plantuml/com/at/gadermaier/argon2/Validation.java deleted file mode 100644 index 199bf2415..000000000 --- a/src/ext/plantuml/com/at/gadermaier/argon2/Validation.java +++ /dev/null @@ -1,63 +0,0 @@ -/* This file is taken from - https://github.com/andreas1327250/argon2-java - - Original Author: Andreas Gadermaier - */ -package ext.plantuml.com.at.gadermaier.argon2; - -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MAX_AD_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MAX_ITERATIONS; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MAX_PARALLELISM; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MAX_PWD_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MAX_SALT_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MAX_SECRET_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MIN_ITERATIONS; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MIN_PARALLELISM; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MIN_PWD_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Constraints.MIN_SALT_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.ADDITIONAL_MAX_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.M_MIN_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.PWD_MAX_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.PWD_MIN_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.P_MAX_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.P_MIN_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.SALT_MAX_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.SALT_MIN_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.SECRET_MAX_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.T_MAX_MSG; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Messages.T_MIN_MSG; - -import ext.plantuml.com.at.gadermaier.argon2.exception.Argon2InvalidParameterException; - -class Validation { - - static void validateInput(Argon2 argon2){ - String message = null; - - if (argon2.getLanes() < MIN_PARALLELISM) - message = P_MIN_MSG; - else if (argon2.getLanes() > MAX_PARALLELISM) - message = P_MAX_MSG; - else if(argon2.getMemory() < 2 * argon2.getLanes()) - message = M_MIN_MSG; - else if(argon2.getIterations() < MIN_ITERATIONS) - message = T_MIN_MSG; - else if(argon2.getIterations() > MAX_ITERATIONS) - message = T_MAX_MSG; - else if(argon2.getPasswordLength() < MIN_PWD_LENGTH) - message = PWD_MIN_MSG; - else if(argon2.getPasswordLength() > MAX_PWD_LENGTH) - message = PWD_MAX_MSG; - else if(argon2.getSaltLength() < MIN_SALT_LENGTH) - message = SALT_MIN_MSG; - else if(argon2.getSaltLength() > MAX_SALT_LENGTH) - message = SALT_MAX_MSG; - else if(argon2.getSecretLength() > MAX_SECRET_LENGTH) - message = SECRET_MAX_MSG; - else if(argon2.getAdditionalLength() > MAX_AD_LENGTH) - message = ADDITIONAL_MAX_MSG; - - if(message != null) - throw new Argon2InvalidParameterException(message); - } -} diff --git a/src/net/sourceforge/plantuml/AbstractPSystem.java b/src/net/sourceforge/plantuml/AbstractPSystem.java index fa3b2a93a..6594df671 100644 --- a/src/net/sourceforge/plantuml/AbstractPSystem.java +++ b/src/net/sourceforge/plantuml/AbstractPSystem.java @@ -39,6 +39,7 @@ import static net.sourceforge.plantuml.ugraphic.ImageBuilder.imageBuilder; import java.io.IOException; import java.io.OutputStream; +import java.util.Objects; import net.sourceforge.plantuml.command.BlocLines; import net.sourceforge.plantuml.command.Command; @@ -53,7 +54,6 @@ import net.sourceforge.plantuml.graphic.HorizontalAlignment; import net.sourceforge.plantuml.graphic.VerticalAlignment; import net.sourceforge.plantuml.stats.StatsUtilsIncrement; import net.sourceforge.plantuml.style.ClockwiseTopRightBottomLeft; -import net.sourceforge.plantuml.style.StyleBuilder; import net.sourceforge.plantuml.ugraphic.ImageBuilder; import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; import net.sourceforge.plantuml.version.License; @@ -61,9 +61,13 @@ import net.sourceforge.plantuml.version.Version; public abstract class AbstractPSystem implements Diagram { - private UmlSource source; + private final UmlSource source; private Scale scale; + public AbstractPSystem(UmlSource source) { + this.source = Objects.requireNonNull(source); + } + private String getVersion() { final StringBuilder toAppend = new StringBuilder(); toAppend.append("PlantUML version "); @@ -100,10 +104,6 @@ public abstract class AbstractPSystem implements Diagram { return getSource().seed(); } - final public void setSource(UmlSource source) { - this.source = source; - } - public int getNbImages() { return 1; } diff --git a/src/net/sourceforge/plantuml/NewpagedDiagram.java b/src/net/sourceforge/plantuml/NewpagedDiagram.java index b3f90fcb4..43fdda520 100644 --- a/src/net/sourceforge/plantuml/NewpagedDiagram.java +++ b/src/net/sourceforge/plantuml/NewpagedDiagram.java @@ -47,13 +47,15 @@ import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.Diagram; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class NewpagedDiagram extends AbstractPSystem { private final List diagrams = new ArrayList<>(); - public NewpagedDiagram(AbstractPSystem diag1, AbstractPSystem diag2) { + public NewpagedDiagram(UmlSource source, AbstractPSystem diag1, AbstractPSystem diag2) { + super(source); if (diag1 instanceof NewpagedDiagram) { throw new IllegalArgumentException(); } diff --git a/src/net/sourceforge/plantuml/Option.java b/src/net/sourceforge/plantuml/Option.java index 22d0fd6e1..610b69ac1 100644 --- a/src/net/sourceforge/plantuml/Option.java +++ b/src/net/sourceforge/plantuml/Option.java @@ -72,7 +72,7 @@ public class Option { private OptionPreprocOutputMode preprocessorOutput = null; private boolean failfast = false; private boolean failfast2 = false; - private boolean pattern = false; + private boolean duration = false; private boolean debugsvek = false; private boolean splash = false; @@ -263,8 +263,6 @@ public class Option { pipeMap = true; } else if (s.equalsIgnoreCase("-pipenostderr")) { pipeNoStdErr = true; - } else if (s.equalsIgnoreCase("-pattern")) { - pattern = true; } else if (s.equalsIgnoreCase("-syntax")) { syntax = true; OptionFlags.getInstance().setQuiet(true); @@ -571,10 +569,6 @@ public class Option { return syntax; } - public final boolean isPattern() { - return pattern; - } - public FileFormatOption getFileFormatOption() { if (debugsvek) { fileFormatOption.setDebugSvek(true); diff --git a/src/net/sourceforge/plantuml/OptionPrint.java b/src/net/sourceforge/plantuml/OptionPrint.java index 4fd574622..9fe2e05fa 100644 --- a/src/net/sourceforge/plantuml/OptionPrint.java +++ b/src/net/sourceforge/plantuml/OptionPrint.java @@ -133,7 +133,6 @@ public class OptionPrint { System.out.println(" -checkonly\t\tTo check the syntax of files without generating images"); System.out.println(" -failfast\t\tTo stop processing as soon as a syntax error in diagram occurs"); System.out.println(" -failfast2\t\tTo do a first syntax check before processing files, to fail even faster"); - System.out.println(" -pattern\t\tTo print the list of Regular Expression used by PlantUML"); System.out.println(" -duration\t\tTo print the duration of complete diagrams processing"); System.out.println(" -nbthread N\t\tTo use (N) threads for processing"); System.out.println(" -nbthread auto\tTo use " + Option.defaultNbThreads() + " threads for processing"); diff --git a/src/net/sourceforge/plantuml/PSystemBuilder.java b/src/net/sourceforge/plantuml/PSystemBuilder.java index 5dff1b5b6..6df1bc9ec 100644 --- a/src/net/sourceforge/plantuml/PSystemBuilder.java +++ b/src/net/sourceforge/plantuml/PSystemBuilder.java @@ -126,12 +126,11 @@ public class PSystemBuilder { final DiagramType diagramType = umlSource.getDiagramType(); final List errors = new ArrayList<>(); - final List factories = getAllFactories(skinParam); for (PSystemFactory systemFactory : factories) { if (diagramType != systemFactory.getDiagramType()) { continue; } - final Diagram sys = systemFactory.createSystem(umlSource); + final Diagram sys = systemFactory.createSystem(umlSource, skinParam); if (isOk(sys)) { result = sys; return sys; @@ -151,16 +150,17 @@ public class PSystemBuilder { } } - private static List getAllFactories(ISkinSimple skinParam) { - final List factories = new ArrayList<>(); + private static final List factories = new ArrayList<>(); + + static { factories.add(new PSystemWelcomeFactory()); factories.add(new PSystemColorsFactory()); - factories.add(new SequenceDiagramFactory(skinParam)); - factories.add(new ClassDiagramFactory(skinParam)); - factories.add(new ActivityDiagramFactory(skinParam)); - factories.add(new DescriptionDiagramFactory(skinParam)); - factories.add(new StateDiagramFactory(skinParam)); - factories.add(new ActivityDiagramFactory3(skinParam)); + factories.add(new SequenceDiagramFactory()); + factories.add(new ClassDiagramFactory()); + factories.add(new ActivityDiagramFactory()); + factories.add(new DescriptionDiagramFactory()); + factories.add(new StateDiagramFactory()); + factories.add(new ActivityDiagramFactory3()); // factories.add(new CompositeDiagramFactory(skinParam)); factories.add(new BpmDiagramFactory(DiagramType.BPM)); // factories.add(new PostIdDiagramFactory()); @@ -176,7 +176,8 @@ public class PSystemBuilder { factories.add(new PSystemSaltFactory2(DiagramType.UML)); factories.add(new PSystemDotFactory(DiagramType.DOT)); factories.add(new PSystemDotFactory(DiagramType.UML)); - factories.add(new NwDiagramFactory()); + factories.add(new NwDiagramFactory(DiagramType.NW)); + factories.add(new NwDiagramFactory(DiagramType.UML)); factories.add(new MindMapDiagramFactory()); factories.add(new WBSDiagramFactory()); factories.add(new PSystemDitaaFactory(DiagramType.DITAA)); @@ -188,8 +189,8 @@ public class PSystemBuilder { factories.add(new PSystemSudokuFactory()); } factories.add(new PSystemDefinitionFactory()); - factories.add(new ListSpriteDiagramFactory(skinParam)); - factories.add(new StdlibDiagramFactory(skinParam)); + factories.add(new ListSpriteDiagramFactory()); + factories.add(new StdlibDiagramFactory()); factories.add(new PSystemMathFactory(DiagramType.MATH)); factories.add(new PSystemLatexFactory(DiagramType.LATEX)); // factories.add(new PSystemStatsFactory()); @@ -208,6 +209,7 @@ public class PSystemBuilder { } factories.add(new GanttDiagramFactory(DiagramType.GANTT)); factories.add(new GanttDiagramFactory(DiagramType.UML)); + GanttDiagramFactory.clearCache(); factories.add(new FlowDiagramFactory()); // factories.add(new PSystemTreeFactory(DiagramType.JUNGLE)); // factories.add(new PSystemCuteFactory(DiagramType.CUTE)); @@ -219,7 +221,6 @@ public class PSystemBuilder { factories.add(new GitDiagramFactory()); factories.add(new BoardDiagramFactory()); factories.add(new YamlDiagramFactory()); - return factories; } private boolean isOk(Diagram ps) { diff --git a/src/net/sourceforge/plantuml/PlainDiagram.java b/src/net/sourceforge/plantuml/PlainDiagram.java index 70e4ee686..5bb199b0a 100644 --- a/src/net/sourceforge/plantuml/PlainDiagram.java +++ b/src/net/sourceforge/plantuml/PlainDiagram.java @@ -34,15 +34,20 @@ */ package net.sourceforge.plantuml; -import net.sourceforge.plantuml.core.ImageData; -import net.sourceforge.plantuml.graphic.UDrawable; -import net.sourceforge.plantuml.ugraphic.ImageBuilder; - import java.io.IOException; import java.io.OutputStream; +import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; +import net.sourceforge.plantuml.graphic.UDrawable; +import net.sourceforge.plantuml.ugraphic.ImageBuilder; + // This class doesnt feel like a wonderful idea, just a stepping stone towards something public abstract class PlainDiagram extends AbstractPSystem { + + public PlainDiagram(UmlSource source) { + super(source); + } @Override public ImageBuilder createImageBuilder(FileFormatOption fileFormatOption) throws IOException { diff --git a/src/net/sourceforge/plantuml/PlainStringsDiagram.java b/src/net/sourceforge/plantuml/PlainStringsDiagram.java index 86c91be66..19aaa0013 100644 --- a/src/net/sourceforge/plantuml/PlainStringsDiagram.java +++ b/src/net/sourceforge/plantuml/PlainStringsDiagram.java @@ -34,14 +34,15 @@ */ package net.sourceforge.plantuml; -import net.sourceforge.plantuml.graphic.GraphicPosition; -import net.sourceforge.plantuml.graphic.UDrawable; +import static net.sourceforge.plantuml.graphic.GraphicStrings.createBlackOnWhite; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; -import static net.sourceforge.plantuml.graphic.GraphicStrings.createBlackOnWhite; +import net.sourceforge.plantuml.core.UmlSource; +import net.sourceforge.plantuml.graphic.GraphicPosition; +import net.sourceforge.plantuml.graphic.UDrawable; public abstract class PlainStringsDiagram extends PlainDiagram { @@ -50,6 +51,10 @@ public abstract class PlainStringsDiagram extends PlainDiagram { protected final List strings = new ArrayList<>(); + public PlainStringsDiagram(UmlSource source) { + super(source); + } + @Override public UDrawable getRootDrawable(FileFormatOption fileFormatOption) { return createBlackOnWhite(strings, image, imagePosition); diff --git a/src/net/sourceforge/plantuml/Run.java b/src/net/sourceforge/plantuml/Run.java index 655b665f2..0c638515e 100644 --- a/src/net/sourceforge/plantuml/Run.java +++ b/src/net/sourceforge/plantuml/Run.java @@ -54,13 +54,9 @@ import java.util.concurrent.TimeUnit; import javax.swing.UIManager; -import net.sourceforge.plantuml.activitydiagram.ActivityDiagramFactory; -import net.sourceforge.plantuml.classdiagram.ClassDiagramFactory; import net.sourceforge.plantuml.code.NoPlantumlCompressionException; import net.sourceforge.plantuml.code.Transcoder; import net.sourceforge.plantuml.code.TranscoderUtil; -import net.sourceforge.plantuml.command.PSystemCommandFactory; -import net.sourceforge.plantuml.descdiagram.DescriptionDiagramFactory; import net.sourceforge.plantuml.ftp.FtpServer; import net.sourceforge.plantuml.picoweb.PicoWebServer; import net.sourceforge.plantuml.png.MetadataTag; @@ -68,10 +64,8 @@ import net.sourceforge.plantuml.preproc.Stdlib; import net.sourceforge.plantuml.security.ImageIO; import net.sourceforge.plantuml.security.SFile; import net.sourceforge.plantuml.security.SecurityUtils; -import net.sourceforge.plantuml.sequencediagram.SequenceDiagramFactory; import net.sourceforge.plantuml.sprite.SpriteGrayLevel; import net.sourceforge.plantuml.sprite.SpriteUtils; -import net.sourceforge.plantuml.statediagram.StateDiagramFactory; import net.sourceforge.plantuml.stats.StatsUtils; import net.sourceforge.plantuml.swing.MainWindow2; import net.sourceforge.plantuml.syntax.LanguageDescriptor; @@ -156,9 +150,7 @@ public class Run { } final ErrorStatus error = ErrorStatus.init(); boolean forceQuit = false; - if (option.isPattern()) { - managePattern(); - } else if (OptionFlags.getInstance().isGui()) { + if (OptionFlags.getInstance().isGui()) { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception e) { @@ -359,25 +351,6 @@ public class Run { } } - private static void managePattern() { - printPattern(new SequenceDiagramFactory(null)); - printPattern(new ClassDiagramFactory(null)); - printPattern(new ActivityDiagramFactory(null)); - printPattern(new DescriptionDiagramFactory(null)); - // printPattern(new ComponentDiagramFactory()); - printPattern(new StateDiagramFactory(null)); - // printPattern(new ObjectDiagramFactory(null)); - } - - private static void printPattern(PSystemCommandFactory factory) { - System.out.println(); - System.out.println(factory.getClass().getSimpleName().replaceAll("Factory", "")); - final List descriptions = factory.getDescription(); - for (String s : descriptions) { - System.out.println(s); - } - } - private static void managePipe(Option option, ErrorStatus error) throws IOException { final String charset = option.getCharset(); new Pipe(option, System.out, System.in, charset).managePipe(error); diff --git a/src/net/sourceforge/plantuml/SourceStringReader.java b/src/net/sourceforge/plantuml/SourceStringReader.java index 3bdec0246..1871ba28c 100644 --- a/src/net/sourceforge/plantuml/SourceStringReader.java +++ b/src/net/sourceforge/plantuml/SourceStringReader.java @@ -35,6 +35,8 @@ */ package net.sourceforge.plantuml; +import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainImageBuilder; + import java.io.IOException; import java.io.OutputStream; import java.io.StringReader; @@ -50,8 +52,6 @@ import net.sourceforge.plantuml.preproc.Defines; import net.sourceforge.plantuml.security.SFile; import net.sourceforge.plantuml.svek.TextBlockBackcolored; -import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainImageBuilder; - public class SourceStringReader { final private List blocks; diff --git a/src/net/sourceforge/plantuml/StringUtils.java b/src/net/sourceforge/plantuml/StringUtils.java index 59967bec2..4db4f0331 100644 --- a/src/net/sourceforge/plantuml/StringUtils.java +++ b/src/net/sourceforge/plantuml/StringUtils.java @@ -420,13 +420,8 @@ public class StringUtils { public static List splitComma(String s) { s = trin(s); - // if - // (s.matches("([\\p{L}0-9_.]+|[%g][^%g]+[%g])(\\s*,\\s*([\\p{L}0-9_.]+|[%g][^%g]+[%g]))*") - // == false) { - // throw new IllegalArgumentException(); - // } final List result = new ArrayList<>(); - final Pattern2 p = MyPattern.cmpile("([\\p{L}0-9_.]+|[%g][^%g]+[%g])"); + final Pattern2 p = MyPattern.cmpile("([%pLN_.]+|[%g][^%g]+[%g])"); final Matcher2 m = p.matcher(s); while (m.find()) { result.add(eventuallyRemoveStartingAndEndingDoubleQuote(m.group(0))); diff --git a/src/net/sourceforge/plantuml/TitledDiagram.java b/src/net/sourceforge/plantuml/TitledDiagram.java index 48a43b642..e82ade424 100644 --- a/src/net/sourceforge/plantuml/TitledDiagram.java +++ b/src/net/sourceforge/plantuml/TitledDiagram.java @@ -41,6 +41,7 @@ import net.sourceforge.plantuml.anim.Animation; import net.sourceforge.plantuml.anim.AnimationDecoder; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.Diagram; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.DisplayPositionned; import net.sourceforge.plantuml.cucadiagram.DisplaySection; @@ -81,7 +82,8 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram, return pragma; } - public TitledDiagram(UmlDiagramType type) { + public TitledDiagram(UmlSource source, UmlDiagramType type) { + super(source); this.type = type; this.skinParam = SkinParam.create(type); } @@ -90,8 +92,8 @@ public abstract class TitledDiagram extends AbstractPSystem implements Diagram, return skinParam.getCurrentStyleBuilder(); } - public TitledDiagram(UmlDiagramType type, ISkinSimple orig) { - this(type); + public TitledDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) { + this(source, type); if (orig != null) { this.skinParam.copyAllFrom(orig); } diff --git a/src/net/sourceforge/plantuml/UmlDiagram.java b/src/net/sourceforge/plantuml/UmlDiagram.java index b71f8f4ba..879c99641 100644 --- a/src/net/sourceforge/plantuml/UmlDiagram.java +++ b/src/net/sourceforge/plantuml/UmlDiagram.java @@ -35,6 +35,8 @@ */ package net.sourceforge.plantuml; +import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainImageBuilder; + import java.awt.Color; import java.awt.geom.AffineTransform; import java.awt.geom.Dimension2D; @@ -79,8 +81,6 @@ import net.sourceforge.plantuml.ugraphic.UImage; import net.sourceforge.plantuml.ugraphic.UTranslate; import net.sourceforge.plantuml.version.Version; -import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainImageBuilder; - public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annotated, WithSprite { private boolean rotation; @@ -88,12 +88,12 @@ public abstract class UmlDiagram extends TitledDiagram implements Diagram, Annot private int minwidth = Integer.MAX_VALUE; - public UmlDiagram(UmlDiagramType type) { - super(type); + public UmlDiagram(UmlSource source, UmlDiagramType type) { + super(source, type); } - public UmlDiagram(UmlDiagramType type, ISkinSimple orig) { - super(type, orig); + public UmlDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) { + super(source, type, orig); } final public int getMinwidth() { diff --git a/src/net/sourceforge/plantuml/UrlBuilder.java b/src/net/sourceforge/plantuml/UrlBuilder.java index 2bafb0ca2..a12460f06 100644 --- a/src/net/sourceforge/plantuml/UrlBuilder.java +++ b/src/net/sourceforge/plantuml/UrlBuilder.java @@ -62,12 +62,12 @@ public class UrlBuilder { + "[%s]*\\]\\]"; private static final String S_LINK_TOOLTIP_NOLABEL = "\\[\\[[%s]*" + // - "([^\\s%g{}]+?)" + // Link + "([^\\s%g{}\\[\\]]+?)" + // Link "[%s]*\\{(.+)\\}" + // Tooltip "[%s]*\\]\\]"; private static final String S_LINK_WITH_OPTIONAL_TOOLTIP_WITH_OPTIONAL_LABEL = "\\[\\[[%s]*" + // - "([^%s%g]+?)" + // Link + "([^%s%g\\[\\]]+?)" + // Link "(?:[%s]*\\{([^{}]*)\\})?" + // Optional tooltip "(?:[%s]([^%s\\{\\}\\[\\]][^\\[\\]]*))?" + // Optional label "[%s]*\\]\\]"; diff --git a/src/net/sourceforge/plantuml/acearth/PSystemXearth.java b/src/net/sourceforge/plantuml/acearth/PSystemXearth.java index abc2a244c..8c62f4027 100644 --- a/src/net/sourceforge/plantuml/acearth/PSystemXearth.java +++ b/src/net/sourceforge/plantuml/acearth/PSystemXearth.java @@ -55,6 +55,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemXearth extends AbstractPSystem { @@ -70,7 +71,8 @@ public class PSystemXearth extends AbstractPSystem { "terminatorDiscontinuity", "gridDivision", "gridPixelDivision", "bigStars"); final private Collection booleans = Arrays.asList("shadeP", "gridP", "starsP"); - public PSystemXearth(int width, int height, Map config, List markers) { + public PSystemXearth(UmlSource source, int width, int height, Map config, List markers) { + super(source); this.width = width; this.height = height; this.config = config; diff --git a/src/net/sourceforge/plantuml/acearth/PSystemXearthFactory.java b/src/net/sourceforge/plantuml/acearth/PSystemXearthFactory.java index accf2b9e3..a8956db7b 100644 --- a/src/net/sourceforge/plantuml/acearth/PSystemXearthFactory.java +++ b/src/net/sourceforge/plantuml/acearth/PSystemXearthFactory.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.command.regex.Matcher2; import net.sourceforge.plantuml.command.regex.MyPattern; import net.sourceforge.plantuml.command.regex.Pattern2; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemXearthFactory extends PSystemBasicFactory { @@ -53,7 +54,8 @@ public class PSystemXearthFactory extends PSystemBasicFactory { private int width; private int height; - public PSystemXearth init(String startLine) { + @Override + public PSystemXearth initDiagram(UmlSource source, String startLine) { this.width = 512; this.height = 512; this.config.clear(); @@ -72,10 +74,10 @@ public class PSystemXearthFactory extends PSystemBasicFactory { } @Override - public PSystemXearth executeLine(PSystemXearth system, String line) { + public PSystemXearth executeLine(UmlSource source, PSystemXearth system, String line) { if (system == null && line.startsWith("xearth")) { extractDimension(line); - system = new PSystemXearth(width, height, config, markers); + system = new PSystemXearth(source, width, height, config, markers); return system; } if (system == null) { diff --git a/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java b/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java index 899918b37..2b4e11c2a 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java +++ b/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagram.java @@ -43,6 +43,7 @@ import net.sourceforge.plantuml.Direction; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.CucaDiagram; import net.sourceforge.plantuml.cucadiagram.Display; @@ -61,8 +62,8 @@ public class ActivityDiagram extends CucaDiagram { private IEntity lastEntityBrancheConsulted; private ConditionalContext currentContext; - public ActivityDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.ACTIVITY, skinParam); + public ActivityDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.ACTIVITY, skinParam); setNamespaceSeparator(null); } diff --git a/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagramFactory.java b/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagramFactory.java index b6a602a1f..e8ef2d5e6 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagramFactory.java +++ b/src/net/sourceforge/plantuml/activitydiagram/ActivityDiagramFactory.java @@ -53,19 +53,13 @@ import net.sourceforge.plantuml.command.CommandRankDir; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.command.note.CommandFactoryNoteActivity; import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnLink; +import net.sourceforge.plantuml.core.UmlSource; public class ActivityDiagramFactory extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public ActivityDiagramFactory(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - - @Override - public ActivityDiagram createEmptyDiagram() { - return new ActivityDiagram(skinParam); + public ActivityDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new ActivityDiagram(source, skinParam); } @Override diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandIf.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandIf.java index bc6d22dce..509b6f527 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandIf.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandIf.java @@ -66,9 +66,9 @@ public class CommandIf extends SingleLineCommand2 { new RegexOptional(// new RegexOr("FIRST", // new RegexLeaf("STAR", "(\\(\\*(top)?\\))"), // - new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), // - new RegexLeaf("BAR", "(?:==+)[%s]*([\\p{L}0-9_.]+)[%s]*(?:==+)"), // - new RegexLeaf("QUOTED", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([\\p{L}0-9_.]+))?"))), // + new RegexLeaf("CODE", "([%pLN_.]+)"), // + new RegexLeaf("BAR", "(?:==+)[%s]*([%pLN_.]+)[%s]*(?:==+)"), // + new RegexLeaf("QUOTED", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([%pLN_.]+))?"))), // RegexLeaf.spaceZeroOrMore(), // //new RegexOptional(new RegexLeaf("ARROW", "([=-]+(?:(left|right|up|down|le?|ri?|up?|do?)(?=[-=.]))?[=-]*\\>)")), // new RegexOptional(new RegexConcat( // @@ -83,7 +83,7 @@ public class CommandIf extends SingleLineCommand2 { new RegexOptional(new RegexLeaf("BRACKET", "\\[([^\\]*]+[^\\]]*)\\]")), // RegexLeaf.spaceZeroOrMore(), // new RegexOr(// - new RegexLeaf("IF1", "if[%s]*[%g]([^%g]*)[%g][%s]*(?:as[%s]+([\\p{L}0-9_.]+)[%s]+)?"), // + new RegexLeaf("IF1", "if[%s]*[%g]([^%g]*)[%g][%s]*(?:as[%s]+([%pLN_.]+)[%s]+)?"), // new RegexLeaf("IF2", "if[%s]+(.+?)")), // RegexLeaf.spaceZeroOrMore(), // new RegexOptional(new RegexLeaf("then")), // diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java index 3b1a4c148..0ec71fd60 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkActivity.java @@ -80,9 +80,9 @@ public class CommandLinkActivity extends SingleLineCommand2 { new RegexOptional(// new RegexOr("FIRST", // new RegexLeaf("STAR", "(\\(\\*(top)?\\))"), // - new RegexLeaf("CODE", "([\\p{L}0-9][\\p{L}0-9_.]*)"), // - new RegexLeaf("BAR", "(?:==+)[%s]*([\\p{L}0-9_.]+)[%s]*(?:==+)"), // - new RegexLeaf("QUOTED", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([\\p{L}0-9_.]+))?"))), // + new RegexLeaf("CODE", "([%pLN][%pLN_.]*)"), // + new RegexLeaf("BAR", "(?:==+)[%s]*([%pLN_.]+)[%s]*(?:==+)"), // + new RegexLeaf("QUOTED", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([%pLN_.]+))?"))), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // @@ -103,9 +103,9 @@ public class CommandLinkActivity extends SingleLineCommand2 { new RegexOr("FIRST2", // new RegexLeaf("STAR2", "(\\(\\*(top|\\d+)?\\))"), // new RegexLeaf("OPENBRACKET2", "(\\{)"), // - new RegexLeaf("CODE2", "([\\p{L}0-9][\\p{L}0-9_.]*)"), // - new RegexLeaf("BAR2", "(?:==+)[%s]*([\\p{L}0-9_.]+)[%s]*(?:==+)"), // - new RegexLeaf("QUOTED2", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([\\p{L}0-9][\\p{L}0-9_.]*))?"), // + new RegexLeaf("CODE2", "([%pLN][%pLN_.]*)"), // + new RegexLeaf("BAR2", "(?:==+)[%s]*([%pLN_.]+)[%s]*(?:==+)"), // + new RegexLeaf("QUOTED2", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([%pLN][%pLN_.]*))?"), // new RegexLeaf("QUOTED_INVISIBLE2", "(\\w.*?)")), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE2", "(\\<\\<.*\\>\\>)?"), // diff --git a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java index ff3c96c37..335eb8cf6 100644 --- a/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java +++ b/src/net/sourceforge/plantuml/activitydiagram/command/CommandLinkLongActivity.java @@ -80,7 +80,7 @@ public class CommandLinkLongActivity extends CommandMultilines2 @Override public String getPatternEnd() { - return "(?i)^[%s]*([^%g]*)[%g](?:[%s]+as[%s]+([\\p{L}0-9][\\p{L}0-9_.]*))?[%s]*(\\<\\<.*\\>\\>)?[%s]*(?:in[%s]+([%g][^%g]+[%g]|\\S+))?[%s]*(#\\w+)?$"; + return "^[%s]*([^%g]*)[%g](?:[%s]+as[%s]+([%pLN][%pLN_.]*))?[%s]*(\\<\\<.*\\>\\>)?[%s]*(?:in[%s]+([%g][^%g]+[%g]|\\S+))?[%s]*(#\\w+)?$"; } static IRegex getRegexConcat() { @@ -88,9 +88,9 @@ public class CommandLinkLongActivity extends CommandMultilines2 new RegexOptional(// new RegexOr("FIRST", // new RegexLeaf("STAR", "(\\(\\*(top)?\\))"), // - new RegexLeaf("CODE", "([\\p{L}0-9][\\p{L}0-9_.]*)"), // - new RegexLeaf("BAR", "(?:==+)[%s]*([\\p{L}0-9_.]+)[%s]*(?:==+)"), // - new RegexLeaf("QUOTED", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([\\p{L}0-9_.]+))?"))), // + new RegexLeaf("CODE", "([%pLN][%pLN_.]*)"), // + new RegexLeaf("BAR", "(?:==+)[%s]*([%pLN_.]+)[%s]*(?:==+)"), // + new RegexLeaf("QUOTED", "[%g]([^%g]+)[%g](?:[%s]+as[%s]+([%pLN_.]+))?"))), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java b/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java index 0fa7c20f5..a8a25e86e 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagram3.java @@ -49,6 +49,7 @@ import net.sourceforge.plantuml.activitydiagram3.ftile.Swimlanes; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.Stereotype; import net.sourceforge.plantuml.graphic.Rainbow; @@ -73,8 +74,8 @@ public class ActivityDiagram3 extends UmlDiagram { private final Swimlanes swinlanes = new Swimlanes(getSkinParam(), getPragma()); - public ActivityDiagram3(ISkinSimple skinParam) { - super(UmlDiagramType.ACTIVITY, skinParam); + public ActivityDiagram3(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.ACTIVITY, skinParam); } private void manageSwimlaneStrategy() { diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagramFactory3.java b/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagramFactory3.java index b75839efc..6e862b013 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagramFactory3.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ActivityDiagramFactory3.java @@ -87,15 +87,10 @@ import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.CommandDecoratorMultine; import net.sourceforge.plantuml.command.CommandFootboxIgnored; import net.sourceforge.plantuml.command.PSystemCommandFactory; +import net.sourceforge.plantuml.core.UmlSource; public class ActivityDiagramFactory3 extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public ActivityDiagramFactory3(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - @Override protected List createCommands() { @@ -163,8 +158,8 @@ public class ActivityDiagramFactory3 extends PSystemCommandFactory { } @Override - public ActivityDiagram3 createEmptyDiagram() { - return new ActivityDiagram3(skinParam); + public ActivityDiagram3 createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new ActivityDiagram3(source, skinParam); } } diff --git a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandGoto.java b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandGoto.java index fe27174ac..8337d7bdb 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandGoto.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandGoto.java @@ -54,7 +54,7 @@ public class CommandGoto extends SingleLineCommand2 { return RegexConcat.build(CommandGoto.class.getName(), RegexLeaf.start(), // new RegexLeaf("goto"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("NAME", "([%pLN_.]+)"), // new RegexLeaf(";?"), // RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandLabel.java b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandLabel.java index a26b5d038..078dfa0f2 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandLabel.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandLabel.java @@ -54,7 +54,7 @@ public class CommandLabel extends SingleLineCommand2 { return RegexConcat.build(CommandLabel.class.getName(), RegexLeaf.start(), // new RegexLeaf("label"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("NAME", "([%pLN_.]+)"), // new RegexLeaf(";?"), // RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandNoteLong3.java b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandNoteLong3.java index 0ec1f5a0a..daf1df9a5 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandNoteLong3.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandNoteLong3.java @@ -64,7 +64,7 @@ public class CommandNoteLong3 extends CommandMultilines2 { @Override public String getPatternEnd() { - return "(?i)^end[%s]?note$"; + return "^end[%s]?note$"; } @Override diff --git a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandRepeatWhile3Multilines.java b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandRepeatWhile3Multilines.java index 57a1d80d4..a032269ae 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/command/CommandRepeatWhile3Multilines.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/command/CommandRepeatWhile3Multilines.java @@ -88,7 +88,9 @@ public class CommandRepeatWhile3Multilines extends CommandMultilines3 splitted = testDisplay.splitMultiline(MyPattern.cmpile("\\)[%s]*(is|equals?)[%s]*\\(", - Pattern.CASE_INSENSITIVE)); + final List splitted = testDisplay + .splitMultiline(MyPattern.cmpile("\\)[%s]*(is|equals?)[%s]*\\(")); if (splitted.size() == 2) { testDisplay = splitted.get(0); yes = splitted.get(1); diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileUtils.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileUtils.java index db65cadcd..c8eabfa72 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileUtils.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileUtils.java @@ -44,6 +44,9 @@ public class FtileUtils { } public static Ftile addConnection(Ftile ftile, Collection connections) { + if (connections.size() == 0) { + return ftile; + } return new FtileWithConnection(ftile, connections); } diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileWithConnection.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileWithConnection.java index 410e7c11d..b5dbd6d8b 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileWithConnection.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/FtileWithConnection.java @@ -51,7 +51,7 @@ class FtileWithConnection extends FtileDecorate { FtileWithConnection(Ftile ftile, Collection connections) { super(ftile); - if (connections == null || connections.size() == 0) { + if (Objects.requireNonNull(connections).size() == 0) { throw new IllegalArgumentException(); } this.connections.addAll(connections); diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileFactoryDelegatorSwitch.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileFactoryDelegatorSwitch.java index cfa6f409c..a116a28ed 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileFactoryDelegatorSwitch.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/FtileFactoryDelegatorSwitch.java @@ -108,7 +108,7 @@ public class FtileFactoryDelegatorSwitch extends FtileFactoryDelegator { } final FtileSwitchWithManyLinks result = new FtileSwitchWithManyLinks(ftiles, branches, swimlane, diamond1, diamond2, getStringBounder(), arrowColor); - return result.addLinks(); + return result.addLinks(getStringBounder()); } diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderFork.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderFork.java index 13e69899e..597bcbf3b 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderFork.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderFork.java @@ -208,7 +208,9 @@ public class ParallelBuilderFork extends AbstractParallelFtilesBuilder { def = Rainbow.build(skinParam()); } final Rainbow rainbow = tmp.getOutLinkRendering().getRainbow(def); - conns.add(new ConnectionOut(tmp, out, x, rainbow, getJustBeforeBar2(middle, getStringBounder()))); + if (tmp.calculateDimension(getStringBounder()).hasPointOut()) { + conns.add(new ConnectionOut(tmp, out, x, rainbow, getJustBeforeBar2(middle, getStringBounder()))); + } x += dim.getWidth(); } result = FtileUtils.addConnection(result, conns); diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderMerge.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderMerge.java index d3406eae7..230710e90 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderMerge.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderMerge.java @@ -106,7 +106,7 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder { result = new FtileAssemblySimple(result, out); final List conns = new ArrayList<>(); final UTranslate diamondTranslate = result.getTranslateFor(out, getStringBounder()); - int i = 0; + double x = 0; for (Ftile tmp : list99) { final Dimension2D dim = tmp.calculateDimension(getStringBounder()); @@ -119,9 +119,11 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder { def = Rainbow.build(skinParam()); } final Rainbow rainbow = tmp.getOutLinkRendering().getRainbow(def); - conns.add(new ConnectionHorizontalThenVertical(tmp, out, rainbow, translate0, diamondTranslate, i)); + if (tmp.calculateDimension(getStringBounder()).hasPointOut()) { + conns.add(new ConnectionHorizontalThenVertical(tmp, out, rainbow, translate0, diamondTranslate)); + } x += dim.getWidth(); - i++; + } return FtileUtils.addConnection(result, conns); } @@ -131,31 +133,32 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder { private final Rainbow arrowColor; private final UTranslate diamondTranslate; private final UTranslate translate0; - private final int counter; public ConnectionHorizontalThenVertical(Ftile tile, Ftile diamond, Rainbow arrowColor, UTranslate translate0, - UTranslate diamondTranslate, int counter) { + UTranslate diamondTranslate) { super(tile, diamond); this.arrowColor = arrowColor; this.diamondTranslate = diamondTranslate; this.translate0 = translate0; - this.counter = counter; } public void drawU(UGraphic ug) { final StringBounder stringBounder = ug.getStringBounder(); final Point2D p1 = getP1(stringBounder); - final Point2D p2 = getP2(stringBounder); + final Point2D p2 = getP2(stringBounder, p1.getX()); final double x1 = p1.getX(); final double y1 = p1.getY(); final double x2 = p2.getX(); final double y2 = p2.getY(); - UPolygon endDecoration = null; - if (counter == 0) { + final UTranslate arrival = arrivalOnDiamond(stringBounder, p1.getX()); + final UPolygon endDecoration; + if (arrival.getDx() < 0) { endDecoration = Arrows.asToRight(); - } else if (counter == 1) { + } else if (arrival.getDx() > 0) { endDecoration = Arrows.asToLeft(); + } else { + endDecoration = Arrows.asToDown(); } final Snake snake = Snake.create(arrowColor, endDecoration); snake.addPoint(x1, y1); @@ -169,17 +172,30 @@ public class ParallelBuilderMerge extends AbstractParallelFtilesBuilder { return translate0.getTranslated(getFtile1().calculateDimension(stringBounder).getPointOut()); } - private Point2D getP2(final StringBounder stringBounder) { - final Point2D result = diamondTranslate - .getTranslated(getFtile2().calculateDimension(stringBounder).getPointOut()); + private Point2D getP2(StringBounder stringBounder, double startX) { + final UTranslate arrival = arrivalOnDiamond(stringBounder, startX); + return arrival.getTranslated(getDiamondOut(stringBounder)); + } + + public Point2D getDiamondOut(StringBounder stringBounder) { + return diamondTranslate.getTranslated(getFtile2().calculateDimension(stringBounder).getPointOut()); + } + + public UTranslate arrivalOnDiamond(StringBounder stringBounder, double startX) { + final Point2D result = getDiamondOut(stringBounder); final Dimension2D dim = getFtile2().calculateDimension(stringBounder); - UTranslate arrival = new UTranslate(); - if (counter == 0) { + final double a = result.getX() - dim.getWidth() / 2; + final double b = result.getX() + dim.getWidth() / 2; + + final UTranslate arrival; + if (startX < a) { arrival = new UTranslate(-dim.getWidth() / 2, -dim.getHeight() / 2); - } else if (counter == 1) { + } else if (startX > b) { arrival = new UTranslate(dim.getWidth() / 2, -dim.getHeight() / 2); + } else { + arrival = new UTranslate(0, -dim.getHeight()); } - return arrival.getTranslated(result); + return arrival; } } diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderSplit.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderSplit.java index b87d29136..4578c1cd2 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderSplit.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/ParallelBuilderSplit.java @@ -195,7 +195,9 @@ public class ParallelBuilderSplit extends AbstractParallelFtilesBuilder { rainbow = outLinkRendering.getRainbow(Rainbow.build(skinParam())); } - conns.add(new ConnectionOut(translate0, tmp, out, x, rainbow, getHeightOfMiddle(inner))); + if (tmp.calculateDimension(getStringBounder()).hasPointOut()) { + conns.add(new ConnectionOut(translate0, tmp, out, x, rainbow, getHeightOfMiddle(inner))); + } x += dim.getWidth(); } if (last < geom.getLeft()) { diff --git a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileSwitchWithManyLinks.java b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileSwitchWithManyLinks.java index 247ed95ac..e0e9c31e6 100644 --- a/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileSwitchWithManyLinks.java +++ b/src/net/sourceforge/plantuml/activitydiagram3/ftile/vcompact/cond/FtileSwitchWithManyLinks.java @@ -191,8 +191,8 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds { final double x2 = p2.getX(); final double y2 = p2.getY(); - final Snake snake = Snake.create(null, arrowColor, Arrows.asToDown()) - .withLabel(getLabelPositive(branch), VerticalAlignment.BOTTOM); + final Snake snake = Snake.create(null, arrowColor, Arrows.asToDown()).withLabel(getLabelPositive(branch), + VerticalAlignment.BOTTOM); if (x2 < p1d.getX() - margin || x2 > p1b.getX() + margin) { snake.addPoint(x2, p1d.getY()); snake.addPoint(x2, y2); @@ -274,15 +274,18 @@ public class FtileSwitchWithManyLinks extends FtileSwitchWithDiamonds { return max + 10; } - public Ftile addLinks() { + public Ftile addLinks(StringBounder stringBounder) { final List conns = new ArrayList<>(); conns.add(new ConnectionHorizontalThenVertical(tiles.get(0), branches.get(0))); conns.add(new ConnectionHorizontalThenVertical(tiles.get(tiles.size() - 1), branches.get(tiles.size() - 1))); conns.add(new ConnectionVerticalThenHorizontal(tiles.get(0))); conns.add(new ConnectionVerticalThenHorizontal(tiles.get(tiles.size() - 1))); for (int i = 1; i < tiles.size() - 1; i++) { - conns.add(new ConnectionVerticalTop(tiles.get(i), branches.get(i))); - conns.add(new ConnectionVerticalBottom(tiles.get(i))); + final Ftile tile = tiles.get(i); + conns.add(new ConnectionVerticalTop(tile, branches.get(i))); + if (tile.calculateDimension(stringBounder).hasPointOut()) { + conns.add(new ConnectionVerticalBottom(tile)); + } } return FtileUtils.addConnection(this, conns); diff --git a/src/net/sourceforge/plantuml/api/PSystemFactory.java b/src/net/sourceforge/plantuml/api/PSystemFactory.java index 28d3d2efd..054ed1974 100644 --- a/src/net/sourceforge/plantuml/api/PSystemFactory.java +++ b/src/net/sourceforge/plantuml/api/PSystemFactory.java @@ -35,13 +35,14 @@ */ package net.sourceforge.plantuml.api; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.core.Diagram; import net.sourceforge.plantuml.core.DiagramType; import net.sourceforge.plantuml.core.UmlSource; public interface PSystemFactory { - Diagram createSystem(UmlSource source); + Diagram createSystem(UmlSource source, ISkinSimple skinParam); DiagramType getDiagramType(); diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/Argon2.java b/src/net/sourceforge/plantuml/argon2/Argon2.java similarity index 85% rename from src/ext/plantuml/com/at/gadermaier/argon2/Argon2.java rename to src/net/sourceforge/plantuml/argon2/Argon2.java index b4110ed28..be2ec9f5f 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/Argon2.java +++ b/src/net/sourceforge/plantuml/argon2/Argon2.java @@ -3,25 +3,25 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2; +package net.sourceforge.plantuml.argon2; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Defaults.LANES_DEF; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Defaults.LOG_M_COST_DEF; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Defaults.OUTLEN_DEF; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Defaults.TYPE_DEF; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Defaults.T_COST_DEF; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.Defaults.VERSION_DEF; +import static net.sourceforge.plantuml.argon2.Constants.Defaults.LANES_DEF; +import static net.sourceforge.plantuml.argon2.Constants.Defaults.LOG_M_COST_DEF; +import static net.sourceforge.plantuml.argon2.Constants.Defaults.OUTLEN_DEF; +import static net.sourceforge.plantuml.argon2.Constants.Defaults.TYPE_DEF; +import static net.sourceforge.plantuml.argon2.Constants.Defaults.T_COST_DEF; +import static net.sourceforge.plantuml.argon2.Constants.Defaults.VERSION_DEF; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.util.Arrays; -import ext.plantuml.com.at.gadermaier.argon2.algorithm.FillMemory; -import ext.plantuml.com.at.gadermaier.argon2.algorithm.Finalize; -import ext.plantuml.com.at.gadermaier.argon2.algorithm.Initialize; -import ext.plantuml.com.at.gadermaier.argon2.model.Argon2Type; -import ext.plantuml.com.at.gadermaier.argon2.model.Instance; +import net.sourceforge.plantuml.argon2.algorithm.FillMemory; +import net.sourceforge.plantuml.argon2.algorithm.Finalize; +import net.sourceforge.plantuml.argon2.algorithm.Initialize; +import net.sourceforge.plantuml.argon2.model.Argon2Type; +import net.sourceforge.plantuml.argon2.model.Instance; public class Argon2 { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/Argon2Factory.java b/src/net/sourceforge/plantuml/argon2/Argon2Factory.java similarity index 83% rename from src/ext/plantuml/com/at/gadermaier/argon2/Argon2Factory.java rename to src/net/sourceforge/plantuml/argon2/Argon2Factory.java index 35ee5aa84..085fe2ada 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/Argon2Factory.java +++ b/src/net/sourceforge/plantuml/argon2/Argon2Factory.java @@ -3,7 +3,7 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2; +package net.sourceforge.plantuml.argon2; public class Argon2Factory { public static Argon2 create(){ diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/Constants.java b/src/net/sourceforge/plantuml/argon2/Constants.java similarity index 97% rename from src/ext/plantuml/com/at/gadermaier/argon2/Constants.java rename to src/net/sourceforge/plantuml/argon2/Constants.java index 55feec121..f24166ee0 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/Constants.java +++ b/src/net/sourceforge/plantuml/argon2/Constants.java @@ -3,9 +3,9 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2; +package net.sourceforge.plantuml.argon2; -import ext.plantuml.com.at.gadermaier.argon2.model.Argon2Type; +import net.sourceforge.plantuml.argon2.model.Argon2Type; public class Constants { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/Util.java b/src/net/sourceforge/plantuml/argon2/Util.java similarity index 97% rename from src/ext/plantuml/com/at/gadermaier/argon2/Util.java rename to src/net/sourceforge/plantuml/argon2/Util.java index 257c0338c..fb493465b 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/Util.java +++ b/src/net/sourceforge/plantuml/argon2/Util.java @@ -3,7 +3,7 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2; +package net.sourceforge.plantuml.argon2; public class Util { diff --git a/src/net/sourceforge/plantuml/argon2/Validation.java b/src/net/sourceforge/plantuml/argon2/Validation.java new file mode 100644 index 000000000..547679c04 --- /dev/null +++ b/src/net/sourceforge/plantuml/argon2/Validation.java @@ -0,0 +1,63 @@ +/* This file is taken from + https://github.com/andreas1327250/argon2-java + + Original Author: Andreas Gadermaier + */ +package net.sourceforge.plantuml.argon2; + +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MAX_AD_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MAX_ITERATIONS; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MAX_PARALLELISM; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MAX_PWD_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MAX_SALT_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MAX_SECRET_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MIN_ITERATIONS; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MIN_PARALLELISM; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MIN_PWD_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.Constraints.MIN_SALT_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.Messages.ADDITIONAL_MAX_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.M_MIN_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.PWD_MAX_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.PWD_MIN_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.P_MAX_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.P_MIN_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.SALT_MAX_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.SALT_MIN_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.SECRET_MAX_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.T_MAX_MSG; +import static net.sourceforge.plantuml.argon2.Constants.Messages.T_MIN_MSG; + +import net.sourceforge.plantuml.argon2.exception.Argon2InvalidParameterException; + +class Validation { + + static void validateInput(Argon2 argon2){ + String message = null; + + if (argon2.getLanes() < MIN_PARALLELISM) + message = P_MIN_MSG; + else if (argon2.getLanes() > MAX_PARALLELISM) + message = P_MAX_MSG; + else if(argon2.getMemory() < 2 * argon2.getLanes()) + message = M_MIN_MSG; + else if(argon2.getIterations() < MIN_ITERATIONS) + message = T_MIN_MSG; + else if(argon2.getIterations() > MAX_ITERATIONS) + message = T_MAX_MSG; + else if(argon2.getPasswordLength() < MIN_PWD_LENGTH) + message = PWD_MIN_MSG; + else if(argon2.getPasswordLength() > MAX_PWD_LENGTH) + message = PWD_MAX_MSG; + else if(argon2.getSaltLength() < MIN_SALT_LENGTH) + message = SALT_MIN_MSG; + else if(argon2.getSaltLength() > MAX_SALT_LENGTH) + message = SALT_MAX_MSG; + else if(argon2.getSecretLength() > MAX_SECRET_LENGTH) + message = SECRET_MAX_MSG; + else if(argon2.getAdditionalLength() > MAX_AD_LENGTH) + message = ADDITIONAL_MAX_MSG; + + if(message != null) + throw new Argon2InvalidParameterException(message); + } +} diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillBlock.java b/src/net/sourceforge/plantuml/argon2/algorithm/FillBlock.java similarity index 93% rename from src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillBlock.java rename to src/net/sourceforge/plantuml/argon2/algorithm/FillBlock.java index a3024a9f0..446222a56 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillBlock.java +++ b/src/net/sourceforge/plantuml/argon2/algorithm/FillBlock.java @@ -3,9 +3,9 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.algorithm; +package net.sourceforge.plantuml.argon2.algorithm; -import ext.plantuml.com.at.gadermaier.argon2.model.Block; +import net.sourceforge.plantuml.argon2.model.Block; class FillBlock { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillMemory.java b/src/net/sourceforge/plantuml/argon2/algorithm/FillMemory.java similarity index 89% rename from src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillMemory.java rename to src/net/sourceforge/plantuml/argon2/algorithm/FillMemory.java index 21f92095c..a60114bb7 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillMemory.java +++ b/src/net/sourceforge/plantuml/argon2/algorithm/FillMemory.java @@ -3,9 +3,9 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.algorithm; +package net.sourceforge.plantuml.argon2.algorithm; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_SYNC_POINTS; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_SYNC_POINTS; import java.util.ArrayList; import java.util.List; @@ -14,8 +14,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; -import ext.plantuml.com.at.gadermaier.argon2.model.Instance; -import ext.plantuml.com.at.gadermaier.argon2.model.Position; +import net.sourceforge.plantuml.argon2.model.Instance; +import net.sourceforge.plantuml.argon2.model.Position; public class FillMemory { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillSegment.java b/src/net/sourceforge/plantuml/argon2/algorithm/FillSegment.java similarity index 92% rename from src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillSegment.java rename to src/net/sourceforge/plantuml/argon2/algorithm/FillSegment.java index c11485526..6ef34a633 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/FillSegment.java +++ b/src/net/sourceforge/plantuml/argon2/algorithm/FillSegment.java @@ -3,17 +3,17 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.algorithm; +package net.sourceforge.plantuml.argon2.algorithm; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_ADDRESSES_IN_BLOCK; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_VERSION_10; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_ADDRESSES_IN_BLOCK; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_VERSION_10; -import ext.plantuml.com.at.gadermaier.argon2.Constants; -import ext.plantuml.com.at.gadermaier.argon2.Util; -import ext.plantuml.com.at.gadermaier.argon2.model.Argon2Type; -import ext.plantuml.com.at.gadermaier.argon2.model.Block; -import ext.plantuml.com.at.gadermaier.argon2.model.Instance; -import ext.plantuml.com.at.gadermaier.argon2.model.Position; +import net.sourceforge.plantuml.argon2.Constants; +import net.sourceforge.plantuml.argon2.Util; +import net.sourceforge.plantuml.argon2.model.Argon2Type; +import net.sourceforge.plantuml.argon2.model.Block; +import net.sourceforge.plantuml.argon2.model.Instance; +import net.sourceforge.plantuml.argon2.model.Position; class FillSegment { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Finalize.java b/src/net/sourceforge/plantuml/argon2/algorithm/Finalize.java similarity index 79% rename from src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Finalize.java rename to src/net/sourceforge/plantuml/argon2/algorithm/Finalize.java index af8e6b8a7..60338854e 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Finalize.java +++ b/src/net/sourceforge/plantuml/argon2/algorithm/Finalize.java @@ -3,11 +3,11 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.algorithm; +package net.sourceforge.plantuml.argon2.algorithm; -import ext.plantuml.com.at.gadermaier.argon2.Argon2; -import ext.plantuml.com.at.gadermaier.argon2.model.Block; -import ext.plantuml.com.at.gadermaier.argon2.model.Instance; +import net.sourceforge.plantuml.argon2.Argon2; +import net.sourceforge.plantuml.argon2.model.Block; +import net.sourceforge.plantuml.argon2.model.Instance; public class Finalize { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Functions.java b/src/net/sourceforge/plantuml/argon2/algorithm/Functions.java similarity index 91% rename from src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Functions.java rename to src/net/sourceforge/plantuml/argon2/algorithm/Functions.java index 5b407982a..7f16ddd2e 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Functions.java +++ b/src/net/sourceforge/plantuml/argon2/algorithm/Functions.java @@ -3,15 +3,15 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.algorithm; +package net.sourceforge.plantuml.argon2.algorithm; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_BLOCK_SIZE; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_PREHASH_DIGEST_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_PREHASH_SEED_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_BLOCK_SIZE; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_PREHASH_DIGEST_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_PREHASH_SEED_LENGTH; -import ext.plantuml.com.at.gadermaier.argon2.Util; -import ext.plantuml.com.at.gadermaier.argon2.blake2.Blake2b; -import ext.plantuml.com.at.gadermaier.argon2.model.Block; +import net.sourceforge.plantuml.argon2.Util; +import net.sourceforge.plantuml.argon2.blake2.Blake2b; +import net.sourceforge.plantuml.argon2.model.Block; class Functions { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Initialize.java b/src/net/sourceforge/plantuml/argon2/algorithm/Initialize.java similarity index 84% rename from src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Initialize.java rename to src/net/sourceforge/plantuml/argon2/algorithm/Initialize.java index e7940ccce..756ea3bb6 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/algorithm/Initialize.java +++ b/src/net/sourceforge/plantuml/argon2/algorithm/Initialize.java @@ -3,15 +3,15 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.algorithm; +package net.sourceforge.plantuml.argon2.algorithm; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_BLOCK_SIZE; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_PREHASH_DIGEST_LENGTH; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_PREHASH_SEED_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_BLOCK_SIZE; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_PREHASH_DIGEST_LENGTH; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_PREHASH_SEED_LENGTH; -import ext.plantuml.com.at.gadermaier.argon2.Argon2; -import ext.plantuml.com.at.gadermaier.argon2.Util; -import ext.plantuml.com.at.gadermaier.argon2.model.Instance; +import net.sourceforge.plantuml.argon2.Argon2; +import net.sourceforge.plantuml.argon2.Util; +import net.sourceforge.plantuml.argon2.model.Instance; public class Initialize { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/blake2/Blake2b.java b/src/net/sourceforge/plantuml/argon2/blake2/Blake2b.java similarity index 99% rename from src/ext/plantuml/com/at/gadermaier/argon2/blake2/Blake2b.java rename to src/net/sourceforge/plantuml/argon2/blake2/Blake2b.java index 5a42e8ac8..05c4bc64a 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/blake2/Blake2b.java +++ b/src/net/sourceforge/plantuml/argon2/blake2/Blake2b.java @@ -23,12 +23,11 @@ You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see . */ - -package ext.plantuml.com.at.gadermaier.argon2.blake2; +package net.sourceforge.plantuml.argon2.blake2; -import static ext.plantuml.com.at.gadermaier.argon2.blake2.Blake2b.Engine.Assert.*; -import static ext.plantuml.com.at.gadermaier.argon2.blake2.Blake2b.Engine.LittleEndian.*; +import static net.sourceforge.plantuml.argon2.blake2.Blake2b.Engine.Assert.*; +import static net.sourceforge.plantuml.argon2.blake2.Blake2b.Engine.LittleEndian.*; import java.io.PrintStream; import java.security.Key; diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/exception/Argon2Exception.java b/src/net/sourceforge/plantuml/argon2/exception/Argon2Exception.java similarity index 83% rename from src/ext/plantuml/com/at/gadermaier/argon2/exception/Argon2Exception.java rename to src/net/sourceforge/plantuml/argon2/exception/Argon2Exception.java index 6e1b677d5..ff61ba5dc 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/exception/Argon2Exception.java +++ b/src/net/sourceforge/plantuml/argon2/exception/Argon2Exception.java @@ -3,7 +3,7 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.exception; +package net.sourceforge.plantuml.argon2.exception; /* dislike checked exceptions */ class Argon2Exception extends RuntimeException { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/exception/Argon2InvalidParameterException.java b/src/net/sourceforge/plantuml/argon2/exception/Argon2InvalidParameterException.java similarity index 84% rename from src/ext/plantuml/com/at/gadermaier/argon2/exception/Argon2InvalidParameterException.java rename to src/net/sourceforge/plantuml/argon2/exception/Argon2InvalidParameterException.java index 6a6678972..4b7c6bcc3 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/exception/Argon2InvalidParameterException.java +++ b/src/net/sourceforge/plantuml/argon2/exception/Argon2InvalidParameterException.java @@ -3,7 +3,7 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.exception; +package net.sourceforge.plantuml.argon2.exception; public class Argon2InvalidParameterException extends Argon2Exception{ public Argon2InvalidParameterException(String message) { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/model/Argon2Type.java b/src/net/sourceforge/plantuml/argon2/model/Argon2Type.java similarity index 79% rename from src/ext/plantuml/com/at/gadermaier/argon2/model/Argon2Type.java rename to src/net/sourceforge/plantuml/argon2/model/Argon2Type.java index 546051a16..56dedceb2 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/model/Argon2Type.java +++ b/src/net/sourceforge/plantuml/argon2/model/Argon2Type.java @@ -3,7 +3,7 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.model; +package net.sourceforge.plantuml.argon2.model; public enum Argon2Type { Argon2d, Argon2i, Argon2id; diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/model/Block.java b/src/net/sourceforge/plantuml/argon2/model/Block.java similarity index 86% rename from src/ext/plantuml/com/at/gadermaier/argon2/model/Block.java rename to src/net/sourceforge/plantuml/argon2/model/Block.java index a7418dd9d..f3d8baf7f 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/model/Block.java +++ b/src/net/sourceforge/plantuml/argon2/model/Block.java @@ -3,15 +3,15 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.model; +package net.sourceforge.plantuml.argon2.model; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_BLOCK_SIZE; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_QWORDS_IN_BLOCK; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_BLOCK_SIZE; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_QWORDS_IN_BLOCK; import java.util.Arrays; -import ext.plantuml.com.at.gadermaier.argon2.Util; +import net.sourceforge.plantuml.argon2.Util; public class Block { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/model/Instance.java b/src/net/sourceforge/plantuml/argon2/model/Instance.java similarity index 91% rename from src/ext/plantuml/com/at/gadermaier/argon2/model/Instance.java rename to src/net/sourceforge/plantuml/argon2/model/Instance.java index 807654466..7911c71bc 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/model/Instance.java +++ b/src/net/sourceforge/plantuml/argon2/model/Instance.java @@ -3,11 +3,11 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.model; +package net.sourceforge.plantuml.argon2.model; -import static ext.plantuml.com.at.gadermaier.argon2.Constants.ARGON2_SYNC_POINTS; +import static net.sourceforge.plantuml.argon2.Constants.ARGON2_SYNC_POINTS; -import ext.plantuml.com.at.gadermaier.argon2.Argon2; +import net.sourceforge.plantuml.argon2.Argon2; public class Instance { diff --git a/src/ext/plantuml/com/at/gadermaier/argon2/model/Position.java b/src/net/sourceforge/plantuml/argon2/model/Position.java similarity index 89% rename from src/ext/plantuml/com/at/gadermaier/argon2/model/Position.java rename to src/net/sourceforge/plantuml/argon2/model/Position.java index bf052ba3e..94f80228f 100644 --- a/src/ext/plantuml/com/at/gadermaier/argon2/model/Position.java +++ b/src/net/sourceforge/plantuml/argon2/model/Position.java @@ -3,7 +3,7 @@ Original Author: Andreas Gadermaier */ -package ext.plantuml.com.at.gadermaier.argon2.model; +package net.sourceforge.plantuml.argon2.model; public class Position { diff --git a/src/net/sourceforge/plantuml/board/BoardDiagram.java b/src/net/sourceforge/plantuml/board/BoardDiagram.java index 666e5f698..a569b0375 100644 --- a/src/net/sourceforge/plantuml/board/BoardDiagram.java +++ b/src/net/sourceforge/plantuml/board/BoardDiagram.java @@ -49,6 +49,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.svek.TextBlockBackcolored; @@ -68,8 +69,8 @@ public class BoardDiagram extends UmlDiagram { return new DiagramDescription("Board"); } - public BoardDiagram() { - super(UmlDiagramType.BOARD); + public BoardDiagram(UmlSource source) { + super(source, UmlDiagramType.BOARD); } @Override diff --git a/src/net/sourceforge/plantuml/board/BoardDiagramFactory.java b/src/net/sourceforge/plantuml/board/BoardDiagramFactory.java index 4da8b718d..ae808742c 100644 --- a/src/net/sourceforge/plantuml/board/BoardDiagramFactory.java +++ b/src/net/sourceforge/plantuml/board/BoardDiagramFactory.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.board; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class BoardDiagramFactory extends PSystemCommandFactory { @@ -65,8 +67,8 @@ public class BoardDiagramFactory extends PSystemCommandFactory { } @Override - public BoardDiagram createEmptyDiagram() { - return new BoardDiagram(); + public BoardDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new BoardDiagram(source); } } diff --git a/src/net/sourceforge/plantuml/bpm/BpmDiagram.java b/src/net/sourceforge/plantuml/bpm/BpmDiagram.java index f26b12ff6..34f03d0f2 100644 --- a/src/net/sourceforge/plantuml/bpm/BpmDiagram.java +++ b/src/net/sourceforge/plantuml/bpm/BpmDiagram.java @@ -48,6 +48,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.ugraphic.ImageBuilder; @@ -73,8 +74,8 @@ public class BpmDiagram extends UmlDiagram { return new DiagramDescription("(Bpm Diagram)"); } - public BpmDiagram() { - super(UmlDiagramType.BPM); + public BpmDiagram(UmlSource source) { + super(source, UmlDiagramType.BPM); } @Override diff --git a/src/net/sourceforge/plantuml/bpm/BpmDiagramFactory.java b/src/net/sourceforge/plantuml/bpm/BpmDiagramFactory.java index 53c27b640..627cedd3a 100644 --- a/src/net/sourceforge/plantuml/bpm/BpmDiagramFactory.java +++ b/src/net/sourceforge/plantuml/bpm/BpmDiagramFactory.java @@ -39,9 +39,11 @@ import java.util.ArrayList; import java.util.List; import net.sourceforge.plantuml.AbstractPSystem; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class BpmDiagramFactory extends PSystemCommandFactory { @@ -63,8 +65,8 @@ public class BpmDiagramFactory extends PSystemCommandFactory { } @Override - public AbstractPSystem createEmptyDiagram() { - return new BpmDiagram(); + public AbstractPSystem createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new BpmDiagram(source); } } diff --git a/src/net/sourceforge/plantuml/bpm/CommandGoto.java b/src/net/sourceforge/plantuml/bpm/CommandGoto.java index ab373af36..5ab9d55b8 100644 --- a/src/net/sourceforge/plantuml/bpm/CommandGoto.java +++ b/src/net/sourceforge/plantuml/bpm/CommandGoto.java @@ -53,7 +53,7 @@ public class CommandGoto extends SingleLineCommand2 { return RegexConcat.build(CommandGoto.class.getName(), RegexLeaf.start(), // new RegexLeaf("goto"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("ID", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("ID", "([%pLN_.@]+)"), // RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/bpm/CommandMerge.java b/src/net/sourceforge/plantuml/bpm/CommandMerge.java index 20c2d4549..a6057f818 100644 --- a/src/net/sourceforge/plantuml/bpm/CommandMerge.java +++ b/src/net/sourceforge/plantuml/bpm/CommandMerge.java @@ -51,7 +51,7 @@ public class CommandMerge extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandMerge.class.getName(), RegexLeaf.start(), // - new RegexLeaf("ID", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("ID", "([%pLN_.@]+)"), // new RegexLeaf(":?"), // new RegexLeaf("\\<\\+\\>"), // RegexLeaf.end()); diff --git a/src/net/sourceforge/plantuml/bpm/CommandResume.java b/src/net/sourceforge/plantuml/bpm/CommandResume.java index 69ca85fb6..a930370ef 100644 --- a/src/net/sourceforge/plantuml/bpm/CommandResume.java +++ b/src/net/sourceforge/plantuml/bpm/CommandResume.java @@ -53,7 +53,7 @@ public class CommandResume extends SingleLineCommand2 { return RegexConcat.build(CommandResume.class.getName(), RegexLeaf.start(), // new RegexLeaf("resume"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("ID", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("ID", "([%pLN_.@]+)"), // RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/classdiagram/AbstractEntityDiagram.java b/src/net/sourceforge/plantuml/classdiagram/AbstractEntityDiagram.java index 5056596af..e179d0d26 100644 --- a/src/net/sourceforge/plantuml/classdiagram/AbstractEntityDiagram.java +++ b/src/net/sourceforge/plantuml/classdiagram/AbstractEntityDiagram.java @@ -43,12 +43,13 @@ import java.util.List; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.CucaDiagram; public abstract class AbstractEntityDiagram extends CucaDiagram { - public AbstractEntityDiagram(UmlDiagramType type, ISkinSimple orig) { - super(type, orig); + public AbstractEntityDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) { + super(source, type, orig); } final protected List getDotStrings() { diff --git a/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java b/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java index 0be7bacd0..a3ac3e6c3 100644 --- a/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java +++ b/src/net/sourceforge/plantuml/classdiagram/ClassDiagram.java @@ -43,6 +43,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.Display; @@ -60,8 +61,8 @@ import net.sourceforge.plantuml.svek.image.EntityImageClass; public class ClassDiagram extends AbstractClassOrObjectDiagram { - public ClassDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.CLASS, skinParam); + public ClassDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.CLASS, skinParam); } private Code getShortName1972(Code code) { diff --git a/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java b/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java index 39ac1cc0f..1d2bcd3ca 100644 --- a/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java +++ b/src/net/sourceforge/plantuml/classdiagram/ClassDiagramFactory.java @@ -72,6 +72,7 @@ import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnEntity; import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnLink; import net.sourceforge.plantuml.command.note.CommandFactoryTipOnEntity; import net.sourceforge.plantuml.command.regex.RegexLeaf; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.descdiagram.command.CommandCreateElementMultilines; import net.sourceforge.plantuml.descdiagram.command.CommandCreateElementParenthesis; import net.sourceforge.plantuml.descdiagram.command.CommandNewpage; @@ -82,15 +83,9 @@ import net.sourceforge.plantuml.objectdiagram.command.CommandCreateMap; public class ClassDiagramFactory extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public ClassDiagramFactory(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - @Override - public ClassDiagram createEmptyDiagram() { - return new ClassDiagram(skinParam); + public ClassDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new ClassDiagram(source, skinParam); } @Override diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java index 5229da045..6c6ceb8b8 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandAddMethod.java @@ -57,7 +57,7 @@ public class CommandAddMethod extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandAddMethod.class.getName(), RegexLeaf.start(), // - new RegexLeaf("NAME", "([\\p{L}0-9_.]+|[%g][^%g]+[%g])"), // + new RegexLeaf("NAME", "([%pLN_.]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf(":"), // RegexLeaf.spaceOneOrMore(), // diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java index efbf9543e..44177fc1d 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandCreateClassMultilines.java @@ -72,8 +72,8 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandCreateClassMultilines extends CommandMultilines2 { - private static final String CODE = CommandLinkClass.getSeparator() + "?[\\p{L}0-9_]+" + "(?:" - + CommandLinkClass.getSeparator() + "[\\p{L}0-9_]+)*"; + private static final String CODE = CommandLinkClass.getSeparator() + "?[%pLN_]+" + "(?:" + + CommandLinkClass.getSeparator() + "[%pLN_]+)*"; public static final String CODES = CODE + "(?:\\s*,\\s*" + CODE + ")*"; enum Mode { @@ -86,7 +86,7 @@ public class CommandCreateClassMultilines extends CommandMultilines2 return RegexConcat.build(CommandDiamondAssociation.class.getName(), RegexLeaf.start(), // new RegexLeaf("\\<\\>"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE", "([%pLN_.]+)"), // RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java index 6fdf03f1b..c5a8e85e8 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandHideShowByGender.java @@ -68,7 +68,7 @@ public class CommandHideShowByGender extends SingleLineCommand2 { new RegexLeaf("COMMAND", "(hide|show)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("GENDER", - "(?:(class|object|interface|enum|annotation|abstract|[\\p{L}0-9_.]+|[%g][^%g]+[%g]|\\<\\<.*\\>\\>)[%s]+)*?"), // + "(?:(class|object|interface|enum|annotation|abstract|[%pLN_.]+|[%g][^%g]+[%g]|\\<\\<.*\\>\\>)[%s]+)*?"), // new RegexOptional( // new RegexConcat( // new RegexLeaf("EMPTY", "(empty)"), // diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java index 1016a561a..deaa8a81a 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandLinkClass.java @@ -66,8 +66,8 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; final public class CommandLinkClass extends SingleLineCommand2 { - private static final String SINGLE = "[.\\\\]{0,2}[\\p{L}0-9_]+(?:[.\\\\]{1,2}[\\p{L}0-9_]+)*"; - private static final String SINGLE_GUILLEMENT = "[%g][.\\\\]{0,2}[\\p{L}0-9_]+(?:[.\\\\]{1,2}[\\p{L}0-9_]+)*[%g]"; + private static final String SINGLE = "[.\\\\]{0,2}[%pLN_]+(?:[.\\\\]{1,2}[%pLN_]+)*"; + private static final String SINGLE_GUILLEMENT = "[%g][.\\\\]{0,2}[%pLN_]+(?:[.\\\\]{1,2}[%pLN_]+)*[%g]"; private static final String SINGLE2 = "(?:" + SINGLE + "|" + SINGLE_GUILLEMENT + ")"; private static final String COUPLE = "\\([%s]*(" + SINGLE2 + ")[%s]*,[%s]*(" + SINGLE2 + ")[%s]*\\)"; @@ -124,7 +124,7 @@ final public class CommandLinkClass extends SingleLineCommand2\\>)?"), // + + "(\\.?[%pLN_]+(?:\\.[%pLN_]+)*|[%g][^%g]+[%g])[%s]*(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // new RegexOptional(new RegexLeaf("FIRST_LABEL", "[%g]([^%g]+)[%g]")), // RegexLeaf.spaceZeroOrMore(), // @@ -83,7 +83,7 @@ final public class CommandLinkLollipop extends SingleLineCommand2\\>)?"), // + + "(\\.?[%pLN_]+(?:\\.[%pLN_]+)*|[%g][^%g]+[%g])[%s]*(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // new RegexOptional( // new RegexConcat( // diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandStereotype.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandStereotype.java index d81c9745b..458c54a67 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandStereotype.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandStereotype.java @@ -59,7 +59,7 @@ public class CommandStereotype extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandStereotype.class.getName(), // RegexLeaf.start(), // - new RegexLeaf("NAME", "([\\p{L}0-9_.]+|[%g][^%g]+[%g])"), // + new RegexLeaf("NAME", "([%pLN_.]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREO", "(\\<\\<.*\\>\\>)"), RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java index 01682a59a..70fe691e9 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandUrl.java @@ -64,7 +64,7 @@ public class CommandUrl extends SingleLineCommand2 { RegexLeaf.spaceZeroOrMore(), // new RegexOptional(new RegexLeaf("of|for")), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.]+|[%g][^%g]+[%g])"), // + new RegexLeaf("CODE", "([%pLN_.]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceOneOrMore(), // new RegexOptional(new RegexLeaf("is")), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/code/ArobaseStringCompressor.java b/src/net/sourceforge/plantuml/code/ArobaseStringCompressor.java index 63a689283..fb492751c 100644 --- a/src/net/sourceforge/plantuml/code/ArobaseStringCompressor.java +++ b/src/net/sourceforge/plantuml/code/ArobaseStringCompressor.java @@ -49,7 +49,7 @@ import net.sourceforge.plantuml.preproc.UncommentReadLine; public class ArobaseStringCompressor implements StringCompressor { - private final static Pattern2 p = MyPattern.cmpile("(?s)(?i)^[%s]*(@startuml[^\\n\\r]*)?[%s]*(.*?)[%s]*(@enduml)?[%s]*$"); + private final static Pattern2 p = MyPattern.cmpile("(?s)^[%s]*(@startuml[^\\n\\r]*)?[%s]*(.*?)[%s]*(@enduml)?[%s]*$"); public String compress(final String data) throws IOException { final ReadLine r = new UncommentReadLine(ReadLineReader.create(new StringReader(data), "COMPRESS")); diff --git a/src/net/sourceforge/plantuml/command/CommandAffineTransformMultiline.java b/src/net/sourceforge/plantuml/command/CommandAffineTransformMultiline.java index 17b194d1c..1107b508c 100644 --- a/src/net/sourceforge/plantuml/command/CommandAffineTransformMultiline.java +++ b/src/net/sourceforge/plantuml/command/CommandAffineTransformMultiline.java @@ -40,12 +40,12 @@ import net.sourceforge.plantuml.TitledDiagram; public class CommandAffineTransformMultiline extends CommandMultilines { public CommandAffineTransformMultiline() { - super("(?i)^!transformation[%s]+\\{[%s]*$"); + super("^!transformation[%s]+\\{[%s]*$"); } @Override public String getPatternEnd() { - return "(?i)^[%s]*!\\}[%s]*$"; + return "^[%s]*!\\}[%s]*$"; } public CommandExecutionResult execute(final TitledDiagram diagram, BlocLines lines) { diff --git a/src/net/sourceforge/plantuml/command/CommandCaption.java b/src/net/sourceforge/plantuml/command/CommandCaption.java index b8b2c5634..c2d905ab5 100644 --- a/src/net/sourceforge/plantuml/command/CommandCaption.java +++ b/src/net/sourceforge/plantuml/command/CommandCaption.java @@ -60,7 +60,7 @@ public class CommandCaption extends SingleLineCommand2 { new RegexLeaf("(?:[%s]*:[%s]*|[%s]+)"), // new RegexOr(// new RegexLeaf("DISPLAY1", "[%g](.*)[%g]"), // - new RegexLeaf("DISPLAY2", "(.*[\\p{L}0-9_.].*)")), // + new RegexLeaf("DISPLAY2", "(.*[%pLN_.].*)")), // RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/command/CommandFactorySprite.java b/src/net/sourceforge/plantuml/command/CommandFactorySprite.java index d4f3e127c..9b417f2aa 100644 --- a/src/net/sourceforge/plantuml/command/CommandFactorySprite.java +++ b/src/net/sourceforge/plantuml/command/CommandFactorySprite.java @@ -58,7 +58,7 @@ public final class CommandFactorySprite implements SingleMultiFactoryCommand { RegexLeaf.spaceOneOrMore()), // new RegexOr(// new RegexLeaf("LABEL1", "[%g](.*)[%g]"), // - new RegexLeaf("LABEL2", "(.*[\\p{L}0-9_.].*)")), // + new RegexLeaf("LABEL2", "(.*[%pLN_.].*)")), // RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/command/CommandHeader.java b/src/net/sourceforge/plantuml/command/CommandHeader.java index 29e7e2029..f47fa462e 100644 --- a/src/net/sourceforge/plantuml/command/CommandHeader.java +++ b/src/net/sourceforge/plantuml/command/CommandHeader.java @@ -67,7 +67,7 @@ public class CommandHeader extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore()), // new RegexOr(// new RegexLeaf("LABEL1", "[%g](.*)[%g]"), // - new RegexLeaf("LABEL2", "(.*[\\p{L}0-9_.].*)")), // + new RegexLeaf("LABEL2", "(.*[%pLN_.].*)")), // RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/command/CommandLegend.java b/src/net/sourceforge/plantuml/command/CommandLegend.java index 5bec424b6..a2ee64d62 100644 --- a/src/net/sourceforge/plantuml/command/CommandLegend.java +++ b/src/net/sourceforge/plantuml/command/CommandLegend.java @@ -60,7 +60,7 @@ public class CommandLegend extends SingleLineCommand2 { new RegexLeaf("(?:[%s]*:[%s]*|[%s]+)"), // new RegexOr(// new RegexLeaf("LEGEND1", "[%g](.*)[%g]"), // - new RegexLeaf("LEGEND2", "(.*[\\p{L}0-9_.].*)")), // + new RegexLeaf("LEGEND2", "(.*[%pLN_.].*)")), // RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/command/CommandMainframe.java b/src/net/sourceforge/plantuml/command/CommandMainframe.java index 033732dbc..54af4c215 100644 --- a/src/net/sourceforge/plantuml/command/CommandMainframe.java +++ b/src/net/sourceforge/plantuml/command/CommandMainframe.java @@ -56,7 +56,7 @@ public class CommandMainframe extends SingleLineCommand2 { new RegexOr( // new RegexConcat(RegexLeaf.spaceZeroOrMore(), new RegexLeaf(":"), RegexLeaf.spaceZeroOrMore()), // RegexLeaf.spaceOneOrMore()), // - new RegexLeaf("LABEL", "(.*[\\p{L}0-9_.].*)"), RegexLeaf.end()); // + new RegexLeaf("LABEL", "(.*[%pLN_.].*)"), RegexLeaf.end()); // } @Override diff --git a/src/net/sourceforge/plantuml/command/CommandMultilines.java b/src/net/sourceforge/plantuml/command/CommandMultilines.java index a4360a451..58f9ffe55 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilines.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilines.java @@ -45,7 +45,7 @@ public abstract class CommandMultilines implements Command private final Pattern2 starting; public CommandMultilines(String patternStart) { - if (patternStart.startsWith("(?i)^") == false || patternStart.endsWith("$") == false) { + if (patternStart.startsWith("^") == false || patternStart.endsWith("$") == false) { throw new IllegalArgumentException("Bad pattern " + patternStart); } this.starting = MyPattern.cmpile(patternStart); diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesBracket.java b/src/net/sourceforge/plantuml/command/CommandMultilinesBracket.java index df178847d..8fffdc670 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesBracket.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesBracket.java @@ -46,7 +46,7 @@ public abstract class CommandMultilinesBracket implements Com private final Pattern2 starting; public CommandMultilinesBracket(String patternStart) { - if (patternStart.startsWith("(?i)^") == false || patternStart.endsWith("$") == false) { + if (patternStart.startsWith("^") == false || patternStart.endsWith("$") == false) { throw new IllegalArgumentException("Bad pattern " + patternStart); } this.starting = MyPattern.cmpile(patternStart); diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesCaption.java b/src/net/sourceforge/plantuml/command/CommandMultilinesCaption.java index 91b7b0d3d..186c930ef 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesCaption.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesCaption.java @@ -45,12 +45,12 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandMultilinesCaption extends CommandMultilines { public CommandMultilinesCaption() { - super("(?i)^caption$"); + super("^caption$"); } @Override public String getPatternEnd() { - return "(?i)^end[%s]?caption$"; + return "^end[%s]?caption$"; } public CommandExecutionResult execute(final TitledDiagram diagram, BlocLines lines) throws NoSuchColorException { diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesComment.java b/src/net/sourceforge/plantuml/command/CommandMultilinesComment.java index 3df9e959d..365ce0133 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesComment.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesComment.java @@ -39,9 +39,9 @@ import net.sourceforge.plantuml.core.Diagram; public class CommandMultilinesComment extends CommandMultilines { - public static final String COMMENT_MULTILINE_START = "(?i)^[%s]*/[%q]([^%q]|[%q][^/])*$"; - public static final String COMMENT_MULTILINE_END = "(?i)^([^%q]|[%q][^/])*[%q]/[%s]*$"; - public static final String COMMENT_SINGLE_LINE = "(?i)^[%s]*([%q].*||/[%q].*[%q]/[%s]*)$"; + public static final String COMMENT_MULTILINE_START = "^[%s]*/[%q]([^%q]|[%q][^/])*$"; + public static final String COMMENT_MULTILINE_END = "^([^%q]|[%q][^/])*[%q]/[%s]*$"; + public static final String COMMENT_SINGLE_LINE = "^[%s]*([%q].*||/[%q].*[%q]/[%s]*)$"; public static final String INNER_COMMENT = "/[%q].*?[%q]/"; private CommandMultilinesComment() { diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java b/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java index ff89ef673..3f7eceb4a 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesFooter.java @@ -47,12 +47,12 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandMultilinesFooter extends CommandMultilines { public CommandMultilinesFooter() { - super("(?i)^(?:(left|right|center)?[%s]*)footer$"); + super("^(?:(left|right|center)?[%s]*)footer$"); } @Override public String getPatternEnd() { - return "(?i)^end[%s]?footer$"; + return "^end[%s]?footer$"; } public CommandExecutionResult execute(final TitledDiagram diagram, BlocLines lines) throws NoSuchColorException { diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java b/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java index bbb13985b..25601e8fc 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesHeader.java @@ -47,12 +47,12 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandMultilinesHeader extends CommandMultilines { public CommandMultilinesHeader() { - super("(?i)^(?:(left|right|center)?[%s]*)header$"); + super("^(?:(left|right|center)?[%s]*)header$"); } @Override public String getPatternEnd() { - return "(?i)^end[%s]?header$"; + return "^end[%s]?header$"; } public CommandExecutionResult execute(final TitledDiagram diagram, BlocLines lines) throws NoSuchColorException { diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesLegend.java b/src/net/sourceforge/plantuml/command/CommandMultilinesLegend.java index e620912e1..8785d17f9 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesLegend.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesLegend.java @@ -70,7 +70,7 @@ public class CommandMultilinesLegend extends CommandMultilines2 { @Override public String getPatternEnd() { - return "(?i)^end[%s]?legend$"; + return "^end[%s]?legend$"; } @Override diff --git a/src/net/sourceforge/plantuml/command/CommandMultilinesTitle.java b/src/net/sourceforge/plantuml/command/CommandMultilinesTitle.java index 1bb1cce51..65e43b632 100644 --- a/src/net/sourceforge/plantuml/command/CommandMultilinesTitle.java +++ b/src/net/sourceforge/plantuml/command/CommandMultilinesTitle.java @@ -45,12 +45,12 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandMultilinesTitle extends CommandMultilines { public CommandMultilinesTitle() { - super("(?i)^title$"); + super("^title$"); } @Override public String getPatternEnd() { - return "(?i)^end[%s]?title$"; + return "^end[%s]?title$"; } public CommandExecutionResult execute(final TitledDiagram diagram, BlocLines lines) throws NoSuchColorException { diff --git a/src/net/sourceforge/plantuml/command/CommandNamespace.java b/src/net/sourceforge/plantuml/command/CommandNamespace.java index 930572985..f83d9963f 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespace.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespace.java @@ -66,7 +66,7 @@ public class CommandNamespace extends SingleLineCommand2 { return RegexConcat.build(CommandNamespace.class.getName(), RegexLeaf.start(), // new RegexLeaf("namespace"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_][-\\p{L}0-9_.:\\\\]*)"), // + new RegexLeaf("NAME", "([%pLN_][-%pLN_.:\\\\]*)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/command/CommandNamespace2.java b/src/net/sourceforge/plantuml/command/CommandNamespace2.java index b8f45d0a9..83393d62f 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespace2.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespace2.java @@ -74,7 +74,7 @@ public class CommandNamespace2 extends SingleLineCommand2 { new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_][-\\p{L}0-9_.:\\\\]*)"), // + new RegexLeaf("NAME", "([%pLN_][-%pLN_.:\\\\]*)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java b/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java index 0aaa7f785..168c80672 100644 --- a/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java +++ b/src/net/sourceforge/plantuml/command/CommandNamespaceEmpty.java @@ -66,7 +66,7 @@ public class CommandNamespaceEmpty extends SingleLineCommand2 { return RegexConcat.build(CommandNamespaceEmpty.class.getName(), RegexLeaf.start(), // new RegexLeaf("namespace"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_][-\\p{L}0-9_.:\\\\]*)"), // + new RegexLeaf("NAME", "([%pLN_][-%pLN_.:\\\\]*)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/command/CommandPackage.java b/src/net/sourceforge/plantuml/command/CommandPackage.java index 3bdc04646..d7fd97d6a 100644 --- a/src/net/sourceforge/plantuml/command/CommandPackage.java +++ b/src/net/sourceforge/plantuml/command/CommandPackage.java @@ -79,7 +79,7 @@ public class CommandPackage extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("AS", "([\\p{L}0-9_.]+)") // + new RegexLeaf("AS", "([%pLN_.]+)") // )), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // diff --git a/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java b/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java index fb6c3c718..29f7bd209 100644 --- a/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java +++ b/src/net/sourceforge/plantuml/command/CommandPackageEmpty.java @@ -70,7 +70,7 @@ public class CommandPackageEmpty extends SingleLineCommand2 { public CommandSkinParamMultilines() { - super("(?i)^skinparam[%s]*(?:[%s]+([\\w.]*(?:\\<\\<.*\\>\\>)?[\\w.]*))?[%s]*\\{$"); + super("^skinparam[%s]*(?:[%s]+([\\w.]*(?:\\<\\<.*\\>\\>)?[\\w.]*))?[%s]*\\{$"); } @Override diff --git a/src/net/sourceforge/plantuml/command/CommandSpriteFile.java b/src/net/sourceforge/plantuml/command/CommandSpriteFile.java index 42cefdb5e..b6f79380f 100644 --- a/src/net/sourceforge/plantuml/command/CommandSpriteFile.java +++ b/src/net/sourceforge/plantuml/command/CommandSpriteFile.java @@ -67,7 +67,7 @@ public class CommandSpriteFile extends SingleLineCommand2 { new RegexLeaf("sprite"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("\\$?"), // - new RegexLeaf("NAME", "([-\\p{L}0-9_]+)"), // + new RegexLeaf("NAME", "([-%pLN_]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("FILE", "(.*)"), RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/command/CommandTitle.java b/src/net/sourceforge/plantuml/command/CommandTitle.java index a69825010..e212c0734 100644 --- a/src/net/sourceforge/plantuml/command/CommandTitle.java +++ b/src/net/sourceforge/plantuml/command/CommandTitle.java @@ -60,7 +60,7 @@ public class CommandTitle extends SingleLineCommand2 { new RegexLeaf("(?:[%s]*:[%s]*|[%s]+)"), // new RegexOr(// new RegexLeaf("TITLE1", "[%g](.*)[%g]"), // - new RegexLeaf("TITLE2", "(.*[\\p{L}0-9_.].*)")), // + new RegexLeaf("TITLE2", "(.*[%pLN_.].*)")), // RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/command/PSystemAbstractFactory.java b/src/net/sourceforge/plantuml/command/PSystemAbstractFactory.java index f23a8dc45..4f7699594 100644 --- a/src/net/sourceforge/plantuml/command/PSystemAbstractFactory.java +++ b/src/net/sourceforge/plantuml/command/PSystemAbstractFactory.java @@ -60,7 +60,6 @@ public abstract class PSystemAbstractFactory implements PSystemFactory { List trace) { final ErrorUml err = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, EMPTY_DESCRIPTION, 0, lineLocation); final PSystemError result = PSystemErrorUtils.buildV2(source, err, null, trace); - result.setSource(source); return result; } @@ -68,7 +67,6 @@ public abstract class PSystemAbstractFactory implements PSystemFactory { List trace) { final ErrorUml err = new ErrorUml(ErrorUmlType.EXECUTION_ERROR, stringError, 0, lineLocation); final PSystemError result = PSystemErrorUtils.buildV2(source, err, null, trace); - result.setSource(source); return result; } diff --git a/src/net/sourceforge/plantuml/command/PSystemBasicFactory.java b/src/net/sourceforge/plantuml/command/PSystemBasicFactory.java index c5cfbe161..40bc79f94 100644 --- a/src/net/sourceforge/plantuml/command/PSystemBasicFactory.java +++ b/src/net/sourceforge/plantuml/command/PSystemBasicFactory.java @@ -38,6 +38,7 @@ package net.sourceforge.plantuml.command; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.ErrorUml; import net.sourceforge.plantuml.ErrorUmlType; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.StringLocated; import net.sourceforge.plantuml.core.Diagram; import net.sourceforge.plantuml.core.DiagramType; @@ -56,21 +57,20 @@ public abstract class PSystemBasicFactory

extends PSy this(DiagramType.UML); } - public abstract P executeLine(P system, String line); + public abstract P executeLine(UmlSource source, P system, String line); - public P init(String startLine) { - return null; - } + public abstract P initDiagram(UmlSource source, String startLine); private boolean isEmptyLine(StringLocated result) { return result.getTrimmed().getString().length() == 0; } - final public Diagram createSystem(UmlSource source) { + @Override + final public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { source = source.removeInitialSkinparam(); final IteratorCounter2 it = source.iterator2(); final StringLocated startLine = it.next(); - P system = init(startLine.getString()); + P system = initDiagram(source, startLine.getString()); boolean first = true; while (it.hasNext()) { final StringLocated s = it.next(); @@ -82,21 +82,15 @@ public abstract class PSystemBasicFactory

extends PSy if (source.getTotalLineCount() == 2 && source.isStartDef() == false) { return buildEmptyError(source, s.getLocation(), it.getTrace()); } - if (system != null) { - system.setSource(source); - } return system; } - system = executeLine(system, s.getString()); + system = executeLine(source, system, s.getString()); if (system == null) { final ErrorUml err = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, "Syntax Error?", 0, s.getLocation()); // return PSystemErrorUtils.buildV1(source, err, null); return PSystemErrorUtils.buildV2(source, err, null, it.getTrace()); } } - if (system != null) { - system.setSource(source); - } return system; } diff --git a/src/net/sourceforge/plantuml/command/PSystemCommandFactory.java b/src/net/sourceforge/plantuml/command/PSystemCommandFactory.java index a478fb3d8..30a9bbfe7 100644 --- a/src/net/sourceforge/plantuml/command/PSystemCommandFactory.java +++ b/src/net/sourceforge/plantuml/command/PSystemCommandFactory.java @@ -43,6 +43,7 @@ import java.util.List; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.ErrorUml; import net.sourceforge.plantuml.ErrorUmlType; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.LineLocation; import net.sourceforge.plantuml.StringLocated; import net.sourceforge.plantuml.classdiagram.command.CommandHideShowByGender; @@ -71,7 +72,8 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory { super(type); } - final public Diagram createSystem(UmlSource source) { + @Override + final public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { final IteratorCounter2 it = source.iterator2(); final StringLocated startLine = it.next(); if (StartUtils.isArobaseStartDiagram(startLine.getString()) == false) { @@ -84,7 +86,7 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory { } return buildEmptyError(source, startLine.getLocation(), it.getTrace()); } - AbstractPSystem sys = createEmptyDiagram(); + AbstractPSystem sys = createEmptyDiagram(source, skinParam); while (it.hasNext()) { if (StartUtils.isArobaseEndDiagram(it.peek().getString())) { @@ -104,7 +106,6 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory { if (sys.isOk() == false) { return null; } - sys.setSource(source); return sys; } sys = executeFewLines(sys, source, it); @@ -112,7 +113,6 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory { return sys; } } - sys.setSource(source); return sys; } @@ -214,7 +214,7 @@ public abstract class PSystemCommandFactory extends PSystemAbstractFactory { protected abstract List createCommands(); - public abstract AbstractPSystem createEmptyDiagram(); + public abstract AbstractPSystem createEmptyDiagram(UmlSource source, ISkinSimple skinParam); final protected void addCommonCommands1(List cmds) { addTitleCommands(cmds); diff --git a/src/net/sourceforge/plantuml/command/PSystemSingleLineFactory.java b/src/net/sourceforge/plantuml/command/PSystemSingleLineFactory.java index 829efe809..dfba3f108 100644 --- a/src/net/sourceforge/plantuml/command/PSystemSingleLineFactory.java +++ b/src/net/sourceforge/plantuml/command/PSystemSingleLineFactory.java @@ -38,6 +38,7 @@ package net.sourceforge.plantuml.command; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.ErrorUml; import net.sourceforge.plantuml.ErrorUmlType; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.LineLocation; import net.sourceforge.plantuml.StringLocated; import net.sourceforge.plantuml.core.Diagram; @@ -49,13 +50,14 @@ import net.sourceforge.plantuml.version.IteratorCounter2; public abstract class PSystemSingleLineFactory extends PSystemAbstractFactory { - protected abstract AbstractPSystem executeLine(String line); + protected abstract AbstractPSystem executeLine(UmlSource source, String line); protected PSystemSingleLineFactory() { super(DiagramType.UML); } - final public Diagram createSystem(UmlSource source) { + @Override + final public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { if (source.getTotalLineCount() != 3) { return null; @@ -78,13 +80,12 @@ public abstract class PSystemSingleLineFactory extends PSystemAbstractFactory { if (StartUtils.isArobaseEndDiagram(s.getString())) { return buildEmptyError(source, s.getLocation(), it.getTrace()); } - final AbstractPSystem sys = executeLine(s.getString()); + final AbstractPSystem sys = executeLine(source, s.getString()); if (sys == null) { final ErrorUml err = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, "Syntax Error?", 0, s.getLocation()); // return PSystemErrorUtils.buildV1(source, err, null); return PSystemErrorUtils.buildV2(source, err, null, it.getTrace()); } - sys.setSource(source); return sys; } diff --git a/src/net/sourceforge/plantuml/command/note/CommandFactoryNote.java b/src/net/sourceforge/plantuml/command/note/CommandFactoryNote.java index ddaf54dc7..4fb8464de 100644 --- a/src/net/sourceforge/plantuml/command/note/CommandFactoryNote.java +++ b/src/net/sourceforge/plantuml/command/note/CommandFactoryNote.java @@ -65,7 +65,7 @@ public final class CommandFactoryNote implements SingleMultiFactoryCommand extends LinkedHashMap { + private final int maxSize; + + public MaxSizeHashMap(int maxSize) { + this.maxSize = maxSize; + } + + @Override + protected boolean removeEldestEntry(Map.Entry eldest) { + return size() > maxSize; + } +} + // Splitter.java to be finished public abstract class MyPattern { - public static Pattern2 cmpile(String p) { - p = transformAndCheck(p); - return new Pattern2(Pattern.compile(p)); - } + private static final Map cache = new MaxSizeHashMap<>(512); - public static Pattern2 cmpileNockeck(String p) { - p = transform(p); - return new Pattern2(Pattern.compile(p)); - } + private static final Pattern2 EMPTY = new Pattern2(Pattern.compile("")); - public static Pattern2 cmpile(String p, int type) { - p = transformAndCheck(p); - return new Pattern2(Pattern.compile(p, type)); - } +// static int CPT1; +// static int CPT2; - public static Pattern2 cmpileNockeck(String p, int type) { - p = transform(p); - return new Pattern2(Pattern.compile(p, type)); - } + public static Pattern2 cmpile(final String p) { + if (p == null || p.length() == 0) { + return EMPTY; + } +// CPT1++; + Pattern2 result = null; + synchronized (cache) { + result = cache.get(p); + if (result != null) { + return result; + } + } + assert result == null; + result = new Pattern2(Pattern.compile(transform(p), Pattern.CASE_INSENSITIVE)); - private static String transformAndCheck(String p) { - p = transform(p); - return p; + synchronized (cache) { + cache.put(p, result); +// CPT2++; +// System.err.println("CPT= " + CPT1 + " / " + CPT2 + " " + cache.size()); + } + + return result; } private static String transform(String p) { // Replace ReadLineReader.java - p = p.replaceAll("%s", "\\\\s\u00A0"); // space - p = p.replaceAll("%q", "'\u2018\u2019"); // quote - p = p.replaceAll("%g", "\"\u201c\u201d\u00ab\u00bb"); // double quote + p = p.replace("%pLN", "\\p{L}0-9"); // Unicode Letter, digit + p = p.replace("%s", "\\s\u00A0"); // space + p = p.replace("%q", "'\u2018\u2019"); // quote + p = p.replace("%g", "\"\u201c\u201d\u00ab\u00bb"); // double quote return p; } diff --git a/src/net/sourceforge/plantuml/command/regex/RegexComposed.java b/src/net/sourceforge/plantuml/command/regex/RegexComposed.java index 2fec23e0d..3044e661c 100644 --- a/src/net/sourceforge/plantuml/command/regex/RegexComposed.java +++ b/src/net/sourceforge/plantuml/command/regex/RegexComposed.java @@ -43,7 +43,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import java.util.regex.Pattern; import net.sourceforge.plantuml.StringLocated; @@ -64,7 +63,7 @@ public abstract class RegexComposed implements IRegex { Pattern2 result = fullCached.get(); if (result == null) { final String fullSlow = getFullSlow(); - result = MyPattern.cmpile(fullSlow, Pattern.CASE_INSENSITIVE); + result = MyPattern.cmpile(fullSlow); fullCached.set(result); } return result; diff --git a/src/net/sourceforge/plantuml/command/regex/RegexLeaf.java b/src/net/sourceforge/plantuml/command/regex/RegexLeaf.java index 7fc3808f1..3a691f558 100644 --- a/src/net/sourceforge/plantuml/command/regex/RegexLeaf.java +++ b/src/net/sourceforge/plantuml/command/regex/RegexLeaf.java @@ -94,7 +94,7 @@ public class RegexLeaf implements IRegex { public int count() { if (count == -1) { - count = MyPattern.cmpile(pattern, Pattern.CASE_INSENSITIVE).matcher("").groupCount(); + count = MyPattern.cmpile(pattern).matcher("").groupCount(); } return count; } @@ -149,10 +149,12 @@ public class RegexLeaf implements IRegex { } if (p3.matcher(pattern).matches()) { // System.err.println("special " + pattern); - // System.err.println("result " + FoxSignature.backToString(getSignatureP3(pattern))); + // System.err.println("result " + + // FoxSignature.backToString(getSignatureP3(pattern))); return getSignatureP3(pattern); } - if (pattern.length() == 2 && pattern.startsWith("\\") && Character.isLetterOrDigit(pattern.charAt(1)) == false) { + if (pattern.length() == 2 && pattern.startsWith("\\") + && Character.isLetterOrDigit(pattern.charAt(1)) == false) { return FoxSignature.getFoxSignature(pattern.substring(1)); } if (pattern.equals("\\<\\>") || pattern.equals("(\\<\\<.*\\>\\>)")) { diff --git a/src/net/sourceforge/plantuml/compositediagram/CompositeDiagram.java b/src/net/sourceforge/plantuml/compositediagram/CompositeDiagram.java index 6e34e1c6f..f0618cc73 100644 --- a/src/net/sourceforge/plantuml/compositediagram/CompositeDiagram.java +++ b/src/net/sourceforge/plantuml/compositediagram/CompositeDiagram.java @@ -40,6 +40,7 @@ import java.util.Objects; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.IEntity; import net.sourceforge.plantuml.cucadiagram.Ident; @@ -48,8 +49,8 @@ import net.sourceforge.plantuml.graphic.USymbol; public class CompositeDiagram extends AbstractEntityDiagram { - public CompositeDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.COMPOSITE, skinParam); + public CompositeDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.COMPOSITE, skinParam); } @Override diff --git a/src/net/sourceforge/plantuml/compositediagram/CompositeDiagramFactory.java b/src/net/sourceforge/plantuml/compositediagram/CompositeDiagramFactory.java index e05082184..5b67892ad 100644 --- a/src/net/sourceforge/plantuml/compositediagram/CompositeDiagramFactory.java +++ b/src/net/sourceforge/plantuml/compositediagram/CompositeDiagramFactory.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.compositediagram.command.CommandCreateBlock; import net.sourceforge.plantuml.compositediagram.command.CommandCreatePackageBlock; import net.sourceforge.plantuml.compositediagram.command.CommandEndPackageBlock; import net.sourceforge.plantuml.compositediagram.command.CommandLinkBlock; +import net.sourceforge.plantuml.core.UmlSource; public class CompositeDiagramFactory extends PSystemCommandFactory { @@ -67,7 +68,7 @@ public class CompositeDiagramFactory extends PSystemCommandFactory { } @Override - public CompositeDiagram createEmptyDiagram() { - return new CompositeDiagram(skinParam); + public CompositeDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new CompositeDiagram(source, skinParam); } } diff --git a/src/net/sourceforge/plantuml/compositediagram/command/CommandCreateBlock.java b/src/net/sourceforge/plantuml/compositediagram/command/CommandCreateBlock.java index 2ad450d81..d899899df 100644 --- a/src/net/sourceforge/plantuml/compositediagram/command/CommandCreateBlock.java +++ b/src/net/sourceforge/plantuml/compositediagram/command/CommandCreateBlock.java @@ -65,7 +65,7 @@ public class CommandCreateBlock extends SingleLineCommand2 { new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore() // )), // - new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), RegexLeaf.end()); // + new RegexLeaf("CODE", "([%pLN_.]+)"), RegexLeaf.end()); // } @Override diff --git a/src/net/sourceforge/plantuml/compositediagram/command/CommandCreatePackageBlock.java b/src/net/sourceforge/plantuml/compositediagram/command/CommandCreatePackageBlock.java index e12f94ee4..fa942da8c 100644 --- a/src/net/sourceforge/plantuml/compositediagram/command/CommandCreatePackageBlock.java +++ b/src/net/sourceforge/plantuml/compositediagram/command/CommandCreatePackageBlock.java @@ -68,7 +68,7 @@ public class CommandCreatePackageBlock extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandLinkBlock.class.getName(), RegexLeaf.start(), // - new RegexLeaf("ENT1", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("ENT1", "([%pLN_.]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("DECO1", "(\\[\\]|\\*\\))?"), // new RegexLeaf("QUEUE", "([=-]+|\\.+)"), // new RegexLeaf("DECO2", "(\\[\\]|\\(\\*)?"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("ENT2", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("ENT2", "([%pLN_.]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexOptional( // new RegexConcat( // diff --git a/src/net/sourceforge/plantuml/core/UmlSource.java b/src/net/sourceforge/plantuml/core/UmlSource.java index 848d208d9..78f973d04 100644 --- a/src/net/sourceforge/plantuml/core/UmlSource.java +++ b/src/net/sourceforge/plantuml/core/UmlSource.java @@ -229,7 +229,7 @@ final public class UmlSource { * @return */ public Display getTitle() { - final Pattern2 p = MyPattern.cmpile("(?i)^[%s]*title[%s]+(.+)$"); + final Pattern2 p = MyPattern.cmpile("^[%s]*title[%s]+(.+)$"); for (StringLocated s : source) { final Matcher2 m = p.matcher(s.getString()); final boolean ok = m.matches(); diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleCache.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleCache.java new file mode 100644 index 000000000..5e308508d --- /dev/null +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleCache.java @@ -0,0 +1,59 @@ +/* ======================================================================== + * PlantUML : a free UML diagram generator + * ======================================================================== + * + * (C) Copyright 2009-2020, Arnaud Roques + * + * Project Info: http://plantuml.com + * + * If you like this project or if you find it useful, you can support us at: + * + * http://plantuml.com/patreon (only 1$ per month!) + * http://plantuml.com/paypal + * + * 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.creole.command; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import net.sourceforge.plantuml.command.regex.MyPattern; +import net.sourceforge.plantuml.command.regex.Pattern2; + +abstract class CommandCreoleCache implements Command { + + private static final Map cache = new ConcurrentHashMap<>(); + + protected final Pattern2 mypattern; + + protected CommandCreoleCache(String p) { + Pattern2 result = cache.get(p); + if (result == null) { + result = MyPattern.cmpile(p); + cache.put(p, result); + } + this.mypattern = result; + } + +} diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorAndSizeChange.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorAndSizeChange.java index ffacc4ac6..113fffef5 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorAndSizeChange.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorAndSizeChange.java @@ -48,26 +48,30 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorRuntimeException; public class CommandCreoleColorAndSizeChange implements Command { - private final Pattern2 pattern; + private final Pattern2 mypattern; private final ThemeStyle themeStyle; public static final String fontPattern = "\\"; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + fontPattern + "(.*?)\\)"); + + private static final Pattern2 patternEol = MyPattern.cmpile("^(" + fontPattern + "(.*))$"); + public static Command create(ThemeStyle themeStyle) { - return new CommandCreoleColorAndSizeChange(themeStyle, "^(?i)(" + fontPattern + "(.*?)\\)"); + return new CommandCreoleColorAndSizeChange(themeStyle, pattern); } public static Command createEol(ThemeStyle themeStyle) { - return new CommandCreoleColorAndSizeChange(themeStyle, "^(?i)(" + fontPattern + "(.*))$"); + return new CommandCreoleColorAndSizeChange(themeStyle, patternEol); } - private CommandCreoleColorAndSizeChange(ThemeStyle themeStyle, String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleColorAndSizeChange(ThemeStyle themeStyle, Pattern2 pattern) { + this.mypattern = pattern; this.themeStyle = themeStyle; } public int matchingSize(String line) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } @@ -75,7 +79,7 @@ public class CommandCreoleColorAndSizeChange implements Command { } public String executeAndGetRemaining(String line, StripeSimple stripe) throws NoSuchColorRuntimeException { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorChange.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorChange.java index aeecd5ba0..f4830fd29 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorChange.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleColorChange.java @@ -49,25 +49,30 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorRuntimeException; public class CommandCreoleColorChange implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern + .cmpile("^(" + Splitter.fontColorPattern2 + "(.*?)\\)"); + + private static final Pattern2 patternEol = MyPattern.cmpile("^(" + Splitter.fontColorPattern2 + "(.*)$)"); + + private final Pattern2 mypattern; private final ThemeStyle themeStyle; public static Command create(ThemeStyle themeStyle) { - return new CommandCreoleColorChange(themeStyle, "^(?i)(" + Splitter.fontColorPattern2 + "(.*?)\\)"); + return new CommandCreoleColorChange(themeStyle, pattern); } public static Command createEol(ThemeStyle themeStyle) { - return new CommandCreoleColorChange(themeStyle, "^(?i)(" + Splitter.fontColorPattern2 + "(.*)$)"); + return new CommandCreoleColorChange(themeStyle, patternEol); } - private CommandCreoleColorChange(ThemeStyle themeStyle, String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleColorChange(ThemeStyle themeStyle, Pattern2 pattern) { + this.mypattern = pattern; this.themeStyle = themeStyle; } public int matchingSize(String line) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } @@ -75,7 +80,7 @@ public class CommandCreoleColorChange implements Command { } public String executeAndGetRemaining(String line, StripeSimple stripe) throws NoSuchColorRuntimeException { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleExposantChange.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleExposantChange.java index b2e3cfc29..63cc5da87 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleExposantChange.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleExposantChange.java @@ -36,35 +36,26 @@ package net.sourceforge.plantuml.creole.command; import net.sourceforge.plantuml.command.regex.Matcher2; -import net.sourceforge.plantuml.command.regex.MyPattern; -import net.sourceforge.plantuml.command.regex.Pattern2; import net.sourceforge.plantuml.creole.legacy.StripeSimple; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.FontPosition; -public class CommandCreoleExposantChange implements Command { +public class CommandCreoleExposantChange extends CommandCreoleCache implements Command { - private final Pattern2 pattern; private final FontPosition position; private CommandCreoleExposantChange(String p, FontPosition position) { - this.pattern = MyPattern.cmpile(p); + super(p); this.position = position; } public static Command create(FontPosition position) { return new CommandCreoleExposantChange( - "^(?i)(" + "\\<" + position.getHtmlTag() + "\\>" + "(.*?)\\)", - position); + "^(" + "\\<" + position.getHtmlTag() + "\\>" + "(.*?)\\)", position); } - // public static Command createLegacyEol(FontStyle style) { - // return new CommandCreoleExposantChange("^(" + style.getActivationPattern() + - // "(.+))$", style); - // } - public int matchingSize(String line) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } @@ -72,7 +63,7 @@ public class CommandCreoleExposantChange implements Command { } public String executeAndGetRemaining(String line, StripeSimple stripe) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleFontFamilyChange.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleFontFamilyChange.java index de06d6390..266fee699 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleFontFamilyChange.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleFontFamilyChange.java @@ -44,23 +44,28 @@ import net.sourceforge.plantuml.graphic.Splitter; public class CommandCreoleFontFamilyChange implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern + .cmpile("^(" + Splitter.fontFamilyPattern + "(.*?)\\)"); + + private static final Pattern2 patternEol = MyPattern.cmpile("^(" + Splitter.fontFamilyPattern + "(.*)$)"); + + private final Pattern2 mypattern; public static Command create() { - return new CommandCreoleFontFamilyChange("^(?i)(" + Splitter.fontFamilyPattern + "(.*?)\\)"); + return new CommandCreoleFontFamilyChange(pattern); } public static Command createEol() { - return new CommandCreoleFontFamilyChange("^(?i)(" + Splitter.fontFamilyPattern + "(.*)$)"); + return new CommandCreoleFontFamilyChange(patternEol); } - private CommandCreoleFontFamilyChange(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleFontFamilyChange(Pattern2 p) { + this.mypattern = p; } public int matchingSize(String line) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } @@ -68,7 +73,7 @@ public class CommandCreoleFontFamilyChange implements Command { } public String executeAndGetRemaining(String line, StripeSimple stripe) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleImg.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleImg.java index 08d427d9e..1d5ba654c 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleImg.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleImg.java @@ -45,14 +45,13 @@ import net.sourceforge.plantuml.graphic.Splitter; public class CommandCreoleImg implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + Splitter.imgPatternNoSrcColon + ")"); - private CommandCreoleImg(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleImg() { } public static Command create() { - return new CommandCreoleImg("^(?i)(" + Splitter.imgPatternNoSrcColon + ")"); + return new CommandCreoleImg(); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleLatex.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleLatex.java index bf010c67c..6038c93b6 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleLatex.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleLatex.java @@ -44,14 +44,13 @@ import net.sourceforge.plantuml.math.ScientificEquationSafe; public class CommandCreoleLatex implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + Splitter.latexPattern + ")"); - private CommandCreoleLatex(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleLatex() { } public static Command create() { - return new CommandCreoleLatex("^(?i)(" + Splitter.latexPattern + ")"); + return new CommandCreoleLatex(); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleMath.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleMath.java index 5bb3eb823..5bbe4940d 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleMath.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleMath.java @@ -44,14 +44,13 @@ import net.sourceforge.plantuml.math.ScientificEquationSafe; public class CommandCreoleMath implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + Splitter.mathPattern + ")"); - private CommandCreoleMath(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleMath() { } public static Command create() { - return new CommandCreoleMath("^(?i)(" + Splitter.mathPattern + ")"); + return new CommandCreoleMath(); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleMonospaced.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleMonospaced.java index ab9dc5807..498f78b26 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleMonospaced.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleMonospaced.java @@ -47,7 +47,7 @@ public class CommandCreoleMonospaced implements Command { private final String monospacedFamily; public static Command create(String monospacedFamily) { - return new CommandCreoleMonospaced("^(?i)(\"\"(.*?)\"\")", monospacedFamily); + return new CommandCreoleMonospaced("^(\"\"(.*?)\"\")", monospacedFamily); } private CommandCreoleMonospaced(String p, String monospacedFamily) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleOpenIcon.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleOpenIcon.java index 9b9864e82..7dc4e1d2b 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleOpenIcon.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleOpenIcon.java @@ -47,18 +47,18 @@ import net.sourceforge.plantuml.ugraphic.color.HColorSet; public class CommandCreoleOpenIcon implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + Splitter.openiconPattern + ")"); + private final HColorSet colorSet; private final ThemeStyle themeStyle; - private CommandCreoleOpenIcon(ThemeStyle themeStyle, HColorSet colorSet, String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleOpenIcon(ThemeStyle themeStyle, HColorSet colorSet) { this.colorSet = colorSet; this.themeStyle = themeStyle; } public static Command create(ThemeStyle themeStyle, HColorSet colorSet) { - return new CommandCreoleOpenIcon(themeStyle, colorSet, "^(?i)(" + Splitter.openiconPattern + ")"); + return new CommandCreoleOpenIcon(themeStyle, colorSet); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleQrcode.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleQrcode.java index 81de72ab1..8abb8f3f1 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleQrcode.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleQrcode.java @@ -44,14 +44,13 @@ import net.sourceforge.plantuml.graphic.Splitter; public class CommandCreoleQrcode implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + Splitter.qrcodePattern + ")"); - private CommandCreoleQrcode(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleQrcode() { } public static Command create() { - return new CommandCreoleQrcode("^(?i)(" + Splitter.qrcodePattern + ")"); + return new CommandCreoleQrcode(); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSizeChange.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSizeChange.java index 6cb87d27e..35ec21c9b 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSizeChange.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSizeChange.java @@ -44,23 +44,26 @@ import net.sourceforge.plantuml.graphic.Splitter; public class CommandCreoleSizeChange implements Command { - private final Pattern2 pattern; + private final Pattern2 mypattern; + + private static final Pattern2 pattern = MyPattern + .cmpile("^(" + Splitter.fontSizePattern2 + "(.*?)\\)"); + private static final Pattern2 patternEol = MyPattern.cmpile("^(" + Splitter.fontSizePattern2 + "(.*)$)"); public static Command create() { - return new CommandCreoleSizeChange("^(?i)(" + Splitter.fontSizePattern2 + "(.*?)\\)"); + return new CommandCreoleSizeChange(pattern); } public static Command createEol() { - return new CommandCreoleSizeChange("^(?i)(" + Splitter.fontSizePattern2 + "(.*)$)"); + return new CommandCreoleSizeChange(patternEol); } - private CommandCreoleSizeChange(String p) { - this.pattern = MyPattern.cmpile(p); - + private CommandCreoleSizeChange(Pattern2 p) { + this.mypattern = p; } public int matchingSize(String line) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } @@ -68,7 +71,7 @@ public class CommandCreoleSizeChange implements Command { } public String executeAndGetRemaining(String line, StripeSimple stripe) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSpace.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSpace.java index 492c4c606..752e6d56b 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSpace.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSpace.java @@ -42,14 +42,13 @@ import net.sourceforge.plantuml.creole.legacy.StripeSimple; public class CommandCreoleSpace implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(\\)"); - private CommandCreoleSpace(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleSpace() { } public static Command create() { - return new CommandCreoleSpace("^(?i)(\\)"); + return new CommandCreoleSpace(); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSprite.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSprite.java index c0a7a3d08..c277b080e 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSprite.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSprite.java @@ -47,18 +47,18 @@ import net.sourceforge.plantuml.ugraphic.color.HColorSet; public class CommandCreoleSprite implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + Splitter.spritePattern2 + ")"); + private final HColorSet colorSet; private final ThemeStyle themeStyle; - private CommandCreoleSprite(ThemeStyle themeStyle, HColorSet colorSet, String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleSprite(ThemeStyle themeStyle, HColorSet colorSet) { this.colorSet = colorSet; this.themeStyle = themeStyle; } public static Command create(ThemeStyle themeStyle, HColorSet colorSet) { - return new CommandCreoleSprite(themeStyle, colorSet, "^(?i)(" + Splitter.spritePattern2 + ")"); + return new CommandCreoleSprite(themeStyle, colorSet); } public int matchingSize(String line) { diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle.java index f5972488f..2e88c4449 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle.java @@ -36,17 +36,14 @@ package net.sourceforge.plantuml.creole.command; import net.sourceforge.plantuml.command.regex.Matcher2; -import net.sourceforge.plantuml.command.regex.MyPattern; -import net.sourceforge.plantuml.command.regex.Pattern2; import net.sourceforge.plantuml.creole.legacy.StripeSimple; import net.sourceforge.plantuml.graphic.AddStyle; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.FontStyle; import net.sourceforge.plantuml.ugraphic.color.HColor; -public class CommandCreoleStyle implements Command { +public class CommandCreoleStyle extends CommandCreoleCache implements Command { - private final Pattern2 p; private final FontStyle style; private final boolean tryExtendedColor; @@ -67,7 +64,7 @@ public class CommandCreoleStyle implements Command { } private CommandCreoleStyle(String p, FontStyle style, boolean tryExtendedColor) { - this.p = MyPattern.cmpile(p); + super(p); this.style = style; this.tryExtendedColor = tryExtendedColor; } @@ -80,7 +77,7 @@ public class CommandCreoleStyle implements Command { } public String executeAndGetRemaining(final String line, StripeSimple stripe) { - final Matcher2 m = p.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } @@ -94,7 +91,7 @@ public class CommandCreoleStyle implements Command { } public int matchingSize(String line) { - final Matcher2 m = p.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle2.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle2.java index 93e6550e9..f8b17d6ef 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle2.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleStyle2.java @@ -37,15 +37,10 @@ package net.sourceforge.plantuml.creole.command; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.command.regex.Matcher2; -import net.sourceforge.plantuml.command.regex.MyPattern; -import net.sourceforge.plantuml.command.regex.Pattern2; import net.sourceforge.plantuml.creole.legacy.StripeSimple; import net.sourceforge.plantuml.graphic.FontStyle; -public class CommandCreoleStyle2 implements Command { - - private final Pattern2 p; - private final FontStyle style; +public class CommandCreoleStyle2 extends CommandCreoleCache implements Command { public static Command createCreole(FontStyle style) { return new CommandCreoleStyle2("^(" + style.getCreoleSyntax() + "(.+?)" + style.getCreoleSyntax() + ")", style); @@ -61,12 +56,11 @@ public class CommandCreoleStyle2 implements Command { } private CommandCreoleStyle2(String p, FontStyle style) { - this.p = MyPattern.cmpile(p); - this.style = style; + super(p); } public String executeAndGetRemaining(final String line, StripeSimple stripe) { - final Matcher2 m = p.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } @@ -79,7 +73,7 @@ public class CommandCreoleStyle2 implements Command { } public int matchingSize(String line) { - final Matcher2 m = p.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSvgAttributeChange.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSvgAttributeChange.java index 39be99197..2d48f04c6 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleSvgAttributeChange.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleSvgAttributeChange.java @@ -45,24 +45,27 @@ import net.sourceforge.plantuml.graphic.SvgAttributes; public class CommandCreoleSvgAttributeChange implements Command { - private final Pattern2 pattern; - public static final String fontPattern = Splitter.svgAttributePattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + fontPattern + "(.*?)\\)"); + private static final Pattern2 patternEol = MyPattern.cmpile("^(" + fontPattern + "(.*))$"); + + private final Pattern2 mypattern; + public static Command create() { - return new CommandCreoleSvgAttributeChange("^(?i)(" + fontPattern + "(.*?)\\)"); + return new CommandCreoleSvgAttributeChange(pattern); } public static Command createEol() { - return new CommandCreoleSvgAttributeChange("^(?i)(" + fontPattern + "(.*))$"); + return new CommandCreoleSvgAttributeChange(patternEol); } - private CommandCreoleSvgAttributeChange(String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleSvgAttributeChange(Pattern2 p) { + this.mypattern = p; } public int matchingSize(String line) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { return 0; } @@ -70,7 +73,7 @@ public class CommandCreoleSvgAttributeChange implements Command { } public String executeAndGetRemaining(String line, StripeSimple stripe) { - final Matcher2 m = pattern.matcher(line); + final Matcher2 m = mypattern.matcher(line); if (m.find() == false) { throw new IllegalStateException(); } diff --git a/src/net/sourceforge/plantuml/creole/command/CommandCreoleUrl.java b/src/net/sourceforge/plantuml/creole/command/CommandCreoleUrl.java index 83332f4a8..cf47d4b78 100644 --- a/src/net/sourceforge/plantuml/creole/command/CommandCreoleUrl.java +++ b/src/net/sourceforge/plantuml/creole/command/CommandCreoleUrl.java @@ -46,15 +46,14 @@ import net.sourceforge.plantuml.creole.legacy.StripeSimple; public class CommandCreoleUrl implements Command { - private final Pattern2 pattern; + private static final Pattern2 pattern = MyPattern.cmpile("^(" + UrlBuilder.getRegexp() + ")"); private final ISkinSimple skinParam; public static Command create(ISkinSimple skinParam) { - return new CommandCreoleUrl(skinParam, "^(" + UrlBuilder.getRegexp() + ")"); + return new CommandCreoleUrl(skinParam); } - private CommandCreoleUrl(ISkinSimple skinParam, String p) { - this.pattern = MyPattern.cmpile(p); + private CommandCreoleUrl(ISkinSimple skinParam) { this.skinParam = skinParam; } diff --git a/src/net/sourceforge/plantuml/creole/legacy/PSystemCreole.java b/src/net/sourceforge/plantuml/creole/legacy/PSystemCreole.java index 91afb3f2b..212851684 100644 --- a/src/net/sourceforge/plantuml/creole/legacy/PSystemCreole.java +++ b/src/net/sourceforge/plantuml/creole/legacy/PSystemCreole.java @@ -44,6 +44,7 @@ import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.SkinParam; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.creole.Parser; import net.sourceforge.plantuml.creole.Sheet; @@ -58,7 +59,8 @@ public class PSystemCreole extends PlainDiagram { private final List lines = new ArrayList<>(); - public PSystemCreole() { + public PSystemCreole(UmlSource source) { + super(source); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/creole/legacy/PSystemCreoleFactory.java b/src/net/sourceforge/plantuml/creole/legacy/PSystemCreoleFactory.java index 42be17322..f9f200688 100644 --- a/src/net/sourceforge/plantuml/creole/legacy/PSystemCreoleFactory.java +++ b/src/net/sourceforge/plantuml/creole/legacy/PSystemCreoleFactory.java @@ -37,6 +37,7 @@ package net.sourceforge.plantuml.creole.legacy; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemCreoleFactory extends PSystemBasicFactory { @@ -44,16 +45,16 @@ public class PSystemCreoleFactory extends PSystemBasicFactory { super(DiagramType.CREOLE); } - public PSystemCreole init(String startLine) { + @Override + public PSystemCreole initDiagram(UmlSource source, String startLine) { if (getDiagramType() == DiagramType.CREOLE) { - return new PSystemCreole(); + return new PSystemCreole(source); } - return null; } @Override - public PSystemCreole executeLine(PSystemCreole system, String line) { + public PSystemCreole executeLine(UmlSource source, PSystemCreole system, String line) { system.doCommandLine(line); return system; } diff --git a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java index 16993ad1f..8250d9617 100644 --- a/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java +++ b/src/net/sourceforge/plantuml/cucadiagram/CucaDiagram.java @@ -55,6 +55,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.cucadiagram.dot.CucaDiagramTxtMaker; import net.sourceforge.plantuml.cucadiagram.entity.EntityFactory; @@ -121,8 +122,8 @@ public abstract class CucaDiagram extends UmlDiagram implements GroupHierarchy, return ident; } - public CucaDiagram(UmlDiagramType type, ISkinSimple orig) { - super(type, orig); + public CucaDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) { + super(source, type, orig); this.stacks2.add(Ident.empty()); } diff --git a/src/net/sourceforge/plantuml/dedication/Noise.java b/src/net/sourceforge/plantuml/dedication/Noise.java index 9ec2dfc41..75f3a4248 100644 --- a/src/net/sourceforge/plantuml/dedication/Noise.java +++ b/src/net/sourceforge/plantuml/dedication/Noise.java @@ -35,9 +35,9 @@ */ package net.sourceforge.plantuml.dedication; -import ext.plantuml.com.at.gadermaier.argon2.Argon2; -import ext.plantuml.com.at.gadermaier.argon2.Argon2Factory; -import ext.plantuml.com.at.gadermaier.argon2.model.Argon2Type; +import net.sourceforge.plantuml.argon2.Argon2; +import net.sourceforge.plantuml.argon2.Argon2Factory; +import net.sourceforge.plantuml.argon2.model.Argon2Type; import net.sourceforge.plantuml.utils.MTRandom; public class Noise { diff --git a/src/net/sourceforge/plantuml/dedication/PSystemDedication.java b/src/net/sourceforge/plantuml/dedication/PSystemDedication.java index a84139b79..503879753 100644 --- a/src/net/sourceforge/plantuml/dedication/PSystemDedication.java +++ b/src/net/sourceforge/plantuml/dedication/PSystemDedication.java @@ -45,6 +45,7 @@ import javax.imageio.stream.ImageInputStream; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.security.ImageIO; import net.sourceforge.plantuml.ugraphic.AffineTransformType; @@ -56,7 +57,8 @@ public class PSystemDedication extends PlainDiagram { private final BufferedImage img; - public PSystemDedication(BufferedImage img) { + public PSystemDedication(UmlSource source, BufferedImage img) { + super(source); this.img = Objects.requireNonNull(img); } diff --git a/src/net/sourceforge/plantuml/dedication/PSystemDedicationFactory.java b/src/net/sourceforge/plantuml/dedication/PSystemDedicationFactory.java index 43e16f6e3..0a990c00b 100644 --- a/src/net/sourceforge/plantuml/dedication/PSystemDedicationFactory.java +++ b/src/net/sourceforge/plantuml/dedication/PSystemDedicationFactory.java @@ -39,14 +39,15 @@ import java.awt.image.BufferedImage; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemDedicationFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final BufferedImage dedication = Dedications.get(line); if (dedication != null) { - return new PSystemDedication(dedication); + return new PSystemDedication(source, dedication); } return null; } diff --git a/src/net/sourceforge/plantuml/definition/PSystemDefinition.java b/src/net/sourceforge/plantuml/definition/PSystemDefinition.java index 34c947f67..90cff6a71 100644 --- a/src/net/sourceforge/plantuml/definition/PSystemDefinition.java +++ b/src/net/sourceforge/plantuml/definition/PSystemDefinition.java @@ -43,6 +43,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.SpriteContainerEmpty; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.HorizontalAlignment; @@ -56,7 +57,8 @@ public class PSystemDefinition extends PlainDiagram implements UDrawable { private final List lines = new ArrayList<>(); private final String startLine; - public PSystemDefinition(String startLine) { + public PSystemDefinition(UmlSource source, String startLine) { + super(source); this.startLine = startLine; } diff --git a/src/net/sourceforge/plantuml/definition/PSystemDefinitionFactory.java b/src/net/sourceforge/plantuml/definition/PSystemDefinitionFactory.java index c6b2253f1..807e68cb5 100644 --- a/src/net/sourceforge/plantuml/definition/PSystemDefinitionFactory.java +++ b/src/net/sourceforge/plantuml/definition/PSystemDefinitionFactory.java @@ -37,6 +37,7 @@ package net.sourceforge.plantuml.definition; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemDefinitionFactory extends PSystemBasicFactory { @@ -44,15 +45,16 @@ public class PSystemDefinitionFactory extends PSystemBasicFactory\\>)?"), // RegexLeaf.spaceZeroOrMore(), // @@ -108,7 +108,7 @@ public class CommandCreateElementMultilines extends CommandMultilines2\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementParenthesis.java b/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementParenthesis.java index e1d401d98..3c437a9ed 100644 --- a/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementParenthesis.java +++ b/src/net/sourceforge/plantuml/descdiagram/command/CommandCreateElementParenthesis.java @@ -131,13 +131,6 @@ public class CommandCreateElementParenthesis extends SingleLineCommand2 { private static RegexLeaf getGroup(String name) { return new RegexLeaf(name, - "([\\p{L}0-9_.]+|\\(\\)[%s]*[\\p{L}0-9_.]+|\\(\\)[%s]*[%g][^%g]+[%g]|:[^:]+:|(?!\\[\\*\\])\\[[^\\[\\]]+\\]|\\((?!\\*\\))[^)]+\\))"); + "([%pLN_.]+|\\(\\)[%s]*[%pLN_.]+|\\(\\)[%s]*[%g][^%g]+[%g]|:[^:]+:|(?!\\[\\*\\])\\[[^\\[\\]]+\\]|\\((?!\\*\\))[^)]+\\))"); } @Override diff --git a/src/net/sourceforge/plantuml/descdiagram/command/CommandNewpage.java b/src/net/sourceforge/plantuml/descdiagram/command/CommandNewpage.java index ed9c29ee6..f453ed834 100644 --- a/src/net/sourceforge/plantuml/descdiagram/command/CommandNewpage.java +++ b/src/net/sourceforge/plantuml/descdiagram/command/CommandNewpage.java @@ -63,11 +63,11 @@ public class CommandNewpage extends SingleLineCommand2 { @Override protected CommandExecutionResult executeArg(UmlDiagram diagram, LineLocation location, RegexResult arg) { final int dpi = diagram.getSkinParam().getDpi(); - final UmlDiagram emptyDiagram = (UmlDiagram) factory.createEmptyDiagram(); + final UmlDiagram emptyDiagram = (UmlDiagram) factory.createEmptyDiagram(diagram.getSource(), diagram.getSkinParam()); if (dpi != 96) { emptyDiagram.setParam("dpi", "" + dpi); } - NewpagedDiagram result = new NewpagedDiagram(diagram, emptyDiagram); + NewpagedDiagram result = new NewpagedDiagram(diagram.getSource(), diagram, emptyDiagram); return CommandExecutionResult.newDiagram(result); } } diff --git a/src/net/sourceforge/plantuml/directdot/PSystemDot.java b/src/net/sourceforge/plantuml/directdot/PSystemDot.java index 1d9672c1e..1997a0f57 100644 --- a/src/net/sourceforge/plantuml/directdot/PSystemDot.java +++ b/src/net/sourceforge/plantuml/directdot/PSystemDot.java @@ -34,6 +34,8 @@ */ package net.sourceforge.plantuml.directdot; +import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainImageBuilder; + import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; @@ -46,6 +48,7 @@ import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.dot.ExeState; import net.sourceforge.plantuml.cucadiagram.dot.Graphviz; import net.sourceforge.plantuml.cucadiagram.dot.GraphvizUtils; @@ -53,13 +56,12 @@ import net.sourceforge.plantuml.cucadiagram.dot.ProcessState; import net.sourceforge.plantuml.graphic.GraphicStrings; import net.sourceforge.plantuml.graphic.TextBlock; -import static net.sourceforge.plantuml.ugraphic.ImageBuilder.plainImageBuilder; - public class PSystemDot extends AbstractPSystem { private final String data; - public PSystemDot(String data) { + public PSystemDot(UmlSource source, String data) { + super(source); this.data = data; } diff --git a/src/net/sourceforge/plantuml/directdot/PSystemDotFactory.java b/src/net/sourceforge/plantuml/directdot/PSystemDotFactory.java index adfbd9b75..166bebd52 100644 --- a/src/net/sourceforge/plantuml/directdot/PSystemDotFactory.java +++ b/src/net/sourceforge/plantuml/directdot/PSystemDotFactory.java @@ -36,6 +36,7 @@ package net.sourceforge.plantuml.directdot; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemDotFactory extends PSystemBasicFactory { @@ -46,23 +47,23 @@ public class PSystemDotFactory extends PSystemBasicFactory { } @Override - public PSystemDot init(String startLine) { + public PSystemDot initDiagram(UmlSource source, String startLine) { data = null; return null; } @Override - public PSystemDot executeLine(PSystemDot system, String line) { + public PSystemDot executeLine(UmlSource source, PSystemDot system, String line) { if (system == null && line.matches("(strict\\s+)?(di)?graph\\s+\"?[-\\w]+\"?\\s*\\{")) { data = new StringBuilder(line); data.append("\n"); - return new PSystemDot(data.toString()); + return new PSystemDot(source, data.toString()); } if (data == null || system == null) { return null; } data.append(line); data.append("\n"); - return new PSystemDot(data.toString()); + return new PSystemDot(source, data.toString()); } } diff --git a/src/net/sourceforge/plantuml/ditaa/PSystemDitaa.java b/src/net/sourceforge/plantuml/ditaa/PSystemDitaa.java index 93bc1f65e..2d54b6c13 100644 --- a/src/net/sourceforge/plantuml/ditaa/PSystemDitaa.java +++ b/src/net/sourceforge/plantuml/ditaa/PSystemDitaa.java @@ -50,6 +50,7 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.security.ImageIO; import net.sourceforge.plantuml.svek.GraphvizCrash; @@ -62,7 +63,8 @@ public class PSystemDitaa extends AbstractPSystem { private final float scale; private final boolean performSeparationOfCommonEdges; - public PSystemDitaa(String data, boolean performSeparationOfCommonEdges, boolean dropShadows, float scale) { + public PSystemDitaa(UmlSource source, String data, boolean performSeparationOfCommonEdges, boolean dropShadows, float scale) { + super(source); this.data = data; this.dropShadows = dropShadows; this.performSeparationOfCommonEdges = performSeparationOfCommonEdges; @@ -80,7 +82,7 @@ public class PSystemDitaa extends AbstractPSystem { } PSystemDitaa add(String line) { - return new PSystemDitaa(data + line + BackSlash.NEWLINE, performSeparationOfCommonEdges, dropShadows, scale); + return new PSystemDitaa(getSource(), data + line + BackSlash.NEWLINE, performSeparationOfCommonEdges, dropShadows, scale); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/ditaa/PSystemDitaaFactory.java b/src/net/sourceforge/plantuml/ditaa/PSystemDitaaFactory.java index 93409fbf3..bf8d1e37e 100644 --- a/src/net/sourceforge/plantuml/ditaa/PSystemDitaaFactory.java +++ b/src/net/sourceforge/plantuml/ditaa/PSystemDitaaFactory.java @@ -39,6 +39,8 @@ import java.util.regex.Pattern; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; +import net.sourceforge.plantuml.definition.PSystemDefinition; public class PSystemDitaaFactory extends PSystemBasicFactory { @@ -53,7 +55,8 @@ public class PSystemDitaaFactory extends PSystemBasicFactory { super(diagramType); } - public PSystemDitaa init(String startLine) { + @Override + public PSystemDitaa initDiagram(UmlSource source, String startLine) { boolean performSeparationOfCommonEdges = true; if (startLine != null && (startLine.contains("-E") || startLine.contains("--no-separation"))) { performSeparationOfCommonEdges = false; @@ -66,14 +69,14 @@ public class PSystemDitaaFactory extends PSystemBasicFactory { if (getDiagramType() == DiagramType.UML) { return null; } else if (getDiagramType() == DiagramType.DITAA) { - return new PSystemDitaa("", performSeparationOfCommonEdges, dropShadows, scale); + return new PSystemDitaa(source, "", performSeparationOfCommonEdges, dropShadows, scale); } else { throw new IllegalStateException(getDiagramType().name()); } } @Override - public PSystemDitaa executeLine(PSystemDitaa system, String line) { + public PSystemDitaa executeLine(UmlSource source, PSystemDitaa system, String line) { if (system == null && (line.equals("ditaa") || line.startsWith("ditaa("))) { boolean performSeparationOfCommonEdges = true; if (line.contains("-E") || line.contains("--no-separation")) { @@ -84,7 +87,7 @@ public class PSystemDitaaFactory extends PSystemBasicFactory { dropShadows = false; } final float scale = extractScale(line); - return new PSystemDitaa("", performSeparationOfCommonEdges, dropShadows, scale); + return new PSystemDitaa(source, "", performSeparationOfCommonEdges, dropShadows, scale); } if (system == null) { return null; diff --git a/src/net/sourceforge/plantuml/donors/PSystemDonors.java b/src/net/sourceforge/plantuml/donors/PSystemDonors.java index 5a454e873..320b04038 100644 --- a/src/net/sourceforge/plantuml/donors/PSystemDonors.java +++ b/src/net/sourceforge/plantuml/donors/PSystemDonors.java @@ -52,6 +52,7 @@ import net.sourceforge.plantuml.code.StringCompressorNone; import net.sourceforge.plantuml.code.Transcoder; import net.sourceforge.plantuml.code.TranscoderImpl; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.GraphicStrings; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.TextBlock; @@ -98,6 +99,10 @@ public class PSystemDonors extends PlainDiagram { * - Noam Tamim */ + public PSystemDonors(UmlSource source) { + super(source); + } + @Override protected UDrawable getRootDrawable(FileFormatOption fileFormatOption) throws IOException { final List cols = getCols(getDonors(), COLS, FREE_LINES); @@ -155,8 +160,8 @@ public class PSystemDonors extends PlainDiagram { return new DiagramDescription("(Donors)"); } - public static PSystemDonors create() { - return new PSystemDonors(); + public static PSystemDonors create(UmlSource source) { + return new PSystemDonors(source); } } diff --git a/src/net/sourceforge/plantuml/donors/PSystemDonorsFactory.java b/src/net/sourceforge/plantuml/donors/PSystemDonorsFactory.java index c6113c44e..ef22ccc69 100644 --- a/src/net/sourceforge/plantuml/donors/PSystemDonorsFactory.java +++ b/src/net/sourceforge/plantuml/donors/PSystemDonorsFactory.java @@ -37,13 +37,14 @@ package net.sourceforge.plantuml.donors; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemDonorsFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { if (line.matches("(?i)^(donors)\\s*$")) { - return PSystemDonors.create(); + return PSystemDonors.create(source); } return null; } diff --git a/src/net/sourceforge/plantuml/donors/PSystemSkinparameterList.java b/src/net/sourceforge/plantuml/donors/PSystemSkinparameterList.java index 3e5758be2..70f8ecd17 100644 --- a/src/net/sourceforge/plantuml/donors/PSystemSkinparameterList.java +++ b/src/net/sourceforge/plantuml/donors/PSystemSkinparameterList.java @@ -44,6 +44,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.SkinParam; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.GraphicStrings; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.graphic.TextBlock; @@ -53,6 +54,10 @@ import net.sourceforge.plantuml.ugraphic.UTranslate; public class PSystemSkinparameterList extends PlainDiagram { + public PSystemSkinparameterList(UmlSource source) { + super(source); + } + @Override protected UDrawable getRootDrawable(FileFormatOption fileFormatOption) throws IOException { final List cols = getCols(getDonors(), 5); @@ -90,8 +95,8 @@ public class PSystemSkinparameterList extends PlainDiagram { return new DiagramDescription("(Parameters)"); } - public static PSystemSkinparameterList create() { - return new PSystemSkinparameterList(); + public static PSystemSkinparameterList create(UmlSource source) { + return new PSystemSkinparameterList(source); } } diff --git a/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java b/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java index 1ba34de50..5967745c8 100644 --- a/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java +++ b/src/net/sourceforge/plantuml/donors/PSystemSkinparameterListFactory.java @@ -37,13 +37,14 @@ package net.sourceforge.plantuml.donors; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemSkinparameterListFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { if (line.matches("(?i)^(skinparameters)\\s*$")) { - return PSystemSkinparameterList.create(); + return PSystemSkinparameterList.create(source); } return null; } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemAppleTwo.java b/src/net/sourceforge/plantuml/eggs/PSystemAppleTwo.java index 217ed4107..7157d4771 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemAppleTwo.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemAppleTwo.java @@ -39,12 +39,14 @@ import java.io.IOException; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.GraphicPosition; import net.sourceforge.plantuml.version.PSystemVersion; public class PSystemAppleTwo extends PlainStringsDiagram { - public PSystemAppleTwo() throws IOException { + public PSystemAppleTwo(UmlSource source) throws IOException { + super(source); strings.add(" Apple //e for ever ! "); strings.add(" "); diff --git a/src/net/sourceforge/plantuml/eggs/PSystemAppleTwoFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemAppleTwoFactory.java index 320153e27..1b7aae550 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemAppleTwoFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemAppleTwoFactory.java @@ -40,16 +40,17 @@ import java.io.IOException; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemAppleTwoFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { if (line.equalsIgnoreCase("apple //e") || line.equalsIgnoreCase("apple ][") || line.equalsIgnoreCase("apple II") || line.equalsIgnoreCase("Steve Jobs") || line.equalsIgnoreCase("Steve Wozniak")) { try { - return new PSystemAppleTwo(); + return new PSystemAppleTwo(source); } catch (IOException e) { Log.error("Error " + e); e.printStackTrace(); diff --git a/src/net/sourceforge/plantuml/eggs/PSystemCharlie.java b/src/net/sourceforge/plantuml/eggs/PSystemCharlie.java index 3b18dc0e3..e6cd4f1df 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemCharlie.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemCharlie.java @@ -40,6 +40,7 @@ import java.io.IOException; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.ugraphic.AffineTransformType; import net.sourceforge.plantuml.ugraphic.ImageBuilder; @@ -52,7 +53,8 @@ public class PSystemCharlie extends PlainDiagram { private BufferedImage image; - PSystemCharlie() { + PSystemCharlie(UmlSource source) { + super(source); image = PSystemVersion.getCharlieImage(); } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemCharlieFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemCharlieFactory.java index 551b4fc4e..1b7850941 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemCharlieFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemCharlieFactory.java @@ -37,13 +37,14 @@ package net.sourceforge.plantuml.eggs; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemCharlieFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { if (line.equalsIgnoreCase("charlie") || line.equalsIgnoreCase("jesuischarlie")) { - return new PSystemCharlie(); + return new PSystemCharlie(source); } return null; } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemColors.java b/src/net/sourceforge/plantuml/eggs/PSystemColors.java index 19d0acbac..80f887edd 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemColors.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemColors.java @@ -49,6 +49,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.SpriteContainerEmpty; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.HorizontalAlignment; @@ -74,7 +75,8 @@ public class PSystemColors extends PlainDiagram implements UDrawable { private final String paletteCentralColor; private final double size = 60; - public PSystemColors(String option) { + public PSystemColors(UmlSource source, String option) { + super(source); if (option == null) { this.paletteCentralColor = null; } else { diff --git a/src/net/sourceforge/plantuml/eggs/PSystemColorsFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemColorsFactory.java index 05f9a1f2d..59faca69e 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemColorsFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemColorsFactory.java @@ -40,15 +40,16 @@ import java.util.regex.Pattern; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemColorsFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final Pattern pattern = Pattern.compile("^colors?\\s*(#?\\w+)?\\s*$"); final Matcher matcher = pattern.matcher(line); if (matcher.matches()) { - return new PSystemColors(matcher.group(1)); + return new PSystemColors(source, matcher.group(1)); } return null; } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemEgg.java b/src/net/sourceforge/plantuml/eggs/PSystemEgg.java index f640319eb..c41b5d4a8 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemEgg.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemEgg.java @@ -37,12 +37,14 @@ package net.sourceforge.plantuml.eggs; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import java.util.StringTokenizer; public class PSystemEgg extends PlainStringsDiagram { - PSystemEgg(String sentence) { + PSystemEgg(UmlSource source, String sentence) { + super(source); final StringTokenizer st = new StringTokenizer(sentence, "|"); while (st.hasMoreTokens()) { strings.add(st.nextToken()); diff --git a/src/net/sourceforge/plantuml/eggs/PSystemEggFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemEggFactory.java index dc1db3c1c..b46b3e8eb 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemEggFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemEggFactory.java @@ -41,6 +41,7 @@ import java.util.List; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemEggFactory extends PSystemSingleLineFactory { @@ -50,12 +51,12 @@ public class PSystemEggFactory extends PSystemSingleLineFactory { EggUtils.toByteArrays("421e5b773c5df733a1194f716f18e8842155196b3b")); @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { try { for (byte[] crypted : all) { final SentenceDecoder decoder = new SentenceDecoder(line, crypted); if (decoder.isOk()) { - return new PSystemEgg(decoder.getSecret()); + return new PSystemEgg(source, decoder.getSecret()); } } } catch (UnsupportedEncodingException e) { diff --git a/src/net/sourceforge/plantuml/eggs/PSystemLost.java b/src/net/sourceforge/plantuml/eggs/PSystemLost.java index ec6d2d45e..108d7dcce 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemLost.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemLost.java @@ -37,10 +37,12 @@ package net.sourceforge.plantuml.eggs; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemLost extends PlainStringsDiagram { - public PSystemLost() { + public PSystemLost(UmlSource source) { + super(source); strings.add("Thank you for choosing Oceanic Airlines."); } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemLostFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemLostFactory.java index 226bb17cf..6ade3e34b 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemLostFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemLostFactory.java @@ -37,13 +37,14 @@ package net.sourceforge.plantuml.eggs; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemLostFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { if (line.matches("^4\\D+8\\D+15\\D+16\\D+23\\D+42")) { - return new PSystemLost(); + return new PSystemLost(source); } return null; } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemPath.java b/src/net/sourceforge/plantuml/eggs/PSystemPath.java index 023b45582..2a7ef1882 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemPath.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemPath.java @@ -42,13 +42,15 @@ import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity; public class PSystemPath extends AbstractPSystem { private final GraphicsPath path; - public PSystemPath(String s) { + public PSystemPath(UmlSource source, String s) { + super(source); this.path = new GraphicsPath(new ColorMapperIdentity(), s); } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemPathFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemPathFactory.java index 92ed509c6..76e4973a8 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemPathFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemPathFactory.java @@ -40,18 +40,19 @@ import net.sourceforge.plantuml.command.PSystemSingleLineFactory; import net.sourceforge.plantuml.command.regex.Matcher2; import net.sourceforge.plantuml.command.regex.MyPattern; import net.sourceforge.plantuml.command.regex.Pattern2; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemPathFactory extends PSystemSingleLineFactory { - final private static Pattern2 p = MyPattern.cmpile("(?i)^path[%s]+([0-9A-Za-z]+)$"); + final private static Pattern2 p = MyPattern.cmpile("^path[%s]+([0-9A-Za-z]+)$"); @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final Matcher2 m = p.matcher(line); if (m.find() == false) { return null; } - return new PSystemPath(m.group(1)); + return new PSystemPath(source, m.group(1)); } } diff --git a/src/net/sourceforge/plantuml/eggs/PSystemRIP.java b/src/net/sourceforge/plantuml/eggs/PSystemRIP.java index c8a18c474..671456138 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemRIP.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemRIP.java @@ -41,12 +41,14 @@ import java.io.InputStream; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.GraphicPosition; import net.sourceforge.plantuml.security.ImageIO; public class PSystemRIP extends PlainStringsDiagram { - public PSystemRIP() throws IOException { + public PSystemRIP(UmlSource source) throws IOException { + super(source); strings.add(" To my Grandfather,"); strings.add(" A mon grand-pere,"); strings.add(" "); diff --git a/src/net/sourceforge/plantuml/eggs/PSystemRIPFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemRIPFactory.java index 9569c996c..1c1d4e527 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemRIPFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemRIPFactory.java @@ -40,14 +40,15 @@ import java.io.IOException; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemRIPFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { if (line.equalsIgnoreCase("jean canouet")) { try { - return new PSystemRIP(); + return new PSystemRIP(source); } catch (IOException e) { Log.error("Error " + e); e.printStackTrace(); diff --git a/src/net/sourceforge/plantuml/eggs/PSystemWelcome.java b/src/net/sourceforge/plantuml/eggs/PSystemWelcome.java index 031c29e3c..1b016afc6 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemWelcome.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemWelcome.java @@ -42,6 +42,7 @@ import java.util.List; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.GraphicPosition; import net.sourceforge.plantuml.graphic.GraphicStrings; import net.sourceforge.plantuml.graphic.UDrawable; @@ -53,7 +54,8 @@ public class PSystemWelcome extends PlainDiagram { private final List strings = new ArrayList<>(); private final GraphicPosition position; - public PSystemWelcome(GraphicPosition position) { + public PSystemWelcome(UmlSource source, GraphicPosition position) { + super(source); this.position = position; strings.add("Welcome to PlantUML!"); strings.add(" "); diff --git a/src/net/sourceforge/plantuml/eggs/PSystemWelcomeFactory.java b/src/net/sourceforge/plantuml/eggs/PSystemWelcomeFactory.java index 3efa5d4b9..5943498e0 100644 --- a/src/net/sourceforge/plantuml/eggs/PSystemWelcomeFactory.java +++ b/src/net/sourceforge/plantuml/eggs/PSystemWelcomeFactory.java @@ -35,6 +35,7 @@ */ package net.sourceforge.plantuml.eggs; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.api.PSystemFactory; import net.sourceforge.plantuml.core.Diagram; import net.sourceforge.plantuml.core.DiagramType; @@ -43,9 +44,10 @@ import net.sourceforge.plantuml.graphic.GraphicPosition; public class PSystemWelcomeFactory implements PSystemFactory { - public Diagram createSystem(UmlSource source) { + @Override + public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { if (source.getTotalLineCount() == 2) { - return new PSystemWelcome(GraphicPosition.BACKGROUND_CORNER_BOTTOM_RIGHT); + return new PSystemWelcome(source, GraphicPosition.BACKGROUND_CORNER_BOTTOM_RIGHT); } return null; } diff --git a/src/net/sourceforge/plantuml/error/PSystemError.java b/src/net/sourceforge/plantuml/error/PSystemError.java index fde326885..06aa5f0db 100644 --- a/src/net/sourceforge/plantuml/error/PSystemError.java +++ b/src/net/sourceforge/plantuml/error/PSystemError.java @@ -60,6 +60,7 @@ import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.asciiart.UmlCharArea; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.eggs.PSystemWelcome; import net.sourceforge.plantuml.flashcode.FlashCodeFactory; @@ -100,12 +101,13 @@ public abstract class PSystemError extends PlainDiagram { protected List trace; protected ErrorUml singleError; + public PSystemError(UmlSource source) { + super(source); + } + @Override public ImageBuilder createImageBuilder(FileFormatOption fileFormatOption) throws IOException { - return super.createImageBuilder(fileFormatOption) - .blackBackcolor() - .randomPixel() - .status(FileImageData.ERROR); + return super.createImageBuilder(fileFormatOption).blackBackcolor().randomPixel().status(FileImageData.ERROR); } final protected StringLocated getLastLine() { @@ -278,7 +280,7 @@ public abstract class PSystemError extends PlainDiagram { } private TextBlockBackcolored getWelcome() throws IOException { - return new PSystemWelcome(GraphicPosition.BACKGROUND_CORNER_TOP_RIGHT).getGraphicStrings(); + return new PSystemWelcome(getSource(), GraphicPosition.BACKGROUND_CORNER_TOP_RIGHT).getGraphicStrings(); } private TextBlock addWelcome(final TextBlockBackcolored result) throws IOException { diff --git a/src/net/sourceforge/plantuml/error/PSystemErrorEmpty.java b/src/net/sourceforge/plantuml/error/PSystemErrorEmpty.java index 2eb228213..cd6147784 100644 --- a/src/net/sourceforge/plantuml/error/PSystemErrorEmpty.java +++ b/src/net/sourceforge/plantuml/error/PSystemErrorEmpty.java @@ -43,7 +43,7 @@ import net.sourceforge.plantuml.core.UmlSource; public class PSystemErrorEmpty extends PSystemError { public PSystemErrorEmpty(UmlSource source, List trace, ErrorUml singleError) { - this.setSource(source); + super(source); this.trace = trace; this.singleError = singleError; diff --git a/src/net/sourceforge/plantuml/error/PSystemErrorPreprocessor.java b/src/net/sourceforge/plantuml/error/PSystemErrorPreprocessor.java index 991beb51b..d3e3e4f00 100644 --- a/src/net/sourceforge/plantuml/error/PSystemErrorPreprocessor.java +++ b/src/net/sourceforge/plantuml/error/PSystemErrorPreprocessor.java @@ -45,8 +45,7 @@ import net.sourceforge.plantuml.core.UmlSource; public class PSystemErrorPreprocessor extends PSystemError { public PSystemErrorPreprocessor(List input, List trace) { - final DiagramType type = DiagramType.getTypeFromArobaseStart(input.get(0).getString()); - this.setSource(new UmlSource(input, type == DiagramType.UML)); + super(new UmlSource(input, DiagramType.getTypeFromArobaseStart(input.get(0).getString()) == DiagramType.UML)); this.trace = trace; this.singleError = new ErrorUml(ErrorUmlType.SYNTAX_ERROR, getLastLine().getPreprocessorError(), 0, getLastLine().getLocation()); diff --git a/src/net/sourceforge/plantuml/error/PSystemErrorUtils.java b/src/net/sourceforge/plantuml/error/PSystemErrorUtils.java index d3a03a1aa..89163e2ca 100644 --- a/src/net/sourceforge/plantuml/error/PSystemErrorUtils.java +++ b/src/net/sourceforge/plantuml/error/PSystemErrorUtils.java @@ -54,6 +54,9 @@ public class PSystemErrorUtils { } public static PSystemError merge(Collection ps) { + if (ps.size() == 0) { + throw new IllegalStateException(); + } UmlSource source = null; final List errors = new ArrayList<>(); // final List debugs = new ArrayList<>(); diff --git a/src/net/sourceforge/plantuml/error/PSystemErrorV2.java b/src/net/sourceforge/plantuml/error/PSystemErrorV2.java index 6c3108d68..3d5394430 100644 --- a/src/net/sourceforge/plantuml/error/PSystemErrorV2.java +++ b/src/net/sourceforge/plantuml/error/PSystemErrorV2.java @@ -43,7 +43,7 @@ import net.sourceforge.plantuml.core.UmlSource; public class PSystemErrorV2 extends PSystemError { public PSystemErrorV2(UmlSource source, List trace, ErrorUml singleError) { - this.setSource(source); + super(source); this.trace = trace; this.singleError = singleError; diff --git a/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java b/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java index 3d4edff63..93666521b 100644 --- a/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java +++ b/src/net/sourceforge/plantuml/flowdiagram/FlowDiagram.java @@ -35,6 +35,8 @@ */ package net.sourceforge.plantuml.flowdiagram; +import static net.sourceforge.plantuml.ugraphic.ImageBuilder.imageBuilder; + import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -49,6 +51,7 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.golem.MinMaxGolem; import net.sourceforge.plantuml.golem.Path; import net.sourceforge.plantuml.golem.Position; @@ -69,8 +72,6 @@ import net.sourceforge.plantuml.ugraphic.UShape; import net.sourceforge.plantuml.ugraphic.UTranslate; import net.sourceforge.plantuml.ugraphic.color.HColorUtils; -import static net.sourceforge.plantuml.ugraphic.ImageBuilder.imageBuilder; - public class FlowDiagram extends UmlDiagram implements TextBlock { private static double SINGLE_SIZE_X = 100; @@ -88,8 +89,8 @@ public class FlowDiagram extends UmlDiagram implements TextBlock { return new DiagramDescription("Flow Diagram"); } - public FlowDiagram() { - super(UmlDiagramType.FLOW); + public FlowDiagram(UmlSource source) { + super(source, UmlDiagramType.FLOW); } public void lineSimple(TileGeometry orientation, String idDest, String label) { diff --git a/src/net/sourceforge/plantuml/flowdiagram/FlowDiagramFactory.java b/src/net/sourceforge/plantuml/flowdiagram/FlowDiagramFactory.java index a1d707713..72e96c3c6 100644 --- a/src/net/sourceforge/plantuml/flowdiagram/FlowDiagramFactory.java +++ b/src/net/sourceforge/plantuml/flowdiagram/FlowDiagramFactory.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.flowdiagram; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class FlowDiagramFactory extends PSystemCommandFactory { @@ -49,8 +51,8 @@ public class FlowDiagramFactory extends PSystemCommandFactory { } @Override - public FlowDiagram createEmptyDiagram() { - return new FlowDiagram(); + public FlowDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new FlowDiagram(source); } @Override diff --git a/src/net/sourceforge/plantuml/font/PSystemListFonts.java b/src/net/sourceforge/plantuml/font/PSystemListFonts.java index 74b3e7ae7..2bff51c14 100644 --- a/src/net/sourceforge/plantuml/font/PSystemListFonts.java +++ b/src/net/sourceforge/plantuml/font/PSystemListFonts.java @@ -39,11 +39,13 @@ import java.awt.GraphicsEnvironment; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemListFonts extends PlainStringsDiagram { - public PSystemListFonts(String text) { + public PSystemListFonts(UmlSource source, String text) { + super(source); strings.add(" Fonts available:"); strings.add(" "); // final Font fonts[] = diff --git a/src/net/sourceforge/plantuml/font/PSystemListFontsFactory.java b/src/net/sourceforge/plantuml/font/PSystemListFontsFactory.java index 821a23d67..784a09199 100644 --- a/src/net/sourceforge/plantuml/font/PSystemListFontsFactory.java +++ b/src/net/sourceforge/plantuml/font/PSystemListFontsFactory.java @@ -38,16 +38,17 @@ package net.sourceforge.plantuml.font; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemListFontsFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final String lineLower = StringUtils.goLowerCase(line); if (lineLower.equals("listfont") || lineLower.equals("listfonts") || lineLower.startsWith("listfont ") || lineLower.startsWith("listfonts ")) { final int idx = line.indexOf(' '); - return new PSystemListFonts(idx == -1 ? "This is a test" : StringUtils.trin(line.substring(idx))); + return new PSystemListFonts(source, idx == -1 ? "This is a test" : StringUtils.trin(line.substring(idx))); } return null; } diff --git a/src/net/sourceforge/plantuml/gitlog/GitDiagram.java b/src/net/sourceforge/plantuml/gitlog/GitDiagram.java index 29a922bde..d88b7c328 100644 --- a/src/net/sourceforge/plantuml/gitlog/GitDiagram.java +++ b/src/net/sourceforge/plantuml/gitlog/GitDiagram.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.svek.TextBlockBackcolored; @@ -56,8 +57,8 @@ public class GitDiagram extends UmlDiagram { private final Collection gnodes; - public GitDiagram(GitTextArea textArea) { - super(UmlDiagramType.GIT); + public GitDiagram(UmlSource source, GitTextArea textArea) { + super(source, UmlDiagramType.GIT); this.gnodes = new GNodeBuilder(textArea.getAllCommits()).getAllNodes(); new GNodeBuilder(textArea.getAllCommits()); } diff --git a/src/net/sourceforge/plantuml/gitlog/GitDiagramFactory.java b/src/net/sourceforge/plantuml/gitlog/GitDiagramFactory.java index 5aca315f9..54b311fe8 100644 --- a/src/net/sourceforge/plantuml/gitlog/GitDiagramFactory.java +++ b/src/net/sourceforge/plantuml/gitlog/GitDiagramFactory.java @@ -37,6 +37,7 @@ package net.sourceforge.plantuml.gitlog; import java.util.Iterator; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.StringLocated; import net.sourceforge.plantuml.command.PSystemAbstractFactory; import net.sourceforge.plantuml.core.Diagram; @@ -49,7 +50,8 @@ public class GitDiagramFactory extends PSystemAbstractFactory { super(DiagramType.GIT); } - public Diagram createSystem(UmlSource source) { + @Override + public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { final GitTextArea textArea = new GitTextArea(); final Iterator it = source.iterator2(); @@ -61,7 +63,7 @@ public class GitDiagramFactory extends PSystemAbstractFactory { } textArea.add(line); } - return new GitDiagram(textArea); + return new GitDiagram(source, textArea); } } diff --git a/src/net/sourceforge/plantuml/graphic/ColorAndSizeChange.java b/src/net/sourceforge/plantuml/graphic/ColorAndSizeChange.java index fe9c778d1..9b3618ce7 100644 --- a/src/net/sourceforge/plantuml/graphic/ColorAndSizeChange.java +++ b/src/net/sourceforge/plantuml/graphic/ColorAndSizeChange.java @@ -44,9 +44,9 @@ import net.sourceforge.plantuml.ugraphic.color.HColorSet; class ColorAndSizeChange implements FontChange { - static final Pattern2 colorPattern = MyPattern.cmpile("(?i)color\\s*=\\s*[%g]?(#[0-9a-fA-F]{6}|\\w+)[%g]?"); + static final Pattern2 colorPattern = MyPattern.cmpile("color\\s*=\\s*[%g]?(#[0-9a-fA-F]{6}|\\w+)[%g]?"); - static final Pattern2 sizePattern = MyPattern.cmpile("(?i)size\\s*=\\s*[%g]?(\\d+)[%g]?"); + static final Pattern2 sizePattern = MyPattern.cmpile("size\\s*=\\s*[%g]?(\\d+)[%g]?"); private final HColor color; private final Integer size; diff --git a/src/net/sourceforge/plantuml/graphic/ColorChange.java b/src/net/sourceforge/plantuml/graphic/ColorChange.java index 6a4b02123..46ada2c2a 100644 --- a/src/net/sourceforge/plantuml/graphic/ColorChange.java +++ b/src/net/sourceforge/plantuml/graphic/ColorChange.java @@ -44,7 +44,7 @@ import net.sourceforge.plantuml.ugraphic.color.HColorSet; class ColorChange implements FontChange { - static private final Pattern2 colorPattern = MyPattern.cmpile("(?i)" + Splitter.fontColorPattern2); + static private final Pattern2 colorPattern = MyPattern.cmpile(Splitter.fontColorPattern2); private final HColor color; diff --git a/src/net/sourceforge/plantuml/graphic/FontFamilyChange.java b/src/net/sourceforge/plantuml/graphic/FontFamilyChange.java index 55fd98bab..80e153c44 100644 --- a/src/net/sourceforge/plantuml/graphic/FontFamilyChange.java +++ b/src/net/sourceforge/plantuml/graphic/FontFamilyChange.java @@ -42,7 +42,7 @@ import net.sourceforge.plantuml.command.regex.Pattern2; class FontFamilyChange implements FontChange { - static private final Pattern2 colorPattern = MyPattern.cmpile("(?i)" + Splitter.fontFamilyPattern); + static private final Pattern2 colorPattern = MyPattern.cmpile(Splitter.fontFamilyPattern); private final String family; diff --git a/src/net/sourceforge/plantuml/graphic/HtmlCommandFactory.java b/src/net/sourceforge/plantuml/graphic/HtmlCommandFactory.java index b24a54cdb..9a2cec54c 100644 --- a/src/net/sourceforge/plantuml/graphic/HtmlCommandFactory.java +++ b/src/net/sourceforge/plantuml/graphic/HtmlCommandFactory.java @@ -36,7 +36,6 @@ package net.sourceforge.plantuml.graphic; import java.util.EnumSet; -import java.util.regex.Pattern; import net.sourceforge.plantuml.ThemeStyle; import net.sourceforge.plantuml.Url; @@ -63,11 +62,11 @@ class HtmlCommandFactory { sbRemoveStyle.append(style.getDeactivationPattern()); } - addStyle = MyPattern.cmpile(sbAddStyle.toString(), Pattern.CASE_INSENSITIVE); - removeStyle = MyPattern.cmpile(sbRemoveStyle.toString(), Pattern.CASE_INSENSITIVE); + addStyle = MyPattern.cmpile(sbAddStyle.toString()); + removeStyle = MyPattern.cmpile(sbRemoveStyle.toString()); } - private Pattern2 htmlTag = MyPattern.cmpile(Splitter.htmlTag, Pattern.CASE_INSENSITIVE); + private Pattern2 htmlTag = MyPattern.cmpile(Splitter.htmlTag); HtmlCommand getHtmlCommand(ThemeStyle themeStyle, String s) { if (htmlTag.matcher(s).matches() == false) { diff --git a/src/net/sourceforge/plantuml/graphic/Img.java b/src/net/sourceforge/plantuml/graphic/Img.java index c05c7dcb0..8b4a42ac2 100644 --- a/src/net/sourceforge/plantuml/graphic/Img.java +++ b/src/net/sourceforge/plantuml/graphic/Img.java @@ -49,11 +49,11 @@ import net.sourceforge.plantuml.security.SURL; public class Img implements HtmlCommand { - final static private Pattern2 srcPattern = MyPattern.cmpile("(?i)src[%s]*=[%s]*[\"%q]?([^%s\">]+)[\"%q]?"); - final static private Pattern2 vspacePattern = MyPattern.cmpile("(?i)vspace[%s]*=[%s]*[\"%q]?(\\d+)[\"%q]?"); + final static private Pattern2 srcPattern = MyPattern.cmpile("src[%s]*=[%s]*[\"%q]?([^%s\">]+)[\"%q]?"); + final static private Pattern2 vspacePattern = MyPattern.cmpile("vspace[%s]*=[%s]*[\"%q]?(\\d+)[\"%q]?"); final static private Pattern2 valignPattern = MyPattern - .cmpile("(?i)valign[%s]*=[%s]*[\"%q]?(top|bottom|middle)[\"%q]?"); - final static private Pattern2 noSrcColonPattern = MyPattern.cmpile("(?i)" + Splitter.imgPatternNoSrcColon); + .cmpile("valign[%s]*=[%s]*[\"%q]?(top|bottom|middle)[\"%q]?"); + final static private Pattern2 noSrcColonPattern = MyPattern.cmpile(Splitter.imgPatternNoSrcColon); private final TextBlock tileImage; diff --git a/src/net/sourceforge/plantuml/graphic/SizeChange.java b/src/net/sourceforge/plantuml/graphic/SizeChange.java index 76478bee5..48c625b60 100644 --- a/src/net/sourceforge/plantuml/graphic/SizeChange.java +++ b/src/net/sourceforge/plantuml/graphic/SizeChange.java @@ -41,7 +41,7 @@ import net.sourceforge.plantuml.command.regex.Pattern2; class SizeChange implements FontChange { - static private final Pattern2 sizePattern = MyPattern.cmpile("(?i)" + Splitter.fontSizePattern2); + static private final Pattern2 sizePattern = MyPattern.cmpile(Splitter.fontSizePattern2); private final Integer size; diff --git a/src/net/sourceforge/plantuml/graphic/Splitter.java b/src/net/sourceforge/plantuml/graphic/Splitter.java index 5fa8233fb..59b4a7439 100644 --- a/src/net/sourceforge/plantuml/graphic/Splitter.java +++ b/src/net/sourceforge/plantuml/graphic/Splitter.java @@ -40,7 +40,6 @@ import java.util.Collection; import java.util.Collections; import java.util.EnumSet; import java.util.List; -import java.util.regex.Pattern; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.ThemeStyle; @@ -87,7 +86,7 @@ public class Splitter { private static final Pattern2 tagOrText; static { - final StringBuilder sb = new StringBuilder("(?i)"); + final StringBuilder sb = new StringBuilder(); for (FontStyle style : EnumSet.allOf(FontStyle.class)) { sb.append(style.getActivationPattern()); @@ -124,7 +123,7 @@ public class Splitter { sb.append(svgAttributePattern); htmlTag = sb.toString(); - tagOrText = MyPattern.cmpile(htmlTag + "|.+?(?=" + htmlTag + ")|.+$", Pattern.CASE_INSENSITIVE); + tagOrText = MyPattern.cmpile(htmlTag + "|.+?(?=" + htmlTag + ")|.+$"); } private final List splitted = new ArrayList<>(); diff --git a/src/net/sourceforge/plantuml/help/Help.java b/src/net/sourceforge/plantuml/help/Help.java index c3ededbc7..687383b5d 100644 --- a/src/net/sourceforge/plantuml/help/Help.java +++ b/src/net/sourceforge/plantuml/help/Help.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.creole.CreoleMode; import net.sourceforge.plantuml.creole.Parser; import net.sourceforge.plantuml.creole.Sheet; @@ -64,8 +65,8 @@ public class Help extends UmlDiagram { return new DiagramDescription("(Help)"); } - public Help() { - super(UmlDiagramType.HELP); + public Help(UmlSource source) { + super(source, UmlDiagramType.HELP); } @Override diff --git a/src/net/sourceforge/plantuml/help/HelpFactory.java b/src/net/sourceforge/plantuml/help/HelpFactory.java index 44fb99e82..a7f9669a2 100644 --- a/src/net/sourceforge/plantuml/help/HelpFactory.java +++ b/src/net/sourceforge/plantuml/help/HelpFactory.java @@ -38,14 +38,16 @@ package net.sourceforge.plantuml.help; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; +import net.sourceforge.plantuml.core.UmlSource; public class HelpFactory extends PSystemCommandFactory { @Override - public Help createEmptyDiagram() { - return new Help(); + public Help createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new Help(source); } @Override diff --git a/src/net/sourceforge/plantuml/jcckit/PSystemJcckit.java b/src/net/sourceforge/plantuml/jcckit/PSystemJcckit.java index 92de0be05..44d4861a7 100644 --- a/src/net/sourceforge/plantuml/jcckit/PSystemJcckit.java +++ b/src/net/sourceforge/plantuml/jcckit/PSystemJcckit.java @@ -49,6 +49,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.security.ImageIO; public class PSystemJcckit extends AbstractPSystem { @@ -57,7 +58,8 @@ public class PSystemJcckit extends AbstractPSystem { private final int width; private final int height; - public PSystemJcckit(Properties p, int width, int height) { + public PSystemJcckit(UmlSource source, Properties p, int width, int height) { + super(source); this.width = width; this.height = height; prop = new PropertiesBasedConfigData(p); diff --git a/src/net/sourceforge/plantuml/jcckit/PSystemJcckitFactory.java b/src/net/sourceforge/plantuml/jcckit/PSystemJcckitFactory.java index 8adae1979..96f1a827e 100644 --- a/src/net/sourceforge/plantuml/jcckit/PSystemJcckitFactory.java +++ b/src/net/sourceforge/plantuml/jcckit/PSystemJcckitFactory.java @@ -47,6 +47,8 @@ import net.sourceforge.plantuml.command.regex.Matcher2; import net.sourceforge.plantuml.command.regex.MyPattern; import net.sourceforge.plantuml.command.regex.Pattern2; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; +import net.sourceforge.plantuml.ditaa.PSystemDitaa; public class PSystemJcckitFactory extends PSystemBasicFactory { @@ -58,7 +60,8 @@ public class PSystemJcckitFactory extends PSystemBasicFactory { super(diagramType); } - public PSystemJcckit init(String startLine) { + @Override + public PSystemJcckit initDiagram(UmlSource source, String startLine) { this.data = null; this.width = 640; this.height = 400; @@ -67,7 +70,7 @@ public class PSystemJcckitFactory extends PSystemBasicFactory { } else if (getDiagramType() == DiagramType.JCCKIT) { extractDimension(startLine); data = new StringBuilder(); - return createSystem(); + return createSystem(source); } else { throw new IllegalStateException(getDiagramType().name()); } @@ -88,7 +91,7 @@ public class PSystemJcckitFactory extends PSystemBasicFactory { return "" + width + "-" + height; } - private PSystemJcckit createSystem() { + private PSystemJcckit createSystem(UmlSource source) { final Properties p = new Properties(); try { p.load(new StringReader(data.toString())); @@ -99,22 +102,22 @@ public class PSystemJcckitFactory extends PSystemBasicFactory { e.printStackTrace(); return null; } - return new PSystemJcckit(p, width, height); + return new PSystemJcckit(source, p, width, height); } @Override - public PSystemJcckit executeLine(PSystemJcckit system, String line) { + public PSystemJcckit executeLine(UmlSource source, PSystemJcckit system, String line) { if (system == null && line.startsWith("jcckit")) { data = new StringBuilder(); extractDimension(line); - return createSystem(); + return createSystem(source); } if (data == null) { return null; } data.append(StringUtils.trin(line)); data.append(BackSlash.NEWLINE); - return createSystem(); + return createSystem(source); } } diff --git a/src/net/sourceforge/plantuml/jsondiagram/JsonDiagram.java b/src/net/sourceforge/plantuml/jsondiagram/JsonDiagram.java index 872a85b47..49f312b54 100644 --- a/src/net/sourceforge/plantuml/jsondiagram/JsonDiagram.java +++ b/src/net/sourceforge/plantuml/jsondiagram/JsonDiagram.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.TitledDiagram; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.HorizontalAlignment; @@ -65,8 +66,8 @@ public class JsonDiagram extends TitledDiagram { private final JsonValue root; private final List highlighted; - public JsonDiagram(UmlDiagramType type, JsonValue json, List highlighted) { - super(type); + public JsonDiagram(UmlSource source, UmlDiagramType type, JsonValue json, List highlighted) { + super(source, type); if (json != null && (json.isString() || json.isBoolean() || json.isNumber())) { this.root = new JsonArray(); ((JsonArray) this.root).add(json); diff --git a/src/net/sourceforge/plantuml/jsondiagram/JsonDiagramFactory.java b/src/net/sourceforge/plantuml/jsondiagram/JsonDiagramFactory.java index 01ea9723a..daca00169 100644 --- a/src/net/sourceforge/plantuml/jsondiagram/JsonDiagramFactory.java +++ b/src/net/sourceforge/plantuml/jsondiagram/JsonDiagramFactory.java @@ -40,6 +40,7 @@ import java.util.Iterator; import java.util.List; import net.sourceforge.plantuml.BackSlash; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.PSystemAbstractFactory; import net.sourceforge.plantuml.core.Diagram; @@ -55,7 +56,8 @@ public class JsonDiagramFactory extends PSystemAbstractFactory { super(DiagramType.JSON); } - public Diagram createSystem(UmlSource source) { + @Override + public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { final List highlighted = new ArrayList<>(); StyleExtractor styleExtractor = null; JsonValue json; @@ -83,11 +85,10 @@ public class JsonDiagramFactory extends PSystemAbstractFactory { } catch (ParseException e) { json = null; } - final JsonDiagram result = new JsonDiagram(UmlDiagramType.JSON, json, highlighted); + final JsonDiagram result = new JsonDiagram(source, UmlDiagramType.JSON, json, highlighted); if (styleExtractor != null) { styleExtractor.applyStyles(result.getSkinParam()); } - result.setSource(source); return result; } diff --git a/src/net/sourceforge/plantuml/logo/PSystemLogo.java b/src/net/sourceforge/plantuml/logo/PSystemLogo.java index 0a07d5f55..1c0afed03 100644 --- a/src/net/sourceforge/plantuml/logo/PSystemLogo.java +++ b/src/net/sourceforge/plantuml/logo/PSystemLogo.java @@ -48,6 +48,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.api.ImageDataSimple; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.png.PngIO; import net.sourceforge.plantuml.ugraphic.UGraphic; import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity; @@ -58,7 +59,8 @@ public class PSystemLogo extends AbstractPSystem { private final List lines = new ArrayList<>(); - public PSystemLogo() { + public PSystemLogo(UmlSource source) { + super(source); } @Override diff --git a/src/net/sourceforge/plantuml/logo/PSystemLogoFactory.java b/src/net/sourceforge/plantuml/logo/PSystemLogoFactory.java index 321aff1f9..657168f11 100644 --- a/src/net/sourceforge/plantuml/logo/PSystemLogoFactory.java +++ b/src/net/sourceforge/plantuml/logo/PSystemLogoFactory.java @@ -36,14 +36,20 @@ package net.sourceforge.plantuml.logo; import net.sourceforge.plantuml.command.PSystemBasicFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemLogoFactory extends PSystemBasicFactory { @Override - public PSystemLogo executeLine(PSystemLogo system, String line) { + public PSystemLogo initDiagram(UmlSource source, String startLine) { + return null; + } + + @Override + public PSystemLogo executeLine(UmlSource source, PSystemLogo system, String line) { if (system == null && line.equalsIgnoreCase("logo")) { - return new PSystemLogo(); + return new PSystemLogo(source); } if (system == null) { return null; diff --git a/src/net/sourceforge/plantuml/math/PSystemLatex.java b/src/net/sourceforge/plantuml/math/PSystemLatex.java index ed9aa8f7a..597e660ed 100644 --- a/src/net/sourceforge/plantuml/math/PSystemLatex.java +++ b/src/net/sourceforge/plantuml/math/PSystemLatex.java @@ -44,6 +44,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity; import net.sourceforge.plantuml.ugraphic.color.HColor; import net.sourceforge.plantuml.ugraphic.color.HColorSet; @@ -55,7 +56,8 @@ public class PSystemLatex extends AbstractPSystem { private Color color = Color.BLACK; private Color backColor = Color.WHITE; - public PSystemLatex() { + public PSystemLatex(UmlSource source) { + super(source); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/math/PSystemLatexFactory.java b/src/net/sourceforge/plantuml/math/PSystemLatexFactory.java index f981bd791..8df613597 100644 --- a/src/net/sourceforge/plantuml/math/PSystemLatexFactory.java +++ b/src/net/sourceforge/plantuml/math/PSystemLatexFactory.java @@ -37,6 +37,7 @@ package net.sourceforge.plantuml.math; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemLatexFactory extends PSystemBasicFactory { @@ -44,16 +45,17 @@ public class PSystemLatexFactory extends PSystemBasicFactory { super(type); } - public PSystemLatex init(String startLine) { + @Override + public PSystemLatex initDiagram(UmlSource source, String startLine) { if (getDiagramType() == DiagramType.LATEX) { - return new PSystemLatex(); + return new PSystemLatex(source); } return null; } @Override - public PSystemLatex executeLine(PSystemLatex system, String line) { + public PSystemLatex executeLine(UmlSource source, PSystemLatex system, String line) { system.doCommandLine(line); return system; } diff --git a/src/net/sourceforge/plantuml/math/PSystemMath.java b/src/net/sourceforge/plantuml/math/PSystemMath.java index 6f4fcfbfb..f9e98d2c5 100644 --- a/src/net/sourceforge/plantuml/math/PSystemMath.java +++ b/src/net/sourceforge/plantuml/math/PSystemMath.java @@ -44,6 +44,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.ugraphic.color.ColorMapperIdentity; import net.sourceforge.plantuml.ugraphic.color.HColor; import net.sourceforge.plantuml.ugraphic.color.HColorSet; @@ -55,7 +56,8 @@ public class PSystemMath extends AbstractPSystem { private Color color = Color.BLACK; private Color backColor = Color.WHITE; - public PSystemMath() { + public PSystemMath(UmlSource source) { + super(source); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/math/PSystemMathFactory.java b/src/net/sourceforge/plantuml/math/PSystemMathFactory.java index 166008c26..7d266bfe0 100644 --- a/src/net/sourceforge/plantuml/math/PSystemMathFactory.java +++ b/src/net/sourceforge/plantuml/math/PSystemMathFactory.java @@ -37,6 +37,7 @@ package net.sourceforge.plantuml.math; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemMathFactory extends PSystemBasicFactory { @@ -44,16 +45,17 @@ public class PSystemMathFactory extends PSystemBasicFactory { super(type); } - public PSystemMath init(String startLine) { + @Override + public PSystemMath initDiagram(UmlSource source, String startLine) { if (getDiagramType() == DiagramType.MATH) { - return new PSystemMath(); + return new PSystemMath(source); } return null; } @Override - public PSystemMath executeLine(PSystemMath system, String line) { + public PSystemMath executeLine(UmlSource source, PSystemMath system, String line) { system.doCommandLine(line); return system; } diff --git a/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java b/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java index f6ac762fa..f11a6b44f 100644 --- a/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java +++ b/src/net/sourceforge/plantuml/mindmap/MindMapDiagram.java @@ -48,6 +48,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; @@ -74,8 +75,8 @@ public class MindMapDiagram extends UmlDiagram { return new DiagramDescription("MindMap"); } - public MindMapDiagram() { - super(UmlDiagramType.MINDMAP); + public MindMapDiagram(UmlSource source) { + super(source, UmlDiagramType.MINDMAP); } @Override diff --git a/src/net/sourceforge/plantuml/mindmap/MindMapDiagramFactory.java b/src/net/sourceforge/plantuml/mindmap/MindMapDiagramFactory.java index 137767ec4..1cf02ebcb 100644 --- a/src/net/sourceforge/plantuml/mindmap/MindMapDiagramFactory.java +++ b/src/net/sourceforge/plantuml/mindmap/MindMapDiagramFactory.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.mindmap; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class MindMapDiagramFactory extends PSystemCommandFactory { @@ -64,8 +66,8 @@ public class MindMapDiagramFactory extends PSystemCommandFactory { } @Override - public MindMapDiagram createEmptyDiagram() { - return new MindMapDiagram(); + public MindMapDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new MindMapDiagram(source); } } diff --git a/src/net/sourceforge/plantuml/nwdiag/CommandElement.java b/src/net/sourceforge/plantuml/nwdiag/CommandElement.java index 898c2a453..566a5c3e6 100644 --- a/src/net/sourceforge/plantuml/nwdiag/CommandElement.java +++ b/src/net/sourceforge/plantuml/nwdiag/CommandElement.java @@ -52,7 +52,7 @@ public class CommandElement extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandElement.class.getName(), RegexLeaf.start(), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_]+)"), // + new RegexLeaf("NAME", "([%pLN_]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("DEFINITION", "(\\[(.*)\\])?"), // new RegexLeaf(";?"), RegexLeaf.end()); diff --git a/src/net/sourceforge/plantuml/nwdiag/CommandGroup.java b/src/net/sourceforge/plantuml/nwdiag/CommandGroup.java index 6648c1101..3fdd7e9e5 100644 --- a/src/net/sourceforge/plantuml/nwdiag/CommandGroup.java +++ b/src/net/sourceforge/plantuml/nwdiag/CommandGroup.java @@ -54,7 +54,7 @@ public class CommandGroup extends SingleLineCommand2 { RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("group"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_]+)?"), // + new RegexLeaf("NAME", "([%pLN_]+)?"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("\\{"), RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/nwdiag/CommandLink.java b/src/net/sourceforge/plantuml/nwdiag/CommandLink.java index 3f401ac61..b2eccfb6d 100644 --- a/src/net/sourceforge/plantuml/nwdiag/CommandLink.java +++ b/src/net/sourceforge/plantuml/nwdiag/CommandLink.java @@ -52,11 +52,11 @@ public class CommandLink extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandLink.class.getName(), RegexLeaf.start(), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("NAME1", "([\\p{L}0-9_]+)"), // + new RegexLeaf("NAME1", "([%pLN_]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("--"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("NAME2", "([\\p{L}0-9_]+)"), // + new RegexLeaf("NAME2", "([%pLN_]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf(";?"), RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/nwdiag/CommandNetwork.java b/src/net/sourceforge/plantuml/nwdiag/CommandNetwork.java index 3a7479058..70c1c442c 100644 --- a/src/net/sourceforge/plantuml/nwdiag/CommandNetwork.java +++ b/src/net/sourceforge/plantuml/nwdiag/CommandNetwork.java @@ -54,7 +54,7 @@ public class CommandNetwork extends SingleLineCommand2 { RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("network"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("NAME", "([\\p{L}0-9_]+)?"), // + new RegexLeaf("NAME", "([%pLN_]+)?"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("\\{"), RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/nwdiag/NwDiagram.java b/src/net/sourceforge/plantuml/nwdiag/NwDiagram.java index e656ed1b9..6f4b048c8 100644 --- a/src/net/sourceforge/plantuml/nwdiag/NwDiagram.java +++ b/src/net/sourceforge/plantuml/nwdiag/NwDiagram.java @@ -54,6 +54,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.FontConfiguration; import net.sourceforge.plantuml.graphic.HorizontalAlignment; @@ -84,8 +85,8 @@ public class NwDiagram extends UmlDiagram { return new DiagramDescription("(Nwdiag)"); } - public NwDiagram() { - super(UmlDiagramType.NWDIAG); + public NwDiagram(UmlSource source) { + super(source, UmlDiagramType.NWDIAG); } public void init() { @@ -101,7 +102,7 @@ public class NwDiagram extends UmlDiagram { public CommandExecutionResult openGroup(String name) { if (initDone == false) { - return error(); + return errorNoInit(); } currentGroup = new NwGroup(name, currentNetwork()); groups.add(currentGroup); @@ -110,7 +111,7 @@ public class NwDiagram extends UmlDiagram { public CommandExecutionResult openNetwork(String name) { if (initDone == false) { - return error(); + return errorNoInit(); } createNetwork(name); return CommandExecutionResult.ok(); @@ -124,7 +125,7 @@ public class NwDiagram extends UmlDiagram { public CommandExecutionResult link(String name1, String name2) { if (initDone == false) { - return error(); + return errorNoInit(); } if (currentNetwork() == null) { createNetwork(name1); @@ -162,7 +163,7 @@ public class NwDiagram extends UmlDiagram { public CommandExecutionResult endSomething() { if (initDone == false) { - return error(); + return errorNoInit(); } this.currentGroup = null; return CommandExecutionResult.ok(); @@ -170,7 +171,7 @@ public class NwDiagram extends UmlDiagram { public CommandExecutionResult addElement(String name, String definition) { if (initDone == false) { - return error(); + return errorNoInit(); } if (currentGroup != null) { currentGroup.addElement(name); @@ -189,8 +190,8 @@ public class NwDiagram extends UmlDiagram { return CommandExecutionResult.ok(); } - private CommandExecutionResult error() { - return CommandExecutionResult.error(""); + private CommandExecutionResult errorNoInit() { + return CommandExecutionResult.error("Maybe you forget 'nwdiag {' in your diagram ?"); } private Map toSet(String definition) { @@ -346,7 +347,7 @@ public class NwDiagram extends UmlDiagram { public CommandExecutionResult setProperty(String property, String value) { if (initDone == false) { - return error(); + return errorNoInit(); } if ("address".equalsIgnoreCase(property) && currentNetwork() != null) { currentNetwork().setOwnAdress(value); diff --git a/src/net/sourceforge/plantuml/nwdiag/NwDiagramFactory.java b/src/net/sourceforge/plantuml/nwdiag/NwDiagramFactory.java index d14ffaf9c..895359d04 100644 --- a/src/net/sourceforge/plantuml/nwdiag/NwDiagramFactory.java +++ b/src/net/sourceforge/plantuml/nwdiag/NwDiagramFactory.java @@ -38,14 +38,21 @@ package net.sourceforge.plantuml.nwdiag; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; +import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class NwDiagramFactory extends PSystemCommandFactory { + public NwDiagramFactory(DiagramType type) { + super(type); + } + @Override - public NwDiagram createEmptyDiagram() { - return new NwDiagram(); + public NwDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new NwDiagram(source); } @Override diff --git a/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java b/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java index 9821bf20c..b70fbd9a2 100644 --- a/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java +++ b/src/net/sourceforge/plantuml/objectdiagram/AbstractClassOrObjectDiagram.java @@ -42,6 +42,7 @@ import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram; import net.sourceforge.plantuml.command.CommandExecutionResult; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.DisplayPositionned; @@ -58,8 +59,8 @@ import net.sourceforge.plantuml.utils.UniqueSequence; public abstract class AbstractClassOrObjectDiagram extends AbstractEntityDiagram { - public AbstractClassOrObjectDiagram(UmlDiagramType type, ISkinSimple orig) { - super(type, orig); + public AbstractClassOrObjectDiagram(UmlSource source, UmlDiagramType type, ISkinSimple orig) { + super(source, type, orig); } @Override diff --git a/src/net/sourceforge/plantuml/objectdiagram/command/CommandAddData.java b/src/net/sourceforge/plantuml/objectdiagram/command/CommandAddData.java index 6adf633b5..4b1ffb569 100644 --- a/src/net/sourceforge/plantuml/objectdiagram/command/CommandAddData.java +++ b/src/net/sourceforge/plantuml/objectdiagram/command/CommandAddData.java @@ -55,7 +55,7 @@ public class CommandAddData extends SingleLineCommand2\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObjectMultilines.java b/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObjectMultilines.java index ce5dd8a97..6e66f17e4 100644 --- a/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObjectMultilines.java +++ b/src/net/sourceforge/plantuml/objectdiagram/command/CommandCreateEntityObjectMultilines.java @@ -68,7 +68,7 @@ public class CommandCreateEntityObjectMultilines extends CommandMultilines2\\>)?"), // RegexLeaf.spaceZeroOrMore(), // @@ -82,7 +82,7 @@ public class CommandCreateEntityObjectMultilines extends CommandMultilines2\\>)?"), // RegexLeaf.spaceZeroOrMore(), // @@ -86,7 +86,7 @@ public class CommandCreateMap extends CommandMultilines2 lines = new ArrayList<>(); diff --git a/src/net/sourceforge/plantuml/openiconic/PSystemListOpenIconicFactory.java b/src/net/sourceforge/plantuml/openiconic/PSystemListOpenIconicFactory.java index be37e8711..bc6568d35 100644 --- a/src/net/sourceforge/plantuml/openiconic/PSystemListOpenIconicFactory.java +++ b/src/net/sourceforge/plantuml/openiconic/PSystemListOpenIconicFactory.java @@ -38,14 +38,15 @@ package net.sourceforge.plantuml.openiconic; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemListOpenIconicFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final String lineLower = StringUtils.goLowerCase(line); if (lineLower.startsWith("listopeniconic")) { - return new PSystemListOpenIconic(); + return new PSystemListOpenIconic(source); } return null; } diff --git a/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconic.java b/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconic.java index df037e186..6037a42bc 100644 --- a/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconic.java +++ b/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconic.java @@ -38,6 +38,7 @@ package net.sourceforge.plantuml.openiconic; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.style.ClockwiseTopRightBottomLeft; import net.sourceforge.plantuml.ugraphic.color.HColorUtils; @@ -47,7 +48,8 @@ public class PSystemOpenIconic extends PlainDiagram { private final String iconName; private final double factor; - public PSystemOpenIconic(String iconName, double factor) { + public PSystemOpenIconic(UmlSource source, String iconName, double factor) { + super(source); this.iconName = iconName; this.factor = factor; } diff --git a/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconicFactory.java b/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconicFactory.java index f7975135f..7e9d07c59 100644 --- a/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconicFactory.java +++ b/src/net/sourceforge/plantuml/openiconic/PSystemOpenIconicFactory.java @@ -38,15 +38,16 @@ package net.sourceforge.plantuml.openiconic; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemOpenIconicFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final String lineLower = StringUtils.goLowerCase(line); if (lineLower.startsWith("openiconic ")) { final int idx = line.indexOf(' '); - return new PSystemOpenIconic(lineLower.substring(idx + 1), 1.0); + return new PSystemOpenIconic(source, lineLower.substring(idx + 1), 1.0); } return null; } diff --git a/src/net/sourceforge/plantuml/oregon/PSystemOregon.java b/src/net/sourceforge/plantuml/oregon/PSystemOregon.java index 7df3bd634..1efbc6711 100644 --- a/src/net/sourceforge/plantuml/oregon/PSystemOregon.java +++ b/src/net/sourceforge/plantuml/oregon/PSystemOregon.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.ugraphic.ImageBuilder; @@ -54,7 +55,8 @@ public class PSystemOregon extends PlainDiagram { private List inputs; @Deprecated - public PSystemOregon(Keyboard keyboard) { + public PSystemOregon(UmlSource source, Keyboard keyboard) { + super(source); final BasicGame game = new OregonBasicGame(); try { game.run(keyboard); @@ -71,7 +73,8 @@ public class PSystemOregon extends PlainDiagram { return super.createImageBuilder(fileFormatOption).blackBackcolor(); } - public PSystemOregon() { + public PSystemOregon(UmlSource source) { + super(source); this.inputs = new ArrayList<>(); } diff --git a/src/net/sourceforge/plantuml/oregon/PSystemOregonFactory.java b/src/net/sourceforge/plantuml/oregon/PSystemOregonFactory.java index 45eed8045..801ea3630 100644 --- a/src/net/sourceforge/plantuml/oregon/PSystemOregonFactory.java +++ b/src/net/sourceforge/plantuml/oregon/PSystemOregonFactory.java @@ -36,24 +36,20 @@ package net.sourceforge.plantuml.oregon; import net.sourceforge.plantuml.command.PSystemBasicFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemOregonFactory extends PSystemBasicFactory { - // public PSystemOregon getSystem() { - // final Keyboard keyboard; - // if (inputs == null) { - // keyboard = new KeyboardList(""); - // } else { - // keyboard = new KeyboardList(inputs); - // } - // system = new PSystemOregon(keyboard); - // return system; - // } + @Override + public PSystemOregon initDiagram(UmlSource source, String startLine) { + return null; + } + @Override - public PSystemOregon executeLine(PSystemOregon system, String line) { + public PSystemOregon executeLine(UmlSource source, PSystemOregon system, String line) { if (system == null && line.equalsIgnoreCase("run oregon trail")) { - return new PSystemOregon(); + return new PSystemOregon(source); } if (system == null) { return null; diff --git a/src/net/sourceforge/plantuml/project/GanttDiagram.java b/src/net/sourceforge/plantuml/project/GanttDiagram.java index 8f503a784..5b328651c 100644 --- a/src/net/sourceforge/plantuml/project/GanttDiagram.java +++ b/src/net/sourceforge/plantuml/project/GanttDiagram.java @@ -58,6 +58,7 @@ import net.sourceforge.plantuml.WithSprite; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.HorizontalAlignment; import net.sourceforge.plantuml.graphic.InnerStrategy; @@ -145,8 +146,8 @@ public class GanttDiagram extends TitledDiagram implements ToTaskDraw, WithSprit this.weekNumberStrategy = new WeekNumberStrategy(firstDayOfWeek, minimalDaysInFirstWeek); } - public GanttDiagram() { - super(UmlDiagramType.GANTT); + public GanttDiagram(UmlSource source) { + super(source, UmlDiagramType.GANTT); } private int horizontalPages = 1; diff --git a/src/net/sourceforge/plantuml/project/GanttDiagramFactory.java b/src/net/sourceforge/plantuml/project/GanttDiagramFactory.java index c76f14675..ea5735a72 100644 --- a/src/net/sourceforge/plantuml/project/GanttDiagramFactory.java +++ b/src/net/sourceforge/plantuml/project/GanttDiagramFactory.java @@ -40,10 +40,12 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.CommandNope; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.project.command.CommandColorTask; import net.sourceforge.plantuml.project.command.CommandFootbox; import net.sourceforge.plantuml.project.command.CommandGanttArrow; @@ -119,7 +121,12 @@ public class GanttDiagramFactory extends PSystemCommandFactory { static private final Collection cache = new ArrayList<>(); + public static void clearCache() { + cache.clear(); + } + private static Collection getLanguageCommands() { + // Useless synchronized now synchronized (cache) { if (cache.size() == 0) { @@ -154,8 +161,8 @@ public class GanttDiagramFactory extends PSystemCommandFactory { } @Override - public GanttDiagram createEmptyDiagram() { - return new GanttDiagram(); + public GanttDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new GanttDiagram(source); } } diff --git a/src/net/sourceforge/plantuml/project/command/CommandColorTask.java b/src/net/sourceforge/plantuml/project/command/CommandColorTask.java index e834891e1..8362f5844 100644 --- a/src/net/sourceforge/plantuml/project/command/CommandColorTask.java +++ b/src/net/sourceforge/plantuml/project/command/CommandColorTask.java @@ -56,7 +56,7 @@ public class CommandColorTask extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandColorTask.class.getName(), RegexLeaf.start(), // - new RegexLeaf("CODE", "\\[([\\p{L}0-9_.]+)\\]"), // + new RegexLeaf("CODE", "\\[([%pLN_.]+)\\]"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("COLORS", "#(\\w+)(?:/(#?\\w+))?"), // RegexLeaf.spaceZeroOrMore(), RegexLeaf.end()); diff --git a/src/net/sourceforge/plantuml/project/command/CommandGanttArrow.java b/src/net/sourceforge/plantuml/project/command/CommandGanttArrow.java index 9f75d15d1..ae52c18f3 100644 --- a/src/net/sourceforge/plantuml/project/command/CommandGanttArrow.java +++ b/src/net/sourceforge/plantuml/project/command/CommandGanttArrow.java @@ -55,14 +55,14 @@ public class CommandGanttArrow extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandGanttArrow.class.getName(), RegexLeaf.start(), // - new RegexLeaf("CODE1", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE1", "([%pLN_.]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("(-+)"), // new RegexLeaf("ARROW_STYLE", "(?:\\[(" + CommandLinkElement.LINE_STYLE + ")\\])?"), // new RegexLeaf("(-*)"), // new RegexLeaf("\\>"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("CODE2", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE2", "([%pLN_.]+)"), // RegexLeaf.spaceZeroOrMore(), RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/project/command/CommandNoteBottom.java b/src/net/sourceforge/plantuml/project/command/CommandNoteBottom.java index 5cbe8c50e..0edc76190 100644 --- a/src/net/sourceforge/plantuml/project/command/CommandNoteBottom.java +++ b/src/net/sourceforge/plantuml/project/command/CommandNoteBottom.java @@ -45,12 +45,12 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandNoteBottom extends CommandMultilines { public CommandNoteBottom() { - super("(?i)^note[%s]*bottom$"); + super("^note[%s]*bottom$"); } @Override public String getPatternEnd() { - return "(?i)^end[%s]*note$"; + return "^end[%s]*note$"; } public CommandExecutionResult execute(GanttDiagram diagram, BlocLines lines) throws NoSuchColorException { diff --git a/src/net/sourceforge/plantuml/salt/PSystemSalt.java b/src/net/sourceforge/plantuml/salt/PSystemSalt.java index 281e3b6ec..496df65f0 100644 --- a/src/net/sourceforge/plantuml/salt/PSystemSalt.java +++ b/src/net/sourceforge/plantuml/salt/PSystemSalt.java @@ -59,6 +59,7 @@ import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.command.CommandFactorySprite; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.salt.element.Element; @@ -96,13 +97,13 @@ public class PSystemSalt extends TitledDiagram implements WithSprite { private final Dictionary dictionary = new Dictionary(); @Deprecated - public PSystemSalt(List data) { - super(UmlDiagramType.SALT); + public PSystemSalt(UmlSource source, List data) { + super(source, UmlDiagramType.SALT); this.data = data; } - public PSystemSalt() { - this(new ArrayList()); + public PSystemSalt(UmlSource source) { + this(source, new ArrayList()); } public void add(String s) { diff --git a/src/net/sourceforge/plantuml/salt/PSystemSaltFactory.java b/src/net/sourceforge/plantuml/salt/PSystemSaltFactory.java index 766b4fc92..557e13f0b 100644 --- a/src/net/sourceforge/plantuml/salt/PSystemSaltFactory.java +++ b/src/net/sourceforge/plantuml/salt/PSystemSaltFactory.java @@ -38,6 +38,7 @@ package net.sourceforge.plantuml.salt; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.command.PSystemBasicFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemSaltFactory extends PSystemBasicFactory { @@ -45,11 +46,12 @@ public class PSystemSaltFactory extends PSystemBasicFactory { super(diagramType); } - public PSystemSalt init(String startLine) { + @Override + public PSystemSalt initDiagram(UmlSource source, String startLine) { if (getDiagramType() == DiagramType.UML) { return null; } else if (getDiagramType() == DiagramType.SALT) { - return new PSystemSalt(); + return new PSystemSalt(source); } else { throw new IllegalStateException(getDiagramType().name()); } @@ -57,9 +59,9 @@ public class PSystemSaltFactory extends PSystemBasicFactory { } @Override - public PSystemSalt executeLine(PSystemSalt system, String line) { + public PSystemSalt executeLine(UmlSource source, PSystemSalt system, String line) { if (system == null && line.replace('\t', ' ').trim().equals("salt")) { - return new PSystemSalt(); + return new PSystemSalt(source); } if (system == null) { return null; diff --git a/src/net/sourceforge/plantuml/salt/PSystemSaltFactory2.java b/src/net/sourceforge/plantuml/salt/PSystemSaltFactory2.java index be9563e4b..9359736d5 100644 --- a/src/net/sourceforge/plantuml/salt/PSystemSaltFactory2.java +++ b/src/net/sourceforge/plantuml/salt/PSystemSaltFactory2.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.salt; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemSaltFactory2 extends PSystemCommandFactory { @@ -63,8 +65,8 @@ public class PSystemSaltFactory2 extends PSystemCommandFactory { } @Override - public PSystemSalt createEmptyDiagram() { - final PSystemSalt result = new PSystemSalt(); + public PSystemSalt createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + final PSystemSalt result = new PSystemSalt(source); if (getDiagramType() == DiagramType.SALT) { result.setIamSalt(true); } diff --git a/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagram.java b/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagram.java index d0149e522..e62e8e711 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagram.java +++ b/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagram.java @@ -58,6 +58,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.EntityPortion; import net.sourceforge.plantuml.cucadiagram.Stereotype; @@ -81,8 +82,8 @@ public class SequenceDiagram extends UmlDiagram { private final Rose skin2 = new Rose(); - public SequenceDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.SEQUENCE, skinParam); + public SequenceDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.SEQUENCE, skinParam); } @Deprecated diff --git a/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagramFactory.java b/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagramFactory.java index 65136379e..762f9aab1 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagramFactory.java +++ b/src/net/sourceforge/plantuml/sequencediagram/SequenceDiagramFactory.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.command.note.sequence.FactorySequenceNoteAcrossC import net.sourceforge.plantuml.command.note.sequence.FactorySequenceNoteCommand; import net.sourceforge.plantuml.command.note.sequence.FactorySequenceNoteOnArrowCommand; import net.sourceforge.plantuml.command.note.sequence.FactorySequenceNoteOverSeveralCommand; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.sequencediagram.command.CommandActivate; import net.sourceforge.plantuml.sequencediagram.command.CommandActivate2; import net.sourceforge.plantuml.sequencediagram.command.CommandArrow; @@ -79,15 +80,9 @@ import net.sourceforge.plantuml.sequencediagram.command.CommandUrl; public class SequenceDiagramFactory extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public SequenceDiagramFactory(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - @Override - public SequenceDiagram createEmptyDiagram() { - return new SequenceDiagram(skinParam); + public SequenceDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new SequenceDiagram(source, skinParam); } @Override diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate.java index 778bd6364..999003298 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate.java @@ -60,7 +60,7 @@ public class CommandActivate extends SingleLineCommand2 { return RegexConcat.build(CommandActivate.class.getName(), RegexLeaf.start(), // new RegexLeaf("TYPE", "(activate|deactivate|destroy|create)"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("WHO", "([\\p{L}0-9_.@]+|[%g][^%g]+[%g])"), // + new RegexLeaf("WHO", "([%pLN_.@]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("BACK", "(#\\w+)?"), // new RegexOptional( // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate2.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate2.java index cd049d543..39e785527 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate2.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandActivate2.java @@ -55,7 +55,7 @@ public class CommandActivate2 extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandActivate2.class.getName(), RegexLeaf.start(), // - new RegexLeaf("NAME", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("NAME", "([%pLN_.@]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("TYPE", "(\\+\\+|--)"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandArrow.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandArrow.java index 7a5c6c1fc..494825623 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandArrow.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandArrow.java @@ -71,7 +71,7 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandArrow extends SingleLineCommand2 { - static final String ANCHOR = "(\\{([\\p{L}0-9_]+)\\}[%s]+)?"; + static final String ANCHOR = "(\\{([%pLN_]+)\\}[%s]+)?"; public CommandArrow() { super(getRegexConcat()); @@ -86,10 +86,10 @@ public class CommandArrow extends SingleLineCommand2 { new RegexLeaf("PARALLEL", "(&[%s]*)?"), // new RegexLeaf("ANCHOR", ANCHOR), // new RegexOr("PART1", // - new RegexLeaf("PART1CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("PART1CODE", "([%pLN_.@]+)"), // new RegexLeaf("PART1LONG", "[%g]([^%g]+)[%g]"), // - new RegexLeaf("PART1LONGCODE", "[%g]([^%g]+)[%g][%s]*as[%s]+([\\p{L}0-9_.@]+)"), // - new RegexLeaf("PART1CODELONG", "([\\p{L}0-9_.@]+)[%s]+as[%s]*[%g]([^%g]+)[%g]")), // + new RegexLeaf("PART1LONGCODE", "[%g]([^%g]+)[%g][%s]*as[%s]+([%pLN_.@]+)"), // + new RegexLeaf("PART1CODELONG", "([%pLN_.@]+)[%s]+as[%s]*[%g]([^%g]+)[%g]")), // new RegexLeaf("PART1ANCHOR", ANCHOR), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("ARROW_DRESSING1", @@ -106,11 +106,11 @@ public class CommandArrow extends SingleLineCommand2 { "(_?>>?(?:[ox][%s])?|//?(?:[ox][%s])?|\\\\\\\\?(?:[ox][%s])?|[ox][%s])?"), // RegexLeaf.spaceZeroOrMore(), // new RegexOr("PART2", // - new RegexLeaf("PART2CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("PART2CODE", "([%pLN_.@]+)"), // new RegexLeaf("PART2LONG", "[%g]([^%g]+)[%g]"), // - new RegexLeaf("PART2LONGCODE", "[%g]([^%g]+)[%g][%s]*as[%s]+([\\p{L}0-9_.@]+)"), // - new RegexLeaf("PART2CODELONG", "([\\p{L}0-9_.@]+)[%s]+as[%s]*[%g]([^%g]+)[%g]")), // - new RegexLeaf("MULTICAST", "((?:\\s&\\s[\\p{L}0-9_.@]+)*)"), // + new RegexLeaf("PART2LONGCODE", "[%g]([^%g]+)[%g][%s]*as[%s]+([%pLN_.@]+)"), // + new RegexLeaf("PART2CODELONG", "([%pLN_.@]+)[%s]+as[%s]*[%g]([^%g]+)[%g]")), // + new RegexLeaf("MULTICAST", "((?:\\s&\\s[%pLN_.@]+)*)"), // new RegexLeaf("PART2ANCHOR", ANCHOR), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("ACTIVATION", "(?:(\\+\\+|\\*\\*|!!|--|--\\+\\+|\\+\\+--)?)"), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandAutonumber.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandAutonumber.java index 9ec326cd5..5f4242a50 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandAutonumber.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandAutonumber.java @@ -57,7 +57,7 @@ public class CommandAutonumber extends SingleLineCommand2 { return RegexConcat.build(CommandAutonumber.class.getName(), RegexLeaf.start(), // new RegexLeaf("autonumber"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("START", "(\\d(?:(?:[^\\p{L}0-9%s]+|\\d+)*\\d)?)?"), // + new RegexLeaf("START", "(\\d(?:(?:[^%pLN%s]+|\\d+)*\\d)?)?"), // new RegexOptional( // new RegexConcat( // RegexLeaf.spaceOneOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowLeft.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowLeft.java index 44407946d..732b72ad8 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowLeft.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowLeft.java @@ -69,7 +69,7 @@ public class CommandExoArrowLeft extends CommandExoArrowAny { new RegexLeaf("ARROW_BODYA2", "(-+)"))), // new RegexLeaf("ARROW_SUPPCIRCLE", "([ox][%s]+)?"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("PARTICIPANT", "([\\p{L}0-9_.@]+|[%g][^%g]+[%g])"), // + new RegexLeaf("PARTICIPANT", "([%pLN_.@]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("ACTIVATION", "(?:([+*!-]+)?)"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowRight.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowRight.java index 86a03b925..92f8bc5a2 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowRight.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandExoArrowRight.java @@ -54,7 +54,7 @@ public class CommandExoArrowRight extends CommandExoArrowAny { return RegexConcat.build(CommandExoArrowRight.class.getName(), RegexLeaf.start(), // new RegexLeaf("PARALLEL", "(&[%s]*)?"), // new RegexLeaf("ANCHOR", CommandArrow.ANCHOR), // - new RegexLeaf("PARTICIPANT", "([\\p{L}0-9_.@]+|[%g][^%g]+[%g])"), // + new RegexLeaf("PARTICIPANT", "([%pLN_.@]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("ARROW_SUPPCIRCLE", "([%s]+[ox])?"), // new RegexOr( // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandLinkAnchor.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandLinkAnchor.java index af364b3d1..144f77390 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandLinkAnchor.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandLinkAnchor.java @@ -52,11 +52,11 @@ public class CommandLinkAnchor extends SingleLineCommand2 { static IRegex getRegexConcat() { return RegexConcat.build(CommandLinkAnchor.class.getName(), RegexLeaf.start(), // - new RegexLeaf("ANCHOR1", "\\{([\\p{L}0-9_]+)\\}"), // + new RegexLeaf("ANCHOR1", "\\{([%pLN_]+)\\}"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("LINK", "\\<-\\>"), // RegexLeaf.spaceZeroOrMore(), // - new RegexLeaf("ANCHOR2", "\\{([\\p{L}0-9_]+)\\}"), // + new RegexLeaf("ANCHOR2", "\\{([%pLN_]+)\\}"), // RegexLeaf.spaceZeroOrMore(), new RegexLeaf("MESSAGE", "(?::[%s]*(.*))?"), RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandNewpage.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandNewpage.java index 81c658062..199201b50 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandNewpage.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandNewpage.java @@ -59,7 +59,7 @@ public class CommandNewpage extends SingleLineCommand2 { new RegexOptional( // new RegexConcat( // new RegexLeaf("(?:[%s]*:[%s]*|[%s]+)"), // - new RegexLeaf("LABEL", "(.*[\\p{L}0-9_.].*)") // + new RegexLeaf("LABEL", "(.*[%pLN_.].*)") // )), RegexLeaf.end()); // } diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA.java index 3e4837aaf..d2d6d4497 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA.java @@ -59,7 +59,7 @@ public class CommandParticipantA extends CommandParticipant { new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore() // )), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("CODE", "([%pLN_.@]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREO", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA2.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA2.java index 6ee1fb269..de90dbbed 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA2.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA2.java @@ -51,7 +51,7 @@ public class CommandParticipantA2 extends CommandParticipant { return RegexConcat.build(CommandParticipantA2.class.getName(), RegexLeaf.start(), // getRegexType(), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("CODE", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA3.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA3.java index 8b405da4f..a4398ecd0 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA3.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandParticipantA3.java @@ -51,11 +51,11 @@ public class CommandParticipantA3 extends CommandParticipant { return RegexConcat.build(CommandParticipantA3.class.getName(), RegexLeaf.start(), // getRegexType(), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("FULL", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("FULL", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("CODE", "([%pLN_.@]+)"), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREO", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceMultilinesOverSeveral.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceMultilinesOverSeveral.java index 9d2df148d..cf4b2ffd8 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceMultilinesOverSeveral.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceMultilinesOverSeveral.java @@ -55,12 +55,12 @@ import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; public class CommandReferenceMultilinesOverSeveral extends CommandMultilines { public CommandReferenceMultilinesOverSeveral() { - super("(?i)^ref(#\\w+)?[%s]+over[%s]+((?:[\\p{L}0-9_.@]+|[%g][^%g]+[%g])(?:[%s]*,[%s]*(?:[\\p{L}0-9_.@]+|[%g][^%g]+[%g]))*)[%s]*(#\\w+)?$"); + super("^ref(#\\w+)?[%s]+over[%s]+((?:[%pLN_.@]+|[%g][^%g]+[%g])(?:[%s]*,[%s]*(?:[%pLN_.@]+|[%g][^%g]+[%g]))*)[%s]*(#\\w+)?$"); } @Override public String getPatternEnd() { - return "(?i)^end[%s]?(ref)?$"; + return "^end[%s]?(ref)?$"; } public CommandExecutionResult execute(final SequenceDiagram diagram, BlocLines lines) throws NoSuchColorException { diff --git a/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceOverSeveral.java b/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceOverSeveral.java index 34cc84bd7..4faf93c09 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceOverSeveral.java +++ b/src/net/sourceforge/plantuml/sequencediagram/command/CommandReferenceOverSeveral.java @@ -68,7 +68,7 @@ public class CommandReferenceOverSeveral extends SingleLineCommand2 { RegexLeaf.spaceZeroOrMore(), // new RegexOptional(new RegexLeaf("of|for")), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+|[%g][^%g]+[%g])"), // + new RegexLeaf("CODE", "([%pLN_.@]+|[%g][^%g]+[%g])"), // RegexLeaf.spaceOneOrMore(), // new RegexOptional(new RegexLeaf("is")), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/sequencediagram/graphic/Step1Message.java b/src/net/sourceforge/plantuml/sequencediagram/graphic/Step1Message.java index c7fc3e247..0185494d1 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/graphic/Step1Message.java +++ b/src/net/sourceforge/plantuml/sequencediagram/graphic/Step1Message.java @@ -74,9 +74,9 @@ class Step1Message extends Step1Abstract { final ArrowComponent comp = drawingSet.getSkin().createComponentArrow(message.getUsedStyles(), getConfig(), drawingSet.getSkinParam(), message.getLabelNumbered()); final Component compAliveBox = drawingSet.getSkin().createComponent( - new Style[] { ComponentType.ALIVE_BOX_OPEN_OPEN.getDefaultStyleDefinition().getMergedStyle( - drawingSet.getSkinParam().getCurrentStyleBuilder()) }, ComponentType.ALIVE_BOX_OPEN_OPEN, - null, drawingSet.getSkinParam(), null); + new Style[] { ComponentType.ALIVE_BOX_OPEN_OPEN.getDefaultStyleDefinition() + .getMergedStyle(drawingSet.getSkinParam().getCurrentStyleBuilder()) }, + ComponentType.ALIVE_BOX_OPEN_OPEN, null, drawingSet.getSkinParam(), null); this.messageArrow = new MessageArrow(freeY.getFreeY(range), drawingSet.getSkin(), comp, getLivingParticipantBox1(), getLivingParticipantBox2(), message.getUrl(), compAliveBox); @@ -102,9 +102,8 @@ class Step1Message extends Step1Abstract { final double length; if (isSelfMessage()) { - length = graphic.getArrowOnlyWidth(getStringBounder()) - + getLivingParticipantBox1().getLiveThicknessAt(getStringBounder(), arrowYStartLevel).getSegment() - .getLength(); + length = graphic.getArrowOnlyWidth(getStringBounder()) + getLivingParticipantBox1() + .getLiveThicknessAt(getStringBounder(), arrowYStartLevel).getSegment().getLength(); } else { length = graphic.getArrowOnlyWidth(getStringBounder()) + getLivingParticipantBox(NotePosition.LEFT).getLifeLine().getRightShift(arrowYStartLevel) @@ -120,7 +119,11 @@ class Step1Message extends Step1Abstract { getDrawingSet().addEvent(getMessage(), graphic); if (isSelfMessage()) { - constraintSet.getConstraintAfter(getParticipantBox1()).ensureValue(length); + if (this.getConfig().isReverseDefine()) { + constraintSet.getConstraintBefore(getParticipantBox1()).ensureValue(length); + } else { + constraintSet.getConstraintAfter(getParticipantBox1()).ensureValue(length); + } } else { constraintSet.getConstraint(getParticipantBox1(), getParticipantBox2()).ensureValue(length); } @@ -219,11 +222,10 @@ class Step1Message extends Step1Abstract { } private double getHalfLifeWidth() { - return getDrawingSet() - .getSkin() + return getDrawingSet().getSkin() .createComponent( - new Style[] { ComponentType.ALIVE_BOX_OPEN_OPEN.getDefaultStyleDefinition().getMergedStyle( - getDrawingSet().getSkinParam().getCurrentStyleBuilder()) }, + new Style[] { ComponentType.ALIVE_BOX_OPEN_OPEN.getDefaultStyleDefinition() + .getMergedStyle(getDrawingSet().getSkinParam().getCurrentStyleBuilder()) }, ComponentType.ALIVE_BOX_OPEN_OPEN, null, getDrawingSet().getSkinParam(), Display.create("")) .getPreferredWidth(null) / 2; } @@ -232,8 +234,8 @@ class Step1Message extends Step1Abstract { if (messageArrow == null) { throw new IllegalStateException(); } - Arrow result = new ArrowAndParticipant(getStringBounder(), messageArrow, getParticipantBox2(), getDrawingSet() - .getSkinParam().getPadding(PaddingParam.PARTICIPANT)); + Arrow result = new ArrowAndParticipant(getStringBounder(), messageArrow, getParticipantBox2(), + getDrawingSet().getSkinParam().getPadding(PaddingParam.PARTICIPANT)); if (getMessage().getNoteOnMessages().size() > 0) { final List noteBoxes = new ArrayList<>(); for (int i = 0; i < getNotes().size(); i++) { @@ -247,14 +249,13 @@ class Step1Message extends Step1Abstract { } result = new ArrowAndNoteBox(getStringBounder(), result, noteBoxes); } - getLivingParticipantBox2().create( - getFreeY().getFreeY(getParticipantRange()) + result.getPreferredHeight(getStringBounder()) / 2); + getLivingParticipantBox2() + .create(getFreeY().getFreeY(getParticipantRange()) + result.getPreferredHeight(getStringBounder()) / 2); return result; } private ArrowConfiguration getSelfArrowType(Message m) { - // return m.getArrowConfiguration().self(); - ArrowConfiguration result = ArrowConfiguration.withDirectionSelf(); + ArrowConfiguration result = ArrowConfiguration.withDirectionSelf(m.getArrowConfiguration().isReverseDefine()); if (m.getArrowConfiguration().isDotted()) { result = result.withBody(ArrowBody.DOTTED); } @@ -264,12 +265,8 @@ class Step1Message extends Step1Abstract { if (m.getArrowConfiguration().isAsync()) { result = result.withHead(ArrowHead.ASYNC); } - if (m.getArrowConfiguration().getDressing2().getHead() == ArrowHead.CROSSX) { - result = result.withHead2(m.getArrowConfiguration().getDressing2().getHead()); - // System.err.println("WARNING : CROSSX"); - // Thread.dumpStack(); - // assert false; - } + result = result.withHead1(m.getArrowConfiguration().getDressing1().getHead()); + result = result.withHead2(m.getArrowConfiguration().getDressing2().getHead()); result = result.withPart(m.getArrowConfiguration().getPart()); result = result.withColor(m.getArrowConfiguration().getColor()); result = result.withDecoration1(m.getArrowConfiguration().getDecoration1()); diff --git a/src/net/sourceforge/plantuml/sequencediagram/teoz/CommunicationTileSelf.java b/src/net/sourceforge/plantuml/sequencediagram/teoz/CommunicationTileSelf.java index 08560f81a..189e491de 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/teoz/CommunicationTileSelf.java +++ b/src/net/sourceforge/plantuml/sequencediagram/teoz/CommunicationTileSelf.java @@ -148,19 +148,36 @@ public class CommunicationTileSelf extends AbstractTile { } public void addConstraints() { - // final Component comp = getComponent(stringBounder); - // final Dimension2D dim = comp.getPreferredDimension(stringBounder); - // final double width = dim.getWidth(); + if (isReverseDefine()) { + final LivingSpace previous = getPrevious(); + if (previous != null) { + livingSpace1.getPosC(getStringBounder()) + .ensureBiggerThan(previous.getPosC(getStringBounder()).addFixed(getCompWidth())); - final LivingSpace next = getNext(); - if (next != null) { - next.getPosC(getStringBounder()).ensureBiggerThan(getMaxX()); + } + } else { + final LivingSpace next = getNext(); + if (next != null) { + next.getPosC(getStringBounder()).ensureBiggerThan(getMaxX()); + } } } - // private boolean isSelf() { - // return livingSpace1 == livingSpace2; - // } + private boolean isReverseDefine() { + return message.getArrowConfiguration().isReverseDefine(); + } + + private LivingSpace getPrevious() { + LivingSpace previous = null; + for (Iterator it = livingSpaces.values().iterator(); it.hasNext();) { + final LivingSpace current = it.next(); + if (current == livingSpace1) { + return previous; + } + previous = current; + } + return null; + } private LivingSpace getNext() { for (Iterator it = livingSpaces.values().iterator(); it.hasNext();) { @@ -177,14 +194,22 @@ public class CommunicationTileSelf extends AbstractTile { } public Real getMinX() { + if (isReverseDefine()) { + return getPoint1(getStringBounder()); + } return getPoint1(getStringBounder()); } public Real getMaxX() { + if (isReverseDefine()) { + return livingSpace1.getPosC2(getStringBounder()); + } + return livingSpace1.getPosC2(getStringBounder()).addFixed(getCompWidth()); + } + + private double getCompWidth() { final Component comp = getComponent(getStringBounder()); - final Dimension2D dim = comp.getPreferredDimension(getStringBounder()); - final double width = dim.getWidth(); - return livingSpace1.getPosC2(getStringBounder()).addFixed(width); + return comp.getPreferredDimension(getStringBounder()).getWidth(); } } diff --git a/src/net/sourceforge/plantuml/skin/ArrowConfiguration.java b/src/net/sourceforge/plantuml/skin/ArrowConfiguration.java index e944dd649..447ac0a1b 100644 --- a/src/net/sourceforge/plantuml/skin/ArrowConfiguration.java +++ b/src/net/sourceforge/plantuml/skin/ArrowConfiguration.java @@ -58,8 +58,8 @@ public class ArrowConfiguration { private final boolean reverseDefine; private ArrowConfiguration(ArrowBody body, ArrowDressing dressing1, ArrowDressing dressing2, - ArrowDecoration decoration1, ArrowDecoration decoration2, HColor color, boolean isSelf, - double thickness, boolean reverseDefine) { + ArrowDecoration decoration1, ArrowDecoration decoration2, HColor color, boolean isSelf, double thickness, + boolean reverseDefine) { this.reverseDefine = reverseDefine; this.thickness = thickness; this.body = Objects.requireNonNull(body); @@ -82,8 +82,9 @@ public class ArrowConfiguration { } public static ArrowConfiguration withDirectionNormal() { - return new ArrowConfiguration(ArrowBody.NORMAL, ArrowDressing.create(), ArrowDressing.create().withHead( - ArrowHead.NORMAL), ArrowDecoration.NONE, ArrowDecoration.NONE, null, false, 1, false); + return new ArrowConfiguration(ArrowBody.NORMAL, ArrowDressing.create(), + ArrowDressing.create().withHead(ArrowHead.NORMAL), ArrowDecoration.NONE, ArrowDecoration.NONE, null, + false, 1, false); } public static ArrowConfiguration withDirectionBoth() { @@ -92,10 +93,10 @@ public class ArrowConfiguration { false, 1, false); } - public static ArrowConfiguration withDirectionSelf() { - return new ArrowConfiguration(ArrowBody.NORMAL, ArrowDressing.create().withHead(ArrowHead.NORMAL), + public static ArrowConfiguration withDirectionSelf(boolean reverseDefine) { + return new ArrowConfiguration(ArrowBody.NORMAL, ArrowDressing.create(), ArrowDressing.create().withHead(ArrowHead.NORMAL), ArrowDecoration.NONE, ArrowDecoration.NONE, null, - true, 1, false); + true, 1, reverseDefine); } public static ArrowConfiguration withDirectionReverse() { diff --git a/src/net/sourceforge/plantuml/skin/rose/ComponentRoseSelfArrow.java b/src/net/sourceforge/plantuml/skin/rose/ComponentRoseSelfArrow.java index 4f6f59070..190d36ae8 100644 --- a/src/net/sourceforge/plantuml/skin/rose/ComponentRoseSelfArrow.java +++ b/src/net/sourceforge/plantuml/skin/rose/ComponentRoseSelfArrow.java @@ -63,9 +63,9 @@ public class ComponentRoseSelfArrow extends AbstractComponentRoseArrow { private final double arrowWidth = 45; private final boolean niceArrow; - public ComponentRoseSelfArrow(Style style, HColor foregroundColor, FontConfiguration font, - Display stringsToDisplay, ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer, - LineBreakStrategy maxMessageSize, boolean niceArrow) { + public ComponentRoseSelfArrow(Style style, HColor foregroundColor, FontConfiguration font, Display stringsToDisplay, + ArrowConfiguration arrowConfiguration, ISkinSimple spriteContainer, LineBreakStrategy maxMessageSize, + boolean niceArrow) { super(style, foregroundColor, font, stringsToDisplay, arrowConfiguration, spriteContainer, HorizontalAlignment.LEFT, maxMessageSize); this.niceArrow = niceArrow; @@ -87,77 +87,104 @@ public class ComponentRoseSelfArrow extends AbstractComponentRoseArrow { double x1 = area.getDeltaX1() < 0 ? area.getDeltaX1() : 0; double x2 = area.getDeltaX1() > 0 ? -area.getDeltaX1() : 0 + 1; - final double textAndArrowHeight = textHeight + getArrowOnlyHeight(stringBounder); + final double arrowHeight = getArrowOnlyHeight(stringBounder); final UEllipse circle = new UEllipse(ComponentRoseArrow.diamCircle, ComponentRoseArrow.diamCircle); if (getArrowConfiguration().getDecoration1() == ArrowDecoration.CIRCLE) { - ug2.apply(new UStroke(ComponentRoseArrow.thinCircle)) - .apply(getForegroundColor()) + ug2.apply(new UStroke(ComponentRoseArrow.thinCircle)).apply(getForegroundColor()) .apply(new UTranslate(x1 + 1 - ComponentRoseArrow.diamCircle / 2 - ComponentRoseArrow.thinCircle, textHeight - ComponentRoseArrow.diamCircle / 2 - ComponentRoseArrow.thinCircle / 2)) .draw(circle); x1 += ComponentRoseArrow.diamCircle / 2; } if (getArrowConfiguration().getDecoration2() == ArrowDecoration.CIRCLE) { - ug2.apply(new UStroke(ComponentRoseArrow.thinCircle)) - .apply(getForegroundColor()) - .apply(new UTranslate(x2 - ComponentRoseArrow.diamCircle / 2 - ComponentRoseArrow.thinCircle, - textAndArrowHeight - ComponentRoseArrow.diamCircle / 2 - ComponentRoseArrow.thinCircle / 2)) + ug2.apply(new UStroke(ComponentRoseArrow.thinCircle)).apply(getForegroundColor()).apply(new UTranslate( + x2 - ComponentRoseArrow.diamCircle / 2 - ComponentRoseArrow.thinCircle, + textHeight + arrowHeight - ComponentRoseArrow.diamCircle / 2 - ComponentRoseArrow.thinCircle / 2)) .draw(circle); x2 += ComponentRoseArrow.diamCircle / 2; } + final boolean hasStartingCrossX = getArrowConfiguration().getDressing1().getHead() == ArrowHead.CROSSX; + if (hasStartingCrossX) { + x1 += 2 * ComponentRoseArrow.spaceCrossX; + } final boolean hasFinalCrossX = getArrowConfiguration().getDressing2().getHead() == ArrowHead.CROSSX; if (hasFinalCrossX) { x2 += 2 * ComponentRoseArrow.spaceCrossX; } - final double arrowHeight = textAndArrowHeight - textHeight; - ug2.apply(new UTranslate(x1, textHeight)).draw(ULine.hline(xRight - x1)); - ug2.apply(new UTranslate(xRight, textHeight)).draw(ULine.vline(arrowHeight)); - ug2.apply(new UTranslate(x2, textAndArrowHeight)).draw(ULine.hline(xRight - x2)); - - if (getArrowConfiguration().isAsync()) { - if (getArrowConfiguration().getPart() != ArrowPart.BOTTOM_PART) { - getArrowConfiguration().applyThicknessOnly(ug).apply(new UTranslate(x2, textAndArrowHeight)) - .draw(new ULine(getArrowDeltaX(), -getArrowDeltaY())); - } - if (getArrowConfiguration().getPart() != ArrowPart.TOP_PART) { - getArrowConfiguration().applyThicknessOnly(ug).apply(new UTranslate(x2, textAndArrowHeight)) - .draw(new ULine(getArrowDeltaX(), getArrowDeltaY())); - } - } else if (hasFinalCrossX) { - ug = ug.apply(new UStroke(2)); - ug.apply( - new UTranslate(ComponentRoseArrow.spaceCrossX, textHeight - getArrowDeltaX() / 2 - + getArrowOnlyHeight(stringBounder))).draw(new ULine(getArrowDeltaX(), getArrowDeltaX())); - ug.apply( - new UTranslate(ComponentRoseArrow.spaceCrossX, textHeight + getArrowDeltaX() / 2 - + getArrowOnlyHeight(stringBounder))).draw(new ULine(getArrowDeltaX(), -getArrowDeltaX())); - - } else { - final UPolygon polygon = getPolygon(textAndArrowHeight); + if (getArrowConfiguration().isReverseDefine()) { + ug2.apply(new UTranslate(-xRight, textHeight)).draw(ULine.hline(xRight - x1)); + ug2.apply(new UTranslate(-xRight, textHeight)).draw(ULine.vline(arrowHeight)); + ug2.apply(new UTranslate(-xRight, textHeight + arrowHeight)).draw(ULine.hline(xRight - x2)); + final UPolygon polygon = getPolygon().translate(0, textHeight + arrowHeight); ug.apply(getForegroundColor().bg()).apply(UTranslate.dx(x2)).draw(polygon); + } else { + ug2.apply(new UTranslate(x1, textHeight)).draw(ULine.hline(xRight - x1)); + ug2.apply(new UTranslate(xRight, textHeight)).draw(ULine.vline(arrowHeight)); + ug2.apply(new UTranslate(x2, textHeight + arrowHeight)).draw(ULine.hline(xRight - x2)); + + if (hasStartingCrossX) { + ug.apply(new UStroke(2)) + .apply(new UTranslate(ComponentRoseArrow.spaceCrossX, textHeight - getArrowDeltaX() / 2)) + .draw(new ULine(getArrowDeltaX(), getArrowDeltaX())); + ug.apply(new UStroke(2)) + .apply(new UTranslate(ComponentRoseArrow.spaceCrossX, textHeight + getArrowDeltaX() / 2)) + .draw(new ULine(getArrowDeltaX(), -getArrowDeltaX())); + } else if (getArrowConfiguration().getDressing1().getHead() == ArrowHead.NORMAL) { + final UPolygon polygon = getPolygon().translate(0, textHeight); + ug.apply(getForegroundColor().bg()).apply(UTranslate.dx(x1)).draw(polygon); + } + + if (hasFinalCrossX) { + ug.apply(new UStroke(2)) + .apply(new UTranslate(ComponentRoseArrow.spaceCrossX, + textHeight - getArrowDeltaX() / 2 + arrowHeight)) + .draw(new ULine(getArrowDeltaX(), getArrowDeltaX())); + ug.apply(new UStroke(2)) + .apply(new UTranslate(ComponentRoseArrow.spaceCrossX, + textHeight + getArrowDeltaX() / 2 + arrowHeight)) + .draw(new ULine(getArrowDeltaX(), -getArrowDeltaX())); + } else if (getArrowConfiguration().isAsync()) { + if (getArrowConfiguration().getPart() != ArrowPart.BOTTOM_PART) { + getArrowConfiguration().applyThicknessOnly(ug).apply(new UTranslate(x2, textHeight + arrowHeight)) + .draw(new ULine(getArrowDeltaX(), -getArrowDeltaY())); + } + if (getArrowConfiguration().getPart() != ArrowPart.TOP_PART) { + getArrowConfiguration().applyThicknessOnly(ug).apply(new UTranslate(x2, textHeight + arrowHeight)) + .draw(new ULine(getArrowDeltaX(), getArrowDeltaY())); + } + } else if (getArrowConfiguration().getDressing2().getHead() == ArrowHead.NORMAL) { + final UPolygon polygon = getPolygon().translate(0, textHeight + arrowHeight); + ug.apply(getForegroundColor().bg()).apply(UTranslate.dx(x2)).draw(polygon); + } } - getTextBlock().drawU(ug.apply(UTranslate.dx(getMarginX1()))); + if (getArrowConfiguration().isReverseDefine()) { + getTextBlock().drawU(ug.apply(UTranslate.dx(-getPureTextWidth(stringBounder)))); + } else { + getTextBlock().drawU(ug.apply(UTranslate.dx(getMarginX1()))); + } } - private UPolygon getPolygon(final double textAndArrowHeight) { + private UPolygon getPolygon() { final UPolygon polygon = new UPolygon(); + final double direction = getArrowConfiguration().isReverseDefine() ? -1 : 1; + final double x = direction * getArrowDeltaX(); if (getArrowConfiguration().getPart() == ArrowPart.TOP_PART) { - polygon.addPoint(getArrowDeltaX(), textAndArrowHeight - getArrowDeltaY()); - polygon.addPoint(0, textAndArrowHeight); - polygon.addPoint(getArrowDeltaX(), textAndArrowHeight); + polygon.addPoint(x, -getArrowDeltaY()); + polygon.addPoint(0, 0); + polygon.addPoint(x, 0); } else if (getArrowConfiguration().getPart() == ArrowPart.BOTTOM_PART) { - polygon.addPoint(getArrowDeltaX(), textAndArrowHeight); - polygon.addPoint(0, textAndArrowHeight); - polygon.addPoint(getArrowDeltaX(), textAndArrowHeight + getArrowDeltaY()); + polygon.addPoint(x, 0); + polygon.addPoint(0, 0); + polygon.addPoint(x, getArrowDeltaY()); } else { - polygon.addPoint(getArrowDeltaX(), textAndArrowHeight - getArrowDeltaY()); - polygon.addPoint(0, textAndArrowHeight); - polygon.addPoint(getArrowDeltaX(), textAndArrowHeight + getArrowDeltaY()); + polygon.addPoint(x, -getArrowDeltaY()); + polygon.addPoint(0, 0); + polygon.addPoint(x, getArrowDeltaY()); if (niceArrow) { - polygon.addPoint(getArrowDeltaX() - 4, textAndArrowHeight); + polygon.addPoint(x - direction * 4, 0); } } return polygon; @@ -170,14 +197,14 @@ public class ComponentRoseSelfArrow extends AbstractComponentRoseArrow { public Point2D getEndPoint(StringBounder stringBounder, Dimension2D dimensionToUse) { final double textHeight = getTextHeight(stringBounder); - final double textAndArrowHeight = (textHeight + getArrowOnlyHeight(stringBounder)); + final double textAndArrowHeight = textHeight + getArrowOnlyHeight(stringBounder); return new Point2D.Double(getPaddingX(), textAndArrowHeight + getPaddingY()); } @Override public double getYPoint(StringBounder stringBounder) { final double textHeight = getTextHeight(stringBounder); - final double textAndArrowHeight = (textHeight + getArrowOnlyHeight(stringBounder)); + final double textAndArrowHeight = textHeight + getArrowOnlyHeight(stringBounder); return (textHeight + textAndArrowHeight) / 2 + getPaddingX(); } @@ -194,10 +221,9 @@ public class ComponentRoseSelfArrow extends AbstractComponentRoseArrow { public double getPreferredWidth(StringBounder stringBounder) { return Math.max(getTextWidth(stringBounder), arrowWidth); } - + public double getPosArrow(StringBounder stringBounder) { throw new UnsupportedOperationException(); } - } diff --git a/src/net/sourceforge/plantuml/sprite/ListSpriteDiagram.java b/src/net/sourceforge/plantuml/sprite/ListSpriteDiagram.java index aa7af0f08..2eba7c9da 100644 --- a/src/net/sourceforge/plantuml/sprite/ListSpriteDiagram.java +++ b/src/net/sourceforge/plantuml/sprite/ListSpriteDiagram.java @@ -46,6 +46,7 @@ import net.sourceforge.plantuml.UmlDiagram; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.AbstractTextBlock; import net.sourceforge.plantuml.graphic.FontConfiguration; @@ -61,8 +62,8 @@ import net.sourceforge.plantuml.ugraphic.color.HColorUtils; public class ListSpriteDiagram extends UmlDiagram { - public ListSpriteDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.HELP, skinParam); + public ListSpriteDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.HELP, skinParam); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/sprite/ListSpriteDiagramFactory.java b/src/net/sourceforge/plantuml/sprite/ListSpriteDiagramFactory.java index 24e69faa2..da62bae34 100644 --- a/src/net/sourceforge/plantuml/sprite/ListSpriteDiagramFactory.java +++ b/src/net/sourceforge/plantuml/sprite/ListSpriteDiagramFactory.java @@ -41,15 +41,10 @@ import java.util.List; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; +import net.sourceforge.plantuml.core.UmlSource; public class ListSpriteDiagramFactory extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public ListSpriteDiagramFactory(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - @Override protected List createCommands() { @@ -61,8 +56,8 @@ public class ListSpriteDiagramFactory extends PSystemCommandFactory { } @Override - public ListSpriteDiagram createEmptyDiagram() { - return new ListSpriteDiagram(skinParam); + public ListSpriteDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new ListSpriteDiagram(source, skinParam); } } diff --git a/src/net/sourceforge/plantuml/sprite/PSystemListInternalSprites.java b/src/net/sourceforge/plantuml/sprite/PSystemListInternalSprites.java index 688773901..c531e686a 100644 --- a/src/net/sourceforge/plantuml/sprite/PSystemListInternalSprites.java +++ b/src/net/sourceforge/plantuml/sprite/PSystemListInternalSprites.java @@ -42,6 +42,7 @@ import java.util.List; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.donors.PSystemDonors; import net.sourceforge.plantuml.graphic.TextBlock; import net.sourceforge.plantuml.graphic.TextBlockHorizontal; @@ -50,6 +51,10 @@ import net.sourceforge.plantuml.graphic.VerticalAlignment; public class PSystemListInternalSprites extends PlainDiagram { + public PSystemListInternalSprites(UmlSource source) { + super(source); + } + @Override protected UDrawable getRootDrawable(FileFormatOption fileFormatOption) throws IOException { final List lines = new ArrayList<>(); diff --git a/src/net/sourceforge/plantuml/sprite/PSystemListInternalSpritesFactory.java b/src/net/sourceforge/plantuml/sprite/PSystemListInternalSpritesFactory.java index 3da48d1a4..9bc604272 100644 --- a/src/net/sourceforge/plantuml/sprite/PSystemListInternalSpritesFactory.java +++ b/src/net/sourceforge/plantuml/sprite/PSystemListInternalSpritesFactory.java @@ -38,14 +38,15 @@ package net.sourceforge.plantuml.sprite; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.StringUtils; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemListInternalSpritesFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final String lineLower = StringUtils.goLowerCase(line); if (lineLower.startsWith("listsprite")) { - return new PSystemListInternalSprites(); + return new PSystemListInternalSprites(source); } return null; } diff --git a/src/net/sourceforge/plantuml/sprite/StdlibDiagram.java b/src/net/sourceforge/plantuml/sprite/StdlibDiagram.java index 8b386e34a..f86f2864c 100644 --- a/src/net/sourceforge/plantuml/sprite/StdlibDiagram.java +++ b/src/net/sourceforge/plantuml/sprite/StdlibDiagram.java @@ -51,6 +51,7 @@ import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.CommandFactorySprite; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.AbstractTextBlock; import net.sourceforge.plantuml.graphic.FontConfiguration; @@ -71,8 +72,8 @@ public class StdlibDiagram extends UmlDiagram { private static final int WIDTH = 1800; private String name; - public StdlibDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.HELP, skinParam); + public StdlibDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.HELP, skinParam); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/sprite/StdlibDiagramFactory.java b/src/net/sourceforge/plantuml/sprite/StdlibDiagramFactory.java index 36c3ffe60..fda564fc0 100644 --- a/src/net/sourceforge/plantuml/sprite/StdlibDiagramFactory.java +++ b/src/net/sourceforge/plantuml/sprite/StdlibDiagramFactory.java @@ -41,15 +41,10 @@ import java.util.List; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; +import net.sourceforge.plantuml.core.UmlSource; public class StdlibDiagramFactory extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public StdlibDiagramFactory(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - @Override protected List createCommands() { @@ -59,8 +54,8 @@ public class StdlibDiagramFactory extends PSystemCommandFactory { } @Override - public StdlibDiagram createEmptyDiagram() { - return new StdlibDiagram(skinParam); + public StdlibDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new StdlibDiagram(source, skinParam); } } diff --git a/src/net/sourceforge/plantuml/statediagram/StateDiagram.java b/src/net/sourceforge/plantuml/statediagram/StateDiagram.java index 56b167ccb..d88266c6e 100644 --- a/src/net/sourceforge/plantuml/statediagram/StateDiagram.java +++ b/src/net/sourceforge/plantuml/statediagram/StateDiagram.java @@ -40,6 +40,7 @@ import java.util.Objects; import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.classdiagram.AbstractEntityDiagram; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.cucadiagram.EntityUtils; @@ -58,8 +59,8 @@ public class StateDiagram extends AbstractEntityDiagram { private static final String CONCURRENT_PREFIX = "CONC"; - public StateDiagram(ISkinSimple skinParam) { - super(UmlDiagramType.STATE, skinParam); + public StateDiagram(UmlSource source, ISkinSimple skinParam) { + super(source, UmlDiagramType.STATE, skinParam); // setNamespaceSeparator(null); } diff --git a/src/net/sourceforge/plantuml/statediagram/StateDiagramFactory.java b/src/net/sourceforge/plantuml/statediagram/StateDiagramFactory.java index 59589e5f2..1b9e6be58 100644 --- a/src/net/sourceforge/plantuml/statediagram/StateDiagramFactory.java +++ b/src/net/sourceforge/plantuml/statediagram/StateDiagramFactory.java @@ -52,6 +52,7 @@ import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnEntity; import net.sourceforge.plantuml.command.note.CommandFactoryNoteOnLink; import net.sourceforge.plantuml.command.regex.RegexLeaf; import net.sourceforge.plantuml.command.regex.RegexOr; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.statediagram.command.CommandAddField; import net.sourceforge.plantuml.statediagram.command.CommandConcurrentState; import net.sourceforge.plantuml.statediagram.command.CommandCreatePackageState; @@ -61,15 +62,9 @@ import net.sourceforge.plantuml.statediagram.command.CommandLinkState; public class StateDiagramFactory extends PSystemCommandFactory { - private final ISkinSimple skinParam; - - public StateDiagramFactory(ISkinSimple skinParam) { - this.skinParam = skinParam; - } - @Override - public StateDiagram createEmptyDiagram() { - return new StateDiagram(skinParam); + public StateDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new StateDiagram(source, skinParam); } @Override @@ -86,7 +81,7 @@ public class StateDiagramFactory extends PSystemCommandFactory { cmds.add(new CommandConcurrentState()); final CommandFactoryNoteOnEntity factoryNoteOnEntityCommand = new CommandFactoryNoteOnEntity("state", - new RegexOr("ENTITY", new RegexLeaf("[\\p{L}0-9_.]+"), // + new RegexOr("ENTITY", new RegexLeaf("[%pLN_.]+"), // new RegexLeaf("[%g][^%g]+[%g]") // )); cmds.add(factoryNoteOnEntityCommand.createMultiLine(true)); diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java b/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java index c5c7b1923..5f7a4c152 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandAddField.java @@ -58,7 +58,7 @@ public class CommandAddField extends SingleLineCommand2 { private static IRegex getRegexConcat() { return RegexConcat.build(CommandAddField.class.getName(), RegexLeaf.start(), // new RegexOr( // - new RegexLeaf("CODE3", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE3", "([%pLN_.]+)"), // new RegexLeaf("CODE4", "[%g]([^%g]+)[%g]")), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf(":"), // diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java b/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java index 91845d1ac..4f3e2b243 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandCreatePackageState.java @@ -74,7 +74,7 @@ public class CommandCreatePackageState extends SingleLineCommand2 RegexLeaf.spaceOneOrMore(), // new RegexOr(// new RegexConcat(// - new RegexLeaf("CODE1", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE1", "([%pLN_.]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // @@ -84,7 +84,7 @@ public class CommandCreatePackageState extends SingleLineCommand2 new RegexLeaf("DISPLAY2", "[%g]([^%g]+)[%g]"), RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), RegexLeaf.spaceOneOrMore() // )), // - new RegexLeaf("CODE2", "([\\p{L}0-9_.]+)"))), // + new RegexLeaf("CODE2", "([%pLN_.]+)"))), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // RegexLeaf.spaceZeroOrMore(), // diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java b/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java index a6aee1e52..22c4d2da0 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandCreateState.java @@ -73,14 +73,14 @@ public class CommandCreateState extends SingleLineCommand2 { new RegexOr(// new RegexConcat(// - new RegexLeaf("CODE1", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE1", "([%pLN_.]+)"), // RegexLeaf.spaceOneOrMore(), new RegexLeaf("as"), RegexLeaf.spaceOneOrMore(), // new RegexLeaf("DISPLAY1", "[%g]([^%g]+)[%g]")), // new RegexConcat(// new RegexLeaf("DISPLAY2", "[%g]([^%g]+)[%g]"), // RegexLeaf.spaceOneOrMore(), new RegexLeaf("as"), RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE2", "([\\p{L}0-9_.]+)")), // - new RegexLeaf("CODE3", "([\\p{L}0-9_.]+)"), // + new RegexLeaf("CODE2", "([%pLN_.]+)")), // + new RegexLeaf("CODE3", "([%pLN_.]+)"), // new RegexLeaf("CODE4", "[%g]([^%g]+)[%g]")), // RegexLeaf.spaceZeroOrMore(), // new RegexLeaf("STEREOTYPE", "(\\<\\<.*\\>\\>)?"), // diff --git a/src/net/sourceforge/plantuml/statediagram/command/CommandLinkState.java b/src/net/sourceforge/plantuml/statediagram/command/CommandLinkState.java index 61c5272fe..8bd444811 100644 --- a/src/net/sourceforge/plantuml/statediagram/command/CommandLinkState.java +++ b/src/net/sourceforge/plantuml/statediagram/command/CommandLinkState.java @@ -93,7 +93,7 @@ public class CommandLinkState extends SingleLineCommand2 { private static RegexLeaf getStatePattern(String name) { return new RegexLeaf(name, - "([\\p{L}0-9_.:]+|[\\p{L}0-9_.:]+\\[H\\*?\\]|\\[\\*\\]|\\[H\\*?\\]|(?:==+)(?:[\\p{L}0-9_.:]+)(?:==+))[%s]*(\\<\\<.*\\>\\>)?[%s]*(#\\w+)?"); + "([%pLN_.:]+|[%pLN_.:]+\\[H\\*?\\]|\\[\\*\\]|\\[H\\*?\\]|(?:==+)(?:[%pLN_.:]+)(?:==+))[%s]*(\\<\\<.*\\>\\>)?[%s]*(#\\w+)?"); } @Override diff --git a/src/net/sourceforge/plantuml/stats/PSystemStats.java b/src/net/sourceforge/plantuml/stats/PSystemStats.java index 35395b599..0e8566447 100644 --- a/src/net/sourceforge/plantuml/stats/PSystemStats.java +++ b/src/net/sourceforge/plantuml/stats/PSystemStats.java @@ -34,20 +34,22 @@ */ package net.sourceforge.plantuml.stats; +import java.io.IOException; + import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.core.DiagramDescription; - -import java.io.IOException; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemStats extends PlainStringsDiagram { - PSystemStats() { + PSystemStats(UmlSource source) { + super(source); final StatsImpl stats = (StatsImpl) StatsUtils.getStats(); strings.addAll(new CreoleConverter(stats).toCreole()); } - public static PSystemStats create() throws IOException { - return new PSystemStats(); + public static PSystemStats create(UmlSource source) throws IOException { + return new PSystemStats(source); } public DiagramDescription getDescription() { diff --git a/src/net/sourceforge/plantuml/stats/PSystemStatsFactory.java b/src/net/sourceforge/plantuml/stats/PSystemStatsFactory.java index 99cb47e6e..57ca9047a 100644 --- a/src/net/sourceforge/plantuml/stats/PSystemStatsFactory.java +++ b/src/net/sourceforge/plantuml/stats/PSystemStatsFactory.java @@ -39,14 +39,15 @@ import java.io.IOException; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemStatsFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { try { if (line.matches("(?i)^stats\\s*$")) { - return PSystemStats.create(); + return PSystemStats.create(source); } } catch (IOException e) { Log.error("Error " + e); diff --git a/src/net/sourceforge/plantuml/style/CommandStyleMultilinesCSS.java b/src/net/sourceforge/plantuml/style/CommandStyleMultilinesCSS.java index 17f85fd47..ed93cec06 100644 --- a/src/net/sourceforge/plantuml/style/CommandStyleMultilinesCSS.java +++ b/src/net/sourceforge/plantuml/style/CommandStyleMultilinesCSS.java @@ -53,7 +53,7 @@ public class CommandStyleMultilinesCSS extends CommandMultilines2 @Override public String getPatternEnd() { - return "(?i)^[%s]*\\[%s]*$"; + return "^[%s]*\\[%s]*$"; } private static IRegex getRegexConcat() { diff --git a/src/net/sourceforge/plantuml/sudoku/PSystemSudoku.java b/src/net/sourceforge/plantuml/sudoku/PSystemSudoku.java index f80b08a08..970433aef 100644 --- a/src/net/sourceforge/plantuml/sudoku/PSystemSudoku.java +++ b/src/net/sourceforge/plantuml/sudoku/PSystemSudoku.java @@ -43,6 +43,7 @@ import net.sourceforge.plantuml.FileFormat; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemSudoku extends AbstractPSystem { @@ -69,7 +70,8 @@ public class PSystemSudoku extends AbstractPSystem { return new DiagramDescription("(Sudoku)"); } - public PSystemSudoku(Long seed) { + public PSystemSudoku(UmlSource source, Long seed) { + super(source); sudoku = new SudokuDLX(seed); } diff --git a/src/net/sourceforge/plantuml/sudoku/PSystemSudokuFactory.java b/src/net/sourceforge/plantuml/sudoku/PSystemSudokuFactory.java index c631b074c..c5e73480c 100644 --- a/src/net/sourceforge/plantuml/sudoku/PSystemSudokuFactory.java +++ b/src/net/sourceforge/plantuml/sudoku/PSystemSudokuFactory.java @@ -41,22 +41,23 @@ import net.sourceforge.plantuml.command.PSystemSingleLineFactory; import net.sourceforge.plantuml.command.regex.Matcher2; import net.sourceforge.plantuml.command.regex.MyPattern; import net.sourceforge.plantuml.command.regex.Pattern2; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemSudokuFactory extends PSystemSingleLineFactory { - final private static Pattern2 p = MyPattern.cmpile("(?i)^sudoku(?:[%s]+([0-9a-zA-Z]+))?[%s]*$"); + final private static Pattern2 p = MyPattern.cmpile("^sudoku(?:[%s]+([0-9a-zA-Z]+))?[%s]*$"); @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { final Matcher2 m = p.matcher(line); if (m.find() == false) { return null; } if (m.group(1) == null) { - return new PSystemSudoku(null); + return new PSystemSudoku(source, null); } - return new PSystemSudoku(Long.parseLong(StringUtils.goLowerCase(m.group(1)), 36)); + return new PSystemSudoku(source, Long.parseLong(StringUtils.goLowerCase(m.group(1)), 36)); } } diff --git a/src/net/sourceforge/plantuml/swing/AboutWindow.java b/src/net/sourceforge/plantuml/swing/AboutWindow.java index 8c62ed087..06bd6b5fc 100644 --- a/src/net/sourceforge/plantuml/swing/AboutWindow.java +++ b/src/net/sourceforge/plantuml/swing/AboutWindow.java @@ -40,6 +40,7 @@ import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.List; import javax.swing.BorderFactory; @@ -54,6 +55,8 @@ import javax.swing.WindowConstants; import javax.swing.border.BevelBorder; import javax.swing.border.CompoundBorder; +import net.sourceforge.plantuml.StringLocated; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.version.PSystemVersion; import net.sourceforge.plantuml.version.Version; @@ -118,12 +121,12 @@ class AboutWindow extends JFrame { } private JComponent getInfoVersion() { - final PSystemVersion p1 = PSystemVersion.createShowVersion(); + final PSystemVersion p1 = PSystemVersion.createShowVersion2(new UmlSource(new ArrayList(), false)); return getJComponent(skip(p1.getLines())); } private JComponent getInfoAuthors() { - final PSystemVersion p1 = PSystemVersion.createShowAuthors(); + final PSystemVersion p1 = PSystemVersion.createShowAuthors2(new UmlSource(new ArrayList(), false)); return getJComponent(skip(p1.getLines())); } diff --git a/src/net/sourceforge/plantuml/tim/TContext.java b/src/net/sourceforge/plantuml/tim/TContext.java index 63b20d6c0..6d880fde8 100644 --- a/src/net/sourceforge/plantuml/tim/TContext.java +++ b/src/net/sourceforge/plantuml/tim/TContext.java @@ -102,6 +102,8 @@ import net.sourceforge.plantuml.tim.stdlib.LogicalNot; import net.sourceforge.plantuml.tim.stdlib.Lower; import net.sourceforge.plantuml.tim.stdlib.Newline; import net.sourceforge.plantuml.tim.stdlib.RetrieveProcedure; +import net.sourceforge.plantuml.tim.stdlib.ReverseHsluvColor; +import net.sourceforge.plantuml.tim.stdlib.ReverseColor; import net.sourceforge.plantuml.tim.stdlib.SetVariableValue; import net.sourceforge.plantuml.tim.stdlib.StringFunction; import net.sourceforge.plantuml.tim.stdlib.Strlen; @@ -160,6 +162,8 @@ public class TContext { functionsSet.addFunction(new Darken()); functionsSet.addFunction(new IsDark()); functionsSet.addFunction(new IsLight()); + functionsSet.addFunction(new ReverseHsluvColor()); + functionsSet.addFunction(new ReverseColor()); // %standard_exists_function // %str_replace // !exit diff --git a/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java b/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java new file mode 100644 index 000000000..6df295c1c --- /dev/null +++ b/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java @@ -0,0 +1,73 @@ +/* ======================================================================== + * PlantUML : a free UML diagram generator + * ======================================================================== + * + * (C) Copyright 2009-2020, Arnaud Roques + * + * Project Info: http://plantuml.com + * + * If you like this project or if you find it useful, you can support us at: + * + * http://plantuml.com/patreon (only 1$ per month!) + * http://plantuml.com/paypal + * + * 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.tim.stdlib; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import net.sourceforge.plantuml.LineLocation; +import net.sourceforge.plantuml.tim.EaterException; +import net.sourceforge.plantuml.tim.EaterExceptionLocated; +import net.sourceforge.plantuml.tim.TContext; +import net.sourceforge.plantuml.tim.TFunctionSignature; +import net.sourceforge.plantuml.tim.TMemory; +import net.sourceforge.plantuml.tim.expression.TValue; +import net.sourceforge.plantuml.ugraphic.color.HColor; +import net.sourceforge.plantuml.ugraphic.color.HColorSet; +import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; + +public class ReverseColor extends SimpleReturnFunction { + + public TFunctionSignature getSignature() { + return new TFunctionSignature("%reverse_color", 2); + } + + public boolean canCover(int nbArg, Set namedArgument) { + return nbArg == 1; + } + + public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, + Map named) throws EaterException, EaterExceptionLocated { + final String colorString = values.get(0).toString(); + try { + HColor color = HColorSet.instance().getColorLEGACY(colorString); + color = color.reverse(); + return TValue.fromString(color.asString()); + } catch (NoSuchColorException e) { + throw EaterException.located("No such color"); + } + } +} diff --git a/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java b/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java new file mode 100644 index 000000000..ee35c8037 --- /dev/null +++ b/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java @@ -0,0 +1,73 @@ +/* ======================================================================== + * PlantUML : a free UML diagram generator + * ======================================================================== + * + * (C) Copyright 2009-2020, Arnaud Roques + * + * Project Info: http://plantuml.com + * + * If you like this project or if you find it useful, you can support us at: + * + * http://plantuml.com/patreon (only 1$ per month!) + * http://plantuml.com/paypal + * + * 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.tim.stdlib; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import net.sourceforge.plantuml.LineLocation; +import net.sourceforge.plantuml.tim.EaterException; +import net.sourceforge.plantuml.tim.EaterExceptionLocated; +import net.sourceforge.plantuml.tim.TContext; +import net.sourceforge.plantuml.tim.TFunctionSignature; +import net.sourceforge.plantuml.tim.TMemory; +import net.sourceforge.plantuml.tim.expression.TValue; +import net.sourceforge.plantuml.ugraphic.color.HColor; +import net.sourceforge.plantuml.ugraphic.color.HColorSet; +import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException; + +public class ReverseHsluvColor extends SimpleReturnFunction { + + public TFunctionSignature getSignature() { + return new TFunctionSignature("%reverse_hsluv_color", 2); + } + + public boolean canCover(int nbArg, Set namedArgument) { + return nbArg == 1; + } + + public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, + Map named) throws EaterException, EaterExceptionLocated { + final String colorString = values.get(0).toString(); + try { + HColor color = HColorSet.instance().getColorLEGACY(colorString); + color = color.reverseHsluv(); + return TValue.fromString(color.asString()); + } catch (NoSuchColorException e) { + throw EaterException.located("No such color"); + } + } +} diff --git a/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java b/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java index a8acdf784..e593e1323 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java +++ b/src/net/sourceforge/plantuml/timingdiagram/TimingDiagram.java @@ -52,6 +52,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; @@ -88,8 +89,8 @@ public class TimingDiagram extends UmlDiagram implements Clocks { return new DiagramDescription("(Timing Diagram)"); } - public TimingDiagram() { - super(UmlDiagramType.TIMING); + public TimingDiagram(UmlSource source) { + super(source, UmlDiagramType.TIMING); } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/TimingDiagramFactory.java b/src/net/sourceforge/plantuml/timingdiagram/TimingDiagramFactory.java index d00e050fe..fa766ce50 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/TimingDiagramFactory.java +++ b/src/net/sourceforge/plantuml/timingdiagram/TimingDiagramFactory.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.timingdiagram; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.CommandFootboxIgnored; import net.sourceforge.plantuml.command.PSystemCommandFactory; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.timingdiagram.command.CommandAnalog; import net.sourceforge.plantuml.timingdiagram.command.CommandAtPlayer; import net.sourceforge.plantuml.timingdiagram.command.CommandAtTime; @@ -65,8 +67,8 @@ import net.sourceforge.plantuml.timingdiagram.command.CommandTimeMessage; public class TimingDiagramFactory extends PSystemCommandFactory { @Override - public TimingDiagram createEmptyDiagram() { - return new TimingDiagram(); + public TimingDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new TimingDiagram(source); } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandAnalog.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandAnalog.java index 06645898e..f3a177432 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandAnalog.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandAnalog.java @@ -74,7 +74,7 @@ public class CommandAnalog extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore())), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), RegexLeaf.end()); + new RegexLeaf("CODE", "([%pLN_.@]+)"), RegexLeaf.end()); } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandAtTime.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandAtTime.java index 0cd16b6cf..efe8b95ea 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandAtTime.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandAtTime.java @@ -60,7 +60,7 @@ public class CommandAtTime extends SingleLineCommand2 { new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf(":"), // - new RegexLeaf("CODE", "([\\p{L}0-9_.]+)") // + new RegexLeaf("CODE", "([%pLN_.]+)") // )), // RegexLeaf.spaceZeroOrMore(), // RegexLeaf.end()); diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandBinary.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandBinary.java index b8219f307..38dfb8a4c 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandBinary.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandBinary.java @@ -63,7 +63,7 @@ public class CommandBinary extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), RegexLeaf.end()); + new RegexLeaf("CODE", "([%pLN_.@]+)"), RegexLeaf.end()); } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandChangeState.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandChangeState.java index e1aa470aa..714fd1a7d 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandChangeState.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandChangeState.java @@ -55,7 +55,7 @@ abstract class CommandChangeState extends SingleLineCommand2 { super(pattern); } - static final String STATE_CODE = "([\\p{L}0-9_][\\p{L}0-9_.]*)"; + static final String STATE_CODE = "([%pLN_][%pLN_.]*)"; static ColorParser color() { return ColorParser.simpleColor(ColorType.BACK); diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandClock.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandClock.java index 244625251..20a879f33 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandClock.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandClock.java @@ -59,7 +59,7 @@ public class CommandClock extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore())), // new RegexLeaf("TYPE", "clock"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("CODE", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("with"), // RegexLeaf.spaceOneOrMore(), // diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateLong.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateLong.java index 4b935b157..a9d618b27 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateLong.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateLong.java @@ -53,7 +53,7 @@ public class CommandDefineStateLong extends SingleLineCommand2 { private static IRegex getRegexConcat() { return RegexConcat.build(CommandDefineStateLong.class.getName(), RegexLeaf.start(), // - new RegexLeaf("PLAYER", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("PLAYER", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("has"), // RegexLeaf.spaceOneOrMore(), // @@ -61,7 +61,7 @@ public class CommandDefineStateLong extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("STATE", "([\\p{L}0-9_.@]+)"), RegexLeaf.end()); + new RegexLeaf("STATE", "([%pLN_.@]+)"), RegexLeaf.end()); } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateShort.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateShort.java index 440af81f2..b1739a597 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateShort.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandDefineStateShort.java @@ -55,12 +55,12 @@ public class CommandDefineStateShort extends SingleLineCommand2 { private static IRegex getRegexConcat() { return RegexConcat.build(CommandDefineStateShort.class.getName(), RegexLeaf.start(), // - new RegexLeaf("PLAYER", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("PLAYER", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("has"), // RegexLeaf.spaceOneOrMore(), // - new RegexLeaf("STATE", "([\\p{L}0-9_.@]+)"), // - new RegexLeaf("STATES", "((,([\\p{L}0-9_.@]+))*)"), RegexLeaf.end()); + new RegexLeaf("STATE", "([%pLN_.@]+)"), // + new RegexLeaf("STATES", "((,([%pLN_.@]+))*)"), RegexLeaf.end()); } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandNoteLong.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandNoteLong.java index 20a839dd0..3f9bf62dc 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandNoteLong.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandNoteLong.java @@ -58,7 +58,7 @@ public class CommandNoteLong extends CommandMultilines2 { @Override public String getPatternEnd() { - return "(?i)^end[%s]?note$"; + return "^end[%s]?note$"; } @Override diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandPixelHeight.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandPixelHeight.java index f2cd54c5d..b1a5eae97 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandPixelHeight.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandPixelHeight.java @@ -53,7 +53,7 @@ public class CommandPixelHeight extends SingleLineCommand2 { private static IRegex getRegexConcat() { return RegexConcat.build(CommandPixelHeight.class.getName(), RegexLeaf.start(), // - new RegexLeaf("PLAYER", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("PLAYER", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("is"), // RegexLeaf.spaceOneOrMore(), // diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandRobustConcise.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandRobustConcise.java index b96eae6b6..064c0df93 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandRobustConcise.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandRobustConcise.java @@ -66,7 +66,7 @@ public class CommandRobustConcise extends SingleLineCommand2 { RegexLeaf.spaceOneOrMore(), // new RegexLeaf("as"), // RegexLeaf.spaceOneOrMore())), // - new RegexLeaf("CODE", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("CODE", "([%pLN_.@]+)"), // RegexLeaf.end()); } diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandTicks.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandTicks.java index 44c2d0ef4..33758703b 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandTicks.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandTicks.java @@ -54,7 +54,7 @@ public class CommandTicks extends SingleLineCommand2 { private static IRegex getRegexConcat() { return RegexConcat.build(CommandTicks.class.getName(), RegexLeaf.start(), // - new RegexLeaf("PLAYER", "([\\p{L}0-9_.@]+)"), // + new RegexLeaf("PLAYER", "([%pLN_.@]+)"), // RegexLeaf.spaceOneOrMore(), // new RegexLeaf("ticks"), // RegexLeaf.spaceOneOrMore(), // diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/CommandTimeMessage.java b/src/net/sourceforge/plantuml/timingdiagram/command/CommandTimeMessage.java index c55571035..e86373305 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/CommandTimeMessage.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/CommandTimeMessage.java @@ -51,7 +51,7 @@ import net.sourceforge.plantuml.timingdiagram.TimingDiagram; public class CommandTimeMessage extends SingleLineCommand2 { - public static final String PLAYER_CODE = "([\\p{L}_][\\p{L}0-9_.]*)"; + public static final String PLAYER_CODE = "([\\p{L}_][%pLN_.]*)"; public CommandTimeMessage() { super(getRegexConcat()); diff --git a/src/net/sourceforge/plantuml/timingdiagram/command/TimeTickBuilder.java b/src/net/sourceforge/plantuml/timingdiagram/command/TimeTickBuilder.java index 47b495079..0d0995b05 100644 --- a/src/net/sourceforge/plantuml/timingdiagram/command/TimeTickBuilder.java +++ b/src/net/sourceforge/plantuml/timingdiagram/command/TimeTickBuilder.java @@ -50,11 +50,11 @@ public class TimeTickBuilder { public static IRegex expressionAtWithoutArobase(String name) { return new RegexOr( // - new RegexLeaf(name + "CODE", ":([\\p{L}0-9_.]+)([-+]\\d+)?"), // + new RegexLeaf(name + "CODE", ":([%pLN_.]+)([-+]\\d+)?"), // new RegexLeaf(name + "DATE", "(\\d+)/(\\d+)/(\\d+)"), // new RegexLeaf(name + "HOUR", "(\\d+):(\\d+):(\\d+)"), // new RegexLeaf(name + "DIGIT", "(\\+?)(-?\\d+\\.?\\d*)"), // - new RegexLeaf(name + "CLOCK", "([\\p{L}0-9_.@]+)\\*(\\d+)")); + new RegexLeaf(name + "CLOCK", "([%pLN_.@]+)\\*(\\d+)")); } public static IRegex expressionAtWithArobase(String name) { diff --git a/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperIdentity.java b/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperIdentity.java index f492b0b36..bd5f0d42c 100644 --- a/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperIdentity.java +++ b/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperIdentity.java @@ -55,6 +55,9 @@ public class ColorMapperIdentity extends AbstractColorMapper implements ColorMap if (color instanceof HColorAutomatic) { throw new IllegalStateException(); } + if (color instanceof HColorAutomaticLegacy) { + throw new IllegalStateException(); + } return ((HColorSimple) color).getColor999(); } } diff --git a/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperLightnessInverse.java b/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperLightnessInverse.java index 0dfb7f059..4cdd6a63e 100644 --- a/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperLightnessInverse.java +++ b/src/net/sourceforge/plantuml/ugraphic/color/ColorMapperLightnessInverse.java @@ -52,6 +52,8 @@ public class ColorMapperLightnessInverse extends AbstractColorMapper implements if (color instanceof HColorMiddle) { return ((HColorMiddle) color).getMappedColor(this); } + // return ColorUtils.reverseHsluv(((HColorSimple) color).getColor999()); return ColorUtils.getReversed(((HColorSimple) color).getColor999()); + } } diff --git a/src/net/sourceforge/plantuml/ugraphic/color/ColorUtils.java b/src/net/sourceforge/plantuml/ugraphic/color/ColorUtils.java index 359b7b3aa..95934800c 100644 --- a/src/net/sourceforge/plantuml/ugraphic/color/ColorUtils.java +++ b/src/net/sourceforge/plantuml/ugraphic/color/ColorUtils.java @@ -76,6 +76,27 @@ public class ColorUtils { * https://www.boronine.com/2012/03/26/Color-Spaces-for-Human-Beings/ * */ + public static synchronized Color reverseHsluv(Color color) { + final int red = color.getRed(); + final int green = color.getGreen(); + final int blue = color.getBlue(); + + final double hsluv[] = HUSLColorConverter.rgbToHsluv(new double[] { red / 256.0, green / 256.0, blue / 256.0 }); + + final double h = hsluv[0]; + final double s = hsluv[1]; + double l = (hsluv[2] + 50) % 100; + l += 0.25 * (50 - l); + + final double rgb[] = HUSLColorConverter.hsluvToRgb(new double[] { h, s, l }); + + final int red2 = to255(rgb[0]); + final int green2 = to255(rgb[1]); + final int blue2 = to255(rgb[2]); + + return new Color(red2, green2, blue2); + } + public static synchronized Color getReversed(Color color) { final int red = color.getRed(); final int green = color.getGreen(); diff --git a/src/net/sourceforge/plantuml/ugraphic/color/HColor.java b/src/net/sourceforge/plantuml/ugraphic/color/HColor.java index 7288130fe..4b19931b5 100644 --- a/src/net/sourceforge/plantuml/ugraphic/color/HColor.java +++ b/src/net/sourceforge/plantuml/ugraphic/color/HColor.java @@ -50,4 +50,8 @@ public interface HColor extends UChange { public boolean isDark(); + public HColor reverseHsluv(); + + public HColor reverse(); + } diff --git a/src/net/sourceforge/plantuml/ugraphic/color/HColorAbstract.java b/src/net/sourceforge/plantuml/ugraphic/color/HColorAbstract.java index 925cc2369..7eee91204 100644 --- a/src/net/sourceforge/plantuml/ugraphic/color/HColorAbstract.java +++ b/src/net/sourceforge/plantuml/ugraphic/color/HColorAbstract.java @@ -46,19 +46,32 @@ abstract class HColorAbstract implements HColor { }; } + @Override public HColor lighten(int ratio) { return this; } + @Override public HColor darken(int ratio) { return this; } - + + @Override + public HColor reverseHsluv() { + return this; + } + + @Override + public HColor reverse() { + return this; + } + @Override public boolean isDark() { return true; } + @Override public String asString() { return "?" + getClass().getSimpleName(); } diff --git a/src/net/sourceforge/plantuml/ugraphic/color/HColorSimple.java b/src/net/sourceforge/plantuml/ugraphic/color/HColorSimple.java index 36e29a7f9..2b6fbe64e 100644 --- a/src/net/sourceforge/plantuml/ugraphic/color/HColorSimple.java +++ b/src/net/sourceforge/plantuml/ugraphic/color/HColorSimple.java @@ -82,6 +82,16 @@ public class HColorSimple extends HColorAbstract implements HColor { return new HColorSimple(new HSLColor(hsl).getRGB(), false); } + @Override + public HColor reverseHsluv() { + return new HColorSimple(ColorUtils.reverseHsluv(color), false); + } + + @Override + public HColor reverse() { + return new HColorSimple(ColorOrder.RGB.getReverse(color), false); + } + @Override public boolean isDark() { return ColorUtils.getGrayScale(color) < 128; diff --git a/src/net/sourceforge/plantuml/utils/StartUtils.java b/src/net/sourceforge/plantuml/utils/StartUtils.java index 1b3f56de9..80e5be02c 100644 --- a/src/net/sourceforge/plantuml/utils/StartUtils.java +++ b/src/net/sourceforge/plantuml/utils/StartUtils.java @@ -47,8 +47,8 @@ public class StartUtils { public static final Pattern2 patternFilename = MyPattern .cmpile("^[@\\\\]start[^%s{}%g]+[%s{][%s%g]*([^%g]*?)[%s}%g]*$"); - public static final String PAUSE_PATTERN = "(?i)((?:\\W|\\<[^<>]*\\>)*)[@\\\\]unpause"; - public static final String START_PATTERN = "(?i)((?:[^\\w~]|\\<[^<>]*\\>)*)[@\\\\]start"; + public static final String PAUSE_PATTERN = "((?:\\W|\\<[^<>]*\\>)*)[@\\\\]unpause"; + public static final String START_PATTERN = "((?:[^\\w~]|\\<[^<>]*\\>)*)[@\\\\]start"; public static String beforeStartUml(final String s) { boolean inside = false; diff --git a/src/net/sourceforge/plantuml/version/PSystemKeycheck.java b/src/net/sourceforge/plantuml/version/PSystemKeycheck.java index 268d28854..ef5b9505c 100644 --- a/src/net/sourceforge/plantuml/version/PSystemKeycheck.java +++ b/src/net/sourceforge/plantuml/version/PSystemKeycheck.java @@ -46,6 +46,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.SignatureUtils; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.flashcode.FlashCodeFactory; import net.sourceforge.plantuml.flashcode.FlashCodeUtils; import net.sourceforge.plantuml.graphic.GraphicStrings; @@ -62,7 +63,8 @@ public class PSystemKeycheck extends PlainDiagram { final private String key; final private String sig; - public PSystemKeycheck(String sig, String key) { + public PSystemKeycheck(UmlSource source, String sig, String key) { + super(source); this.sig = sig; this.key = key; } diff --git a/src/net/sourceforge/plantuml/version/PSystemKeygen.java b/src/net/sourceforge/plantuml/version/PSystemKeygen.java index ef2e81bb2..5a2adb1db 100644 --- a/src/net/sourceforge/plantuml/version/PSystemKeygen.java +++ b/src/net/sourceforge/plantuml/version/PSystemKeygen.java @@ -45,6 +45,7 @@ import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.SignatureUtils; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.flashcode.FlashCodeFactory; import net.sourceforge.plantuml.flashcode.FlashCodeUtils; import net.sourceforge.plantuml.graphic.GraphicStrings; @@ -61,7 +62,8 @@ public class PSystemKeygen extends PlainDiagram { final private String key; - public PSystemKeygen(String key) { + public PSystemKeygen(UmlSource source, String key) { + super(source); this.key = key; } diff --git a/src/net/sourceforge/plantuml/version/PSystemLicense.java b/src/net/sourceforge/plantuml/version/PSystemLicense.java index 0f194fa59..c9de5aa0c 100644 --- a/src/net/sourceforge/plantuml/version/PSystemLicense.java +++ b/src/net/sourceforge/plantuml/version/PSystemLicense.java @@ -42,6 +42,7 @@ import java.util.List; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.graphic.GraphicStrings; import net.sourceforge.plantuml.graphic.UDrawable; import net.sourceforge.plantuml.svek.TextBlockBackcolored; @@ -58,8 +59,12 @@ public class PSystemLicense extends PlainDiagram implements UDrawable { return this; } - public static PSystemLicense create() throws IOException { - return new PSystemLicense(); + public static PSystemLicense create(UmlSource source) throws IOException { + return new PSystemLicense(source); + } + + public PSystemLicense(UmlSource source) { + super(source); } private TextBlockBackcolored getGraphicStrings(List strings) { diff --git a/src/net/sourceforge/plantuml/version/PSystemLicenseFactory.java b/src/net/sourceforge/plantuml/version/PSystemLicenseFactory.java index f312679a0..b4ab12552 100644 --- a/src/net/sourceforge/plantuml/version/PSystemLicenseFactory.java +++ b/src/net/sourceforge/plantuml/version/PSystemLicenseFactory.java @@ -39,14 +39,15 @@ import java.io.IOException; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; public class PSystemLicenseFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { try { if (line.matches("(?i)^li[sc][ea]n[sc]e\\s*$")) { - return PSystemLicense.create(); + return PSystemLicense.create(source); } } catch (IOException e) { Log.error("Error " + e); diff --git a/src/net/sourceforge/plantuml/version/PSystemVersion.java b/src/net/sourceforge/plantuml/version/PSystemVersion.java index 4023fdd26..8804190be 100644 --- a/src/net/sourceforge/plantuml/version/PSystemVersion.java +++ b/src/net/sourceforge/plantuml/version/PSystemVersion.java @@ -47,10 +47,11 @@ import net.sourceforge.plantuml.OptionFlags; import net.sourceforge.plantuml.OptionPrint; import net.sourceforge.plantuml.PlainStringsDiagram; import net.sourceforge.plantuml.Run; +import net.sourceforge.plantuml.StringLocated; import net.sourceforge.plantuml.core.DiagramDescription; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.dot.GraphvizUtils; import net.sourceforge.plantuml.dedication.PSystemDedication; -import net.sourceforge.plantuml.preproc.ImportedFiles; import net.sourceforge.plantuml.preproc.Stdlib; import net.sourceforge.plantuml.preproc2.PreprocessorUtils; import net.sourceforge.plantuml.security.ImageIO; @@ -61,7 +62,8 @@ import net.sourceforge.plantuml.svek.GraphvizCrash; public class PSystemVersion extends PlainStringsDiagram { - PSystemVersion(boolean withImage, List args) { + PSystemVersion(UmlSource source, boolean withImage, List args) { + super(source); this.strings.addAll(args); if (withImage) { this.image = getPlantumlImage(); @@ -69,7 +71,8 @@ public class PSystemVersion extends PlainStringsDiagram { } } - private PSystemVersion(List args, BufferedImage image) { + private PSystemVersion(UmlSource source, List args, BufferedImage image) { + super(source); this.strings.addAll(args); this.image = image; this.imagePosition = BACKGROUND_CORNER_BOTTOM_RIGHT; @@ -157,7 +160,7 @@ public class PSystemVersion extends PlainStringsDiagram { return transparentIcon; } - public static PSystemVersion createShowVersion() { + public static PSystemVersion createShowVersion2(UmlSource source) { final List strings = new ArrayList<>(); strings.add("PlantUML version " + Version.versionString() + " (" + Version.compileTimeString() + ")"); strings.add("(" + License.getCurrent() + " source distribution)"); @@ -186,22 +189,22 @@ public class PSystemVersion extends PlainStringsDiagram { for (String v : OptionPrint.interestingValues()) { strings.add(v); } - - return new PSystemVersion(true, strings); + + return new PSystemVersion(source, true, strings); } - public static PSystemVersion createStdLib() { + public static PSystemVersion createStdLib(UmlSource source) { final List strings = new ArrayList<>(); Stdlib.addInfoVersion(strings, true); strings.add(" "); - return new PSystemVersion(true, strings); + return new PSystemVersion(source, true, strings); } - public static PSystemVersion createShowAuthors() { + public static PSystemVersion createShowAuthors2(UmlSource source) { // Duplicate in OptionPrint final List strings = getAuthorsStrings(true); - return new PSystemVersion(true, strings); + return new PSystemVersion(source, true, strings); } public static List getAuthorsStrings(boolean withTag) { @@ -237,24 +240,24 @@ public class PSystemVersion extends PlainStringsDiagram { } - public static PSystemVersion createTestDot() throws IOException { + public static PSystemVersion createTestDot(UmlSource source) throws IOException { final List strings = new ArrayList<>(); strings.add(Version.fullDescription()); GraphvizUtils.addDotStatus(strings, true); - return new PSystemVersion(false, strings); + return new PSystemVersion(source, false, strings); } - public static PSystemVersion createDumpStackTrace() throws IOException { - final List strings = new ArrayList<>(); - final Throwable creationPoint = new Throwable(); - creationPoint.fillInStackTrace(); - for (StackTraceElement ste : creationPoint.getStackTrace()) { - strings.add(ste.toString()); - } - return new PSystemVersion(false, strings); - } +// public static PSystemVersion createDumpStackTrace() throws IOException { +// final List strings = new ArrayList<>(); +// final Throwable creationPoint = new Throwable(); +// creationPoint.fillInStackTrace(); +// for (StackTraceElement ste : creationPoint.getStackTrace()) { +// strings.add(ste.toString()); +// } +// return new PSystemVersion(false, strings); +// } - public static PSystemVersion createKeyDistributor() throws IOException { + public static PSystemVersion createKeyDistributor(UmlSource source) throws IOException { final LicenseInfo license = LicenseInfo.retrieveDistributor(); BufferedImage im = null; final List strings = new ArrayList<>(); @@ -267,19 +270,19 @@ public class PSystemVersion extends PlainStringsDiagram { strings.add(license.getExpirationDate().toString()); im = LicenseInfo.retrieveDistributorImage(license); } - return new PSystemVersion(strings, im); + return new PSystemVersion(source, strings, im); } - public static PSystemVersion createPath() throws IOException { - final List strings = new ArrayList<>(); - strings.add("Current Dir: " + new SFile(".").getPrintablePath()); - strings.add(" "); - strings.add("Default path:"); - for (SFile f : ImportedFiles.createImportedFiles(null).getPath()) { - strings.add(f.getPrintablePath()); - } - return new PSystemVersion(true, strings); - } +// public static PSystemVersion createPath(UmlSource source) throws IOException { +// final List strings = new ArrayList<>(); +// strings.add("Current Dir: " + new SFile(".").getPrintablePath()); +// strings.add(" "); +// strings.add("Default path:"); +// for (SFile f : ImportedFiles.createImportedFiles(null).getPath()) { +// strings.add(f.getPrintablePath()); +// } +// return new PSystemVersion(source, true, strings); +// } public DiagramDescription getDescription() { return new DiagramDescription("(Version)"); diff --git a/src/net/sourceforge/plantuml/version/PSystemVersionFactory.java b/src/net/sourceforge/plantuml/version/PSystemVersionFactory.java index 3e7fd6a7d..ec11c9e93 100644 --- a/src/net/sourceforge/plantuml/version/PSystemVersionFactory.java +++ b/src/net/sourceforge/plantuml/version/PSystemVersionFactory.java @@ -41,50 +41,51 @@ import java.util.regex.Pattern; import net.sourceforge.plantuml.AbstractPSystem; import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.command.PSystemSingleLineFactory; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.security.SecurityProfile; import net.sourceforge.plantuml.security.SecurityUtils; public class PSystemVersionFactory extends PSystemSingleLineFactory { @Override - protected AbstractPSystem executeLine(String line) { + protected AbstractPSystem executeLine(UmlSource source, String line) { try { if (line.matches("(?i)^(authors?|about)\\s*$")) { - return PSystemVersion.createShowAuthors(); + return PSystemVersion.createShowAuthors2(source); } if (line.matches("(?i)^version\\s*$")) { - return PSystemVersion.createShowVersion(); + return PSystemVersion.createShowVersion2(source); } if (line.matches("(?i)^stdlib\\s*$")) { - return PSystemVersion.createStdLib(); - } - if (SecurityUtils.getSecurityProfile() == SecurityProfile.UNSECURE && line.matches("(?i)^path\\s*$")) { - return PSystemVersion.createPath(); + return PSystemVersion.createStdLib(source); } +// if (SecurityUtils.getSecurityProfile() == SecurityProfile.UNSECURE && line.matches("(?i)^path\\s*$")) { +// return PSystemVersion.createPath(source); +// } if (line.matches("(?i)^testdot\\s*$")) { - return PSystemVersion.createTestDot(); - } - if (SecurityUtils.getSecurityProfile() == SecurityProfile.UNSECURE - && line.matches("(?i)^dumpstacktrace\\s*$")) { - return PSystemVersion.createDumpStackTrace(); + return PSystemVersion.createTestDot(source); } +// if (SecurityUtils.getSecurityProfile() == SecurityProfile.UNSECURE +// && line.matches("(?i)^dumpstacktrace\\s*$")) { +// return PSystemVersion.createDumpStackTrace(); +// } if (line.matches("(?i)^keydistributor\\s*$")) { - return PSystemVersion.createKeyDistributor(); + return PSystemVersion.createKeyDistributor(source); } if (line.matches("(?i)^keygen\\s*$")) { line = line.trim(); - return new PSystemKeygen(""); + return new PSystemKeygen(source, ""); } if (line.matches("(?i)^keyimport(\\s+[0-9a-z]+)?\\s*$")) { line = line.trim(); final String key = line.substring("keyimport".length()).trim(); - return new PSystemKeygen(key); + return new PSystemKeygen(source, key); } if (line.matches("(?i)^keycheck\\s+([0-9a-z]+)\\s+([0-9a-z]+)\\s*$")) { final Pattern p = Pattern.compile("(?i)^keycheck\\s+([0-9a-z]+)\\s+([0-9a-z]+)\\s*$"); final Matcher m = p.matcher(line); if (m.find()) { - return new PSystemKeycheck(m.group(1), m.group(2)); + return new PSystemKeycheck(source, m.group(1), m.group(2)); } } } catch (IOException e) { diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java index e41ca43a0..caf460870 100644 --- a/src/net/sourceforge/plantuml/version/Version.java +++ b/src/net/sourceforge/plantuml/version/Version.java @@ -44,7 +44,7 @@ public class Version { private static final int MAJOR_SEPARATOR = 1000000; public static int version() { - return 1202106; + return 1202107; } public static int versionPatched() { @@ -93,7 +93,7 @@ public class Version { } public static long compileTime() { - return 1620976191926L; + return 1621773607941L; } public static String compileTimeString() { diff --git a/src/net/sourceforge/plantuml/wbs/WBSDiagram.java b/src/net/sourceforge/plantuml/wbs/WBSDiagram.java index 7fca167dc..f4b69199a 100644 --- a/src/net/sourceforge/plantuml/wbs/WBSDiagram.java +++ b/src/net/sourceforge/plantuml/wbs/WBSDiagram.java @@ -50,6 +50,7 @@ import net.sourceforge.plantuml.command.regex.MyPattern; import net.sourceforge.plantuml.command.regex.Pattern2; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; @@ -67,8 +68,8 @@ public class WBSDiagram extends UmlDiagram { return new DiagramDescription("Work Breakdown Structure"); } - public WBSDiagram() { - super(UmlDiagramType.WBS); + public WBSDiagram(UmlSource source) { + super(source, UmlDiagramType.WBS); } @Override diff --git a/src/net/sourceforge/plantuml/wbs/WBSDiagramFactory.java b/src/net/sourceforge/plantuml/wbs/WBSDiagramFactory.java index 3132a4a9c..40bee270f 100644 --- a/src/net/sourceforge/plantuml/wbs/WBSDiagramFactory.java +++ b/src/net/sourceforge/plantuml/wbs/WBSDiagramFactory.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.wbs; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class WBSDiagramFactory extends PSystemCommandFactory { @@ -59,8 +61,8 @@ public class WBSDiagramFactory extends PSystemCommandFactory { } @Override - public WBSDiagram createEmptyDiagram() { - return new WBSDiagram(); + public WBSDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new WBSDiagram(source); } } diff --git a/src/net/sourceforge/plantuml/wire/WireDiagram.java b/src/net/sourceforge/plantuml/wire/WireDiagram.java index 5abceb2cd..fbcf925df 100644 --- a/src/net/sourceforge/plantuml/wire/WireDiagram.java +++ b/src/net/sourceforge/plantuml/wire/WireDiagram.java @@ -49,6 +49,7 @@ import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.CommandExecutionResult; import net.sourceforge.plantuml.core.DiagramDescription; import net.sourceforge.plantuml.core.ImageData; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.cucadiagram.Display; import net.sourceforge.plantuml.graphic.InnerStrategy; import net.sourceforge.plantuml.graphic.StringBounder; @@ -69,8 +70,8 @@ public class WireDiagram extends UmlDiagram { return new DiagramDescription("Wire Diagram"); } - public WireDiagram() { - super(UmlDiagramType.WIRE); + public WireDiagram(UmlSource source) { + super(source, UmlDiagramType.WIRE); } @Override diff --git a/src/net/sourceforge/plantuml/wire/WireDiagramFactory.java b/src/net/sourceforge/plantuml/wire/WireDiagramFactory.java index 99373d802..1d8d2c337 100644 --- a/src/net/sourceforge/plantuml/wire/WireDiagramFactory.java +++ b/src/net/sourceforge/plantuml/wire/WireDiagramFactory.java @@ -38,9 +38,11 @@ package net.sourceforge.plantuml.wire; import java.util.ArrayList; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.command.Command; import net.sourceforge.plantuml.command.PSystemCommandFactory; import net.sourceforge.plantuml.core.DiagramType; +import net.sourceforge.plantuml.core.UmlSource; public class WireDiagramFactory extends PSystemCommandFactory { @@ -65,8 +67,8 @@ public class WireDiagramFactory extends PSystemCommandFactory { } @Override - public WireDiagram createEmptyDiagram() { - return new WireDiagram(); + public WireDiagram createEmptyDiagram(UmlSource source, ISkinSimple skinParam) { + return new WireDiagram(source); } } diff --git a/src/net/sourceforge/plantuml/yaml/YamlDiagramFactory.java b/src/net/sourceforge/plantuml/yaml/YamlDiagramFactory.java index 0afc866a6..133fdd6f7 100644 --- a/src/net/sourceforge/plantuml/yaml/YamlDiagramFactory.java +++ b/src/net/sourceforge/plantuml/yaml/YamlDiagramFactory.java @@ -39,6 +39,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import net.sourceforge.plantuml.ISkinSimple; import net.sourceforge.plantuml.UmlDiagramType; import net.sourceforge.plantuml.command.PSystemAbstractFactory; import net.sourceforge.plantuml.core.Diagram; @@ -54,7 +55,8 @@ public class YamlDiagramFactory extends PSystemAbstractFactory { super(DiagramType.YAML); } - public Diagram createSystem(UmlSource source) { + @Override + public Diagram createSystem(UmlSource source, ISkinSimple skinParam) { final List highlighted = new ArrayList<>(); JsonValue yaml = null; StyleExtractor styleExtractor = null; @@ -78,11 +80,10 @@ public class YamlDiagramFactory extends PSystemAbstractFactory { } catch (Exception e) { e.printStackTrace(); } - final JsonDiagram result = new JsonDiagram(UmlDiagramType.YAML, yaml, highlighted); + final JsonDiagram result = new JsonDiagram(source, UmlDiagramType.YAML, yaml, highlighted); if (styleExtractor != null) { styleExtractor.applyStyles(result.getSkinParam()); } - result.setSource(source); return result; } diff --git a/stdlib/logos-abx.repx b/stdlib/logos-abx.repx index 90f01ded993955c44bdf2ebf090bfd391284d4b1..1543c9fe203083cbddb6829769474254de29f6d8 100644 GIT binary patch literal 11441 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�zN^2KEWpjqVX`-WhymmO%S=Kz$G zZVGC>QM7VRX*Vc2@EqnZKSOd41X`g#Pk%aNR%+w{!z*4EkoFd#M!addeJe2%$e7}; zQrv(Lw!Y;`AP_#=^OyoZ4GQ)a{oRJq!NBAAFK#Q?M!Q^?{p{%=q}>m7y%bnSMh&`J z-L`q4a3nYZHWteR6ZCVR07D8Lb$??DDf}^)b`*BH^=UzrZ!jo$F0fp<;7-Z@)|5dv z_rPO+Nw4PSG4YhvEZ^4ZJy|9UD(@o^9l!KUegfBIzu=Awe#VKotF$pUoV9RW*}eCU z3(t})GLtsuLA}h2?QE>>j2m`)fB8TDdxE|+V(mC&@NA3T{eZLPcG%|FaaCo%44<1~ zdTFi~2t~pz_^_+{>2^U&EJf$jw7VJ1e%c0Jx-cfk+QuUuha%)RgU0Au% zDS2voeXbQK3|VO$DNs9sz#v)3{)FsN_wVS0wYzX3Hz z>v`55dYSXo-4uRUpA6L`!>P6ejWc`?g{3)z*b#c=f_)`U{V?bWa^_iQ+bQCdrj&vB zY=a46cvQ&OSbKpz13M;<<3ISs`I<(s)eUT#*S?wXM0C7~Nb}`HGDqYjB1O26BJml! zM7CeEuA$cO+WfkM{q4LAu1XkU6+)k|ifu(%xB7F=!QNw)vy~G3YA#ZKklQN%0TAVb zI(L%aSkC+ezH^o-QGPOCl1fwpAe9{JX$68CwcP%QHqBV7%KNMNibeOhwm=FvJlalI znw4tOds}dj=36}kL1#QeE;<#nGuQo)P<5c75;nh1NJVtciMkP%c3n9YJ(2b?wP#65 z`#peiUDPw^_A1=$2yOT@8se2vNi zYQP0dfX9V&0`dj@(d3mp#cvDmppcZ@58!tWVL^AT0Lz!1X5KG9f$IUx2M+0H!_50U zww-Gl%b>kzN!be$A^>lWxP12!vn8XVzOp=8I?e(;l>*mFa9!R(oHN40!auR$&Np8b zLIoSmaU8JR`8lWR5~oF(NyFJ}?iS31vvqvn=8Y6AK`SZBK2Xn-%7d-gV#E?8gdsw@ zl4CVB#C_)J^3GCrBII6ppQSzksK#-10t1I7Di{zfVLFycTf+U=yC_j7TWw=HllG+9 zSCg(T1lDLrN;OQl4> z*=UMaX?BkKp);4ZxY9{r6JgXboO2!cD>5u_#Y)|(`PcDw{$r=Bwmnn_|KxXJPRP;P zeY=`AW;e5GO|J$4p+{*!p;ZvbO|Rf0rZD*&6rj4&GdPfv)_&i2@h$ zD>ofzoR+`^ZlM0?E456SAla4pr&BR;F= zMANK=uZYb^u`DX1NiGFIar>3Fn@%u2$H~MYxF1+2O99CnfG+Ndr&YiHXyPL*2^|id z5xCizwn0X^299;OotB2t^$gBCc#@m?q@DI!%w9}wnuRyq2SfRHSaP7W&(<7nk$uXK z5zz}e_va|F@4)oWtkczFbvfv6dI5NytfdCLko;ycu-&l`a3$87YuR6)l#0wW`sGHYL6K716yk zB%dY=L~GYkj}&`Im{Q6I?=&a^`d1w?;Zru!bbg;Iwg#ypaYA+H*D~EDP7s2f?-0xb z+iev^0haxCd6d$-_{+h;i@8B?vKv+!D3y`;O}^_jg8l-Xxi{J5TwQEQAVx>o0k-7^ub}}mfPMlufUwSF8xYc{4j8HKn&>7V0%@n)SG!hJ zGgM7iE&U}Ice(^p*mhvuzZ?ui3VSXfwy^@Tvp{@A<%@(n2KG=r5+Uk<(AnuJ^9CGc zP-Ork`l_6D7wsLa-{hN=0Dl_XCQth5p)fR2}yzZphyfrd7$?nQOgEPk+f%qC8QFkn`}7jPOHSbnxJ8QK6ouh#VIzLZ2;%-h{vw3!RrBdhxHQ$brn zTJ%>iRed1ZVl3M_Xtq6LQ?mwn4@2vQPM#|ll{%re;=eb>baO;j4PNvk^xv5r4Hspq zVta3Zufny~&)`z_EiV0{8^EQD zBltt;w8#eu`DJ7d+q*j^ z$(m_P>bV>!HrzJVGUDIgyB8o&(q{E z&?wc#5qguHAiHM_s@rYC?J`wW$a^GUYdvWh&+BlA{T(`E^mG@PzCT+ud@W6-d9!g7 z(~=@F^T{-9?H#3%Yv%t>%g$(Xwl)~J2Oe}Fxp7o@EIsX3lS+Z!X=0z25RVNOXc*hUFPgo>Puu(1WRdOy zXHFYw>uB3<{=;sxHCpOyKjJB*w&bw{%84Hqx%+NgsL*zBzep^}roFDgbM?_mf7yNO zb)3ZH-ClOrEyot}S=&>2iA#_## zR9D#^Jb(Bw+xiD%-fXw+4fv33t3B!bEY;8!O&+FCnt`9wUMfRXnb+a_Ier3X`f++| ziyYfDy>wL*T&u?L-mvDi#MYwD^!q+O&;v&Bn{R0nY5me0$}fDzS*-Zr%G(8#;q5>c zBz~|D#p2l&+@$=~ZNBylp)jSuWlXHbrR_~KJ)EN+T2WgCs$-<6gsZ6 zCEnUvbLi%7q{Z!5$-9Zu8>NEyE{0umviD{aV(UCjH`(~2_~wtRWdbO_GQ5}*oApHk%dc=tl>%9`^C-LGZBG1XaesRM%?fj+ z_i*I*U$*Xtbo^MK#(}~pGtHx}r_9jhcu2J~Dr=sUTxav#EhvqN+-o^Ec4IyGz$FJ7 zv%QsJML&jbHip{}mgCwNu}dDQ!pgw$H=`#pCYI8`h*dKCau0B8~bist|`p!2Qw--AFqN3op3 zd#?0B0SM#1Nnix9N02Y+&XwcRi;4p7hREvKp^3>dqylz zA_pKiVfd=?Xu&W;h?5EEZ8eaEI)_drNKl^uSLp!|9WpEn+t}$44tE-_6^28-jY`A} zFfXRhWov$@0LVy^_sXQlFpOz+u+B|7Q^1RP2pnoW!cNo`Z;+Ck&_{1*VaQ3}HP&aS z%P(t8Ymzek8#;CmBTLe2XA^etpKD0KcKa;W^3F(mO8r6U$t-S{n8eJFWMNwn2Pv4hauicvZF5$_r!JvUJZURQTQ~LmjI$}H+V1kxiW=+VDk@H2;;*7fF?2PpKj6-8L zJS2-agfG>A9g)y^S)ZM0E@LmR2ageTmyYPd*WVJ;<%V6|q@ z*XJIpE?3cv9{TbfgRNGBa{bc@4nSgBL$+1}6uYfe zwn9KJPVhoRCqNEZ`#C$yiAH-?1NJu%+(^I%i*QyFJ*gEXwzAaTq<=)GoXHNd{iTFuU6}|n$F!ghy`C`mTPHN*FXWJhVt@V(w~uVL)wfXOVHu(B zoNLjHB(nbn`c5}OvZ5%;YLR{?Y+i`XXHx{ zEEbUG$q4jwz@q${i`Ofca|x{t;OpW%AHjF;KTc-?_nVpJc%8e97w|LLZ3>i>fhVegm{Kz`vL*3Ve7oi|zU3h87CGox{`nt@={DbkE`HR!}DKpiN zZSS+fOVD$DL^3h9eKH-%_X)R)os7leS9bt6(sAi}iMjZ8-z$vM@|&Gr%J-|>*0NYG zJ_-KJ>r%9`FIRc#^rb4iCdi8tUWiJz%lu*l%Qt5DFAeLv2M#hgCe|VqP=xjS5GS7*W0gn`8gG) zTBEsHa{|=3(OvXLjxHA3{LOSQ8z61X&6H4VfRJFss24FvFKi$iNkW+!G4(4wa13qL z)8JcB{Tf8x0Yp&(*c+(423no3Ang?{7s5QgSVNs4yOcNu`lz#sb3w*&t58iu~X0O`Ind#5Rc;`IjN?DZ1D&J#17tq2xEvZ79u zLL8#YbvLs+N7r&LK+r$x5irJ|=(`yN86Y6g+DO}%pH%KiOB0B3Wqa#D!(p0`4D)J8 z6K>Aig+fkZ&=r&jbgyx%EgiY`{?5=98%$l|CNQp0t5vu(w~m(@f(wxVkHD)()kol&M9(&R2u6E3CFZW}02~4Abyr*c5YQj&t!QhsAWrQSspozL zbb@_g%^~WF!|&kbY*V4aqV(+0(`r8DXbAv}ybOmpIH80!W9*OQBiIq!i*7`~u5+a* zafC7KVGLyw*7h_idg-67)xhFpD)6b_WWT;GoB4E`KiA$!1By@z&z}YXtcB^d*T>({ zMUd3`ij)&X>{%DDee{T#EokVnZ;Q=|#flk}&##=w>D6n5W0C9bTvfVlX*%X+d!m_W zP_K_r7ndd{Eabv|J%uoyCO5jW+B!J4W&J@L=qjx2hhop690&|JJv@jF7_%d^dX>Bg zt=yz-63Ulq?VTZ@-(8eTppPQ)>|ix>tEuDZhVdFW=*b^FOl*{xg<>`V+{WXrH77H~ zP!&GO2_+n$7ql`&>XBAI*?OjUZk`+w3pRiZpK~Ob+XhR)u zD&i3Jt^T+Es-NqB1pQgH@b7(yx`*tbK0*OAxmlvA<#(_8D9|EzNyA7`YoB}Y^HE5n z0Z_p?(~YDYTvrW-GU9j(I!2oVbm*OS-apJ-paKfRa5{(X3kv4P9O2@L^XM3{LvJNx z{VGEoZ&0^yl}z1r?rlj8#J6)MRR%9fybhiz9^Qt>4R|1Sjt63nut?D76YDgof}*r1 zdBOau7eBqSDGaFFgzM}9`imP3PId4wic+HoAR^#g1pomwD*XT;BAoyIe+WbbQ|iC4 z4lj5C{oC|MxH#P_avv2KFCKF2J%ELUp1}t|(Einfh@!lb9HU4R*shT;nN8_{l^NI? z#l<7?sSti6?sXJ(Yoo3Phzw)M#e_>^ekY72z#>?PiA*Zh(%u;h*jIT_@d_XFh3|ol zSLS9Fc>aPb7I#D9N_ZW}mAHD3Fdd&6C*92osRMF$wlRzr0xVjTa#3N<0ib?@!8|Ku zE_QSPgF9?lJsD-48yw6GRD(N`J<=QiIatU6SY>6*kjT2bqJ7I3C>N_!p%bkF~rn9Fzfq?+LSfn(ML@|0ds0S=5tif@h#GR{wR%<%17AWlm=?Q^? zde%a=hTkVr2SLVPOFjXO@OzMGBrt{ZF+{xKED1AC(E7Z8FO9hjHS{*nZL)wLhqNux zqKpDo6ic0=>}f>5uP-0s(t>GJ;&I|&b>Ck9YR>cD#WuMq zTrF{>Fi8_7;Ih!f1Kiv~o(3dB`*KiDHD_T743UObGR5zI%7(aMb;k@M{E7sG4C3^$ z+W~gLAJqQe8Dc2yN__2sJw)Mo1FQ}KOH^bja#3=ragtnkg0I1o;jrNeo3De>6r6qy z2Q&q^V*g2pr$ky5Rh;0brp28pvp#c@`w*2+AWnp9v$2dYCOOEi&peu4->{f`23g(G z6jVxA@m%L8b^>1EP%nE#vlvis5Dll#SkZUBw%qd>dfa-dzfb%i+zl<$JK z^IQT5HBdr>xWElJ6A0NlGzPsK3~fB-Wr{%r^q{0=WIVX=)?+Q2p^M1?aRPi|7Y4qt zV$7=}HLns6R(z@)tp!oMp7|#Ub+Bk|%1+hdj`}^WrW-QZj;Ggao6!W153^`Cp#9QC zwQYUvYj9k07ap14%S6O1=szT&*JaF~{32@W1 z7KCiD>nkEuwYRr1ZA-Mp72@ATGjHT*0*_~T3uByCO;pv$vzcG8=g(&iPy(hdrR8$7 zr#iYz<_kq}pRHR0p;U6Z7xSDViN%TX9^4>nHb_lsGtvUAWlEHsD;V-w#K6_LV!#?f zz!MPx?aC{)GHb7#oHmG0A+UbCodLMEw_=pab}9w0zrr}(3VVI`P|ufe{f6*}RZjai zVZ3!aaLQUB7%1=>9%+2NwEx47z|9DNzEv}nulO0K#0FykD`CS<55K%$l5WgFwE?KG+6eRXWtM3xUfEUnY^lnZVO^9w5m-AOLoc zRRFsJCIFY8rRb`o!A!d&L|g2Qn&Q5$$88pGN=lCF)KVfX-{q}YNHqbuF3Q$DoghTN z2PbQp*4+>AkX{bx9n4;!I$)CfESeHg5??VXfr!T0F2L!x;Kgtekl=dXI%jLm6BU;Z9 zvsPz={Nk3)>`ZC+CXjtu|9`;i@tb@PaNnQ&R|nBg>+!x^yL!*_(dWqRzkab2m1ArO?)2)v!?M_WHhL~loHg2-z&Y7UW(B@V)IJ9=LbYPO@eOl3c{U6^kYtpGoM z+hq?$!Sn}x?njN`F_`0{{a(;ACaITG!K2KU+Cn%Aa|gkoE( zU9*M^JaZ6Fg46=^B&&0fWd0n|#L6L%U2>_V*a$&v8hyF2#?j6rcwGeAF381lTYlwh zcKcCDA#dmpVIbt|YJ#WSxC9k`+5MXO_B3i?SmPmsPDg|Th#n~9r%WP7myz)22-mqk z@%~c`_i8HBYrADkH2a+Y>FJfaE3JOZ{m(&o?WsdB}KE)NenEz zhUt^ia;30th0YGVigB^{yeQbaFCM(OQMuQUxOI#o8e~~5p#yhk?5ko8H*V+=m%03}GpNls+ z1E;f{a068=5civ6oI61Q0e5zx1(;#&7>$m5psTVNEukf*DecU8lC_*{Uv@-p98WLJ zk9lyOeArrM>a4<^GU0Ih@|B z-ZWKBTy&<7D46Q%<&(lB3G3nMtYW(OwX)~MF6JCaueu_#PNM2FJ%9 z(Yn;e;@6rbs1gsgZIWs7NlRk+!TstJRuAu;SQ>lZN-!^C=lZ_JCq*ipw4=cQpiTN$1>Gdtb8nm93n4gpRux7boT{xnZn&4q)%TEIz!) zr`@mKzj(5=IcHm0ckP}D;GU^0I|u7(P$I1+j)6BdNFT#3|7Ch;P}%=LXC5}Cf<(GXlPZkTWaY>?_@%|1S*QmtWR4gi9TqEfcLc!X^$Qhg3y8E2rj=0; z83qOtvGR&+mdLCxupUCpFlzf}6mmUg4&ouaX)LJ3NQfq9CdRsC%^v6H%m24gQH%-7 z1ifJPmDFpq{~9&oU6iU2s*7T9+7EEc1=5T}aWl(_L8+ncn%n{(m!$uitx#msPZreS z_%q6UGV_OceR(d>MEJrqu>&tdHKRtQvpLe(?0{CMUAUL_X>fgG!9N&&Tv)j6MkP|% z9b|>17)-b~EtpTi3y)|dRVQD&Dq8nQrQ(05wu{0+5*zQ;6fgWaIH&&A2LfFVEM^tg zAwpiob+c29^rd9I!Hjvo8Kq`{S6RG{T8*%nw%gZR%Cd9mYid`7l;o0^K9h7|1Y7%Z zUa?ddxwu_Cpir#-;QytxAOV?0G|585{dhoelTvxTjp4JRi}EDC*5kP>D+EuZsKL(n zx9&j~8;ZTK0};a0(29Wv-H45-P^-Rmbj2iddPpR=NYaxj6o(*vjADP-B!<(s?+Ff_ zs-78&vDb(B<2NDDR~fD9v_d9n@zrlaG%Ih+xn8NnklfwVy^bN?2Dm~ULQ9$Tp7zzJ-FYiofQ?RtKAtu+f6Yy{1!fWC=8h9eMfy7E zz*Y@;o3Y=S8=eP;er(WX!=srumK6>WxK35xm=6Pf$qFR}Z}9mwE^d3Ez}YJ@<;v~4|o1sf3K zkp9?i1&HZ&O8`0hHQ$tt6qQZz`!c}}0u>o3Sycety>=C96BNz(u9WoIpp-lsx){$8 zEXlq?2m*PcZNuwlzDpf2kmzDN4>0CvdK1Q+6ls7z0EA)1k)ibj^2{9k0)Q+Ysdxzr zt=l

rs0IHwkNVI)>|%gT~r#%bSW?k-eeAPeS|HhzWdoSrukEFchRSKGgJc>;Bky8ttjXK7<*)k zGTgr_l=dVpgPgd1!>Sf7YmI*K(5&A`dHc|}uW=FYV0(7mVPt6#e9ZFWkv-rHGJ_3I zxY0lS-%EceG-7?=295pz@z+k^-<8nqa68{ZSbz;ZcfkksJ@7-&%!;7Eh42Co#U%BjsyTtamPTotV$A*J zeE0{f&F!P7r3Nm9m;K@Y$5NcookH;cYbu;5a3Q>)N5v1`m{KjnlM8r6{RNwE&p8Pk zHzWTa{B-lK7kcqKN^k@?fI>cr`N#%^zcOJjlYp$He|rIa8}|RiG&x@RS!o`t03+uR zEd#;$Jd2rnQTUs?$zOarj-rKwUW20U6kVR)1F|Een%jTY&&8vN#6 zsE#To_Y{XX{7jWH)7$YK+};nw>1ivpw0q!NWS1AoWR$c40BPpM@-caU~^v> zu%#^5?skVn*L`M+TP3)6FW=aZzQQa}ln3hrUKSi8_K8ve-@J)V9EabswS~HH{GPs3 zkQE=|B{=1IL(y0#@%lCw6AG~~f=Y@h@EhlLp&JOqnIg{jfj(O|Z&p!G=Qz;pMK!>? z9+6;;yFJPv3B)caxgns-BJb`{n5)H93;`_XDG@(IJbwt(`t=&d-6OYyNA;(VE#D|& z1gZ1I^)vYF$;Uv9spJkeWua^UV=6M(_|l3g3XGJAIT#=W3PuSb?ugVM12rl1Q zTWN$x%Qa4&eJc9-$MS$nG?I6-Daw-ungI_1a8|BR4LVuhi|$!NkZs-n_erfNY7%}# zxt{f0gDOlEVvcf+(;_LkCh(C?5dx%@yGm^U!9_3-?ILmq)?ti`^0biV?M6Lp7+150JOau_N$2dTXCW4!AI^grH z8+q=~p0?ea&ZR7Un%8!*chW2n-DWIa!+=Ts{KENAs;QeweK@dj11lSrv`4~|A6Y5A4~HG>Yo%lx54s41 zNl7qHzOFmNU-<4!=z1le&>{7l1XAd_Ge>BNWp^Z|* zc=pHOhe}==9v~B+x_K}-h=ECu$iQLi%>+qtVM*DoR0cv_5ZWuVz_tX_@j;+*J|WWxsk#(3bn}V7JcMV+0BxGFXPJG=%-)90N4aI^ zCJi||vr&b{(RgsuP9ocG-=RR)`;*p3bvO{J@bqL}%)TQYJ|Re#_d$3B2gLjrVEX{v zEthf*EcqML=0qdmwtua6cc>&6%}l5!7C0BNcpIO}W@WMY;lpMXO@9@1W1dR}%`xmE zMR#f24%S`Dxfh{m!_Zc3=pVa2&+KFWlX#Q1XM@>xSp?tHi?FTtKg{F~QIh4#!YyJH z>!QDubDG>LOtGSK17`=E^l`jyyl~2{*)Wlmi*HjTawRWj_H;RSy~+UkWbO;3d0Adg z*k)dXIWZ+~0|k0i7|X|@$zm!JdtLSM+e97!n!w8^{&99`g=?)F%D`EcS3iYqsm(bp zuPkyb5wkAp>=RF`LhfS0Xid^TRQ?pm$Dw|w{F{op#D ztbE1VU41eB8-D3Lk+E(^Q?}0ZL%4EJJ@UQ(jL$#f@pv(RDf6?Ym_5NE03WV%0c-)q zaz8im@xea$M|qkAQ4IB|5Z`2FZSj_3DRH7(zCtfx`EUiNVu{7Qd;Cs0O@?^}$YgY5 z%myzDri)(A>t4qiadpn5=Xop@!$nmoUm&Y&r7T6|!8tTBri$#~h!;yBtFw7rTk*!v zHaEM2;`FTMjdd?cqPcW0`a2iGjJ6f#954L^-G%yLEc~T*;1LK4)2WvqwUtzziUS0> zF&$n$%NZye;5r7tt0hDBtbl~TehX*|SmGkUuLlA9DF)cfw31zfmmYv~e0nF^h0~EUt43@2f0XRMxb8wz$5yNh7N3?LrE98^&>C?W z!KkuboV@gIBf+d{?5WQ#DkKptQliwG?9!?uc}@FcUD2}zv5)k!*dJV6c;nfXp=G3O zlY%6jxjpO6u7F*~8U=LkP5a@W!I1P)p{E2oh3e}rc=sds3O7#_!%5W*LD5iYD}PSD zbsLR-WG>tebC#4v9BF@DTgE?^TOUW(g}hEX?JT!kKObjGar#_!>2(EhZ%v#c%qnKG!=+qw05} z4|E~--A?rP^!Q3OCHG#@afZf=J}W>oWQbU*iEbxBEfr52E=AQOw*7Gxty^-XhW!ED z-;MrCfZu>7BB+>x2xhhzmW5r_1!hn(&}(VAldpFrl4ReN_%|k5a+H>&mjASM^vE%$ z*n2^8h8R5*Mls4dz`kz_&fZ9Y^tq%P6;H+dqnrM@V|8H5ExAKBqBu`-fbm@jP3tSty zO4+@r7IKHVW_LWH3G{E6?DvruyKctJMJ6=2Wc=t>u&d)&f}7=Sr^8K3jt3I&AElkC zvdh?HxUgnmZ8=pecuURadgx1qZY(io7L{rFZ^akp2n7?B?KR5o;R0Aqn_uul-5Lw0 zKHW97wrUe5)&_5vBt#taP2@}d&-aQft(+YgBozp|m^5uoLMapyJc>=*_`&_defDn4 z{IBc-tF#lq#b>o~3Tj8sDk^}d0XxpckOO8iVgbdcU|Wb#lh~4F3*sLGC<;tP^o$@_ z0Jyxoc-`}rh7fK_8KAHc=tw?b^n0?&+rb^`w--oL>Yz+ug6|_vt$!4-v|c2Vh|K#- z>L;A{KdaTdYGGArP}3Ctf3$_SPvk&u7%Jfu+}HORUo1lh{ElT=P(!zM@(K8jw)D91 zgbxL8={5dyaXV&tDym8ku;htW7+Yv{jaNBXyD+jc21N^$1?Ru|6?8r!2Q2i3uR>5^ zW91ECsBgL;mZu>h@%H9W^qaBj_zYKt>8SOF?3;7&l?l`=m@nYz z;M23w(9$D?FyBVdEi(ThIA&9eTKSaH%yMovBt|+ zTS55tk8e2Vx_NPilLw9Xy%|HLWgC7Sj^W^t6N+B#X*~q3&{03v- zTu{q8I%ys88)P5?nl+%z-pJQrf5jS^_W^%#^yvPdwvM71Zp#UhDJaYM` z!&u%*#bzw|GNj}3()*OCqv{0N(K-884|D5pXJ8Rcy05NhXa@qcDqoL8I@s0x z5ie0k{E6!3!Zva%QC{M_0_FMsL9l|7bHIwNb8$}+KrUA=&(e%_4N_(5_U zD@8fY{}|1(*AwlxLa+}o*$(>mLE|=igCh}8jLCBVODOeVrm#X(+t|5Qmz8S2zQF?f z%>t+n?A_%zX&R6D!a(&zZNYzfq@*qjp*ErVqSeqw6C-g&4Ty_$0|Y|X>S6=2&=odXn8Ve%=$C8vGh45D(w!--3?b<~iQQD4+n!|0*!g>{h^ zv{40a$;-}lt%8kGqFv_I(i3d^!K_#XVzKfU8R*Y0z>8Qx4JyAdrTGS#VVS$~QnY3k zf#_7=4d>gDoO*W#zITHU`PJd&I=F6gTN2;9Nf+h|0@nuD7R0!Bo9_#$;S&6$EktF0 zK|siZl%GJxz4n*#6W>3P2f@=&nUEk@@pPU*PZ*5X6i*y8%DzZG8&!u^;=`;_*v=?6RZ?@}jLfVJOMYVhg-n1c3*A}Pt&*{Ac8Z#i1LKy7z8ABcE0>js6P(nTMu@4GaQclNRDmN zKte?tt4v*ilBX?Etg|6-;P>_&p7lJ>8zWToZv*KL0A4&yfQOek@aUX8>S+W3-d%PW zt*jCO*e8i*CLs&oI_@1TS3==dGB`2v|Ir{SVGJ#Q_Cfs3um6{O`^SHhEWQZlJolcc z3#PM=CwHj4Gkt2~MgkQrF61ay{xV|n(Ze3cvE$d?6rut_-Yrp?k_&e(+OPI6} zpn8fFX0U9mHJQto+GzOit`J=crN43N#$sfq;<4mh$2i841>XO`qrMoLMROw6$73{47IdpSSP|C3B_zZ+(i8&EoE(nC0fzdC zytO_An!1=6PAeaR`OG<~kqz2gPa}e@GbO0i0hE_YzIJdOAg43Z(|KqQxpZGf^!5Zm zE;OiNYci0F-mX@QEZtd%s22A^KZV3riJWq9P7*xC-Whh_$Y!k`&3Z+{SsN_CExBrg?^U*X_EYGv8q&^81yROx%p7j$3m%E6O3+Npcw#TVy|*i=7N%* z_}c<#;zYC1`f~iZTIG@=91(2&TE^NfjdrVFGhbWX0i5Mf4tNIk=``^5{2$l1Vr7Su zy}U;~V`pzixNUe7eYzTLCV;MLL};*LD28@Dmb+)>!&%#b!!?Edf7CPhM9}r};MF zi@+x4N9m5#oD%r7?WMOv35mx8)JE=Fw)MIhMA8?*Jq%TQcrJ`zajqybsbPar zwejhGh`c_M7j;DHp#?2o~?R%4BN)s1BRTDZ#!% zx^n@br=|z5a60xmghCaXJzcS0IAsSE<;k{~Yc)-g+xBiIm6j}KM05@V4{+#0$Yixd zx-M&~NWF#R?#NB9W{W{CrK{#BG2_Uxvl-EAXkTaU9SPNVFDIxb2rRkQg+^2zqa|pb ze0A&4$?o|P0zSCdwk8EfNgY(t%#l|$!=qEH?V;PX>Z8VlXCbo>r7roBC|`!o_3)j| z3VvyETB2>m8joBp#tZLP>_e%w3l19I;Od#;Xk309-$a4UTCafKWLIx?9WP_jXj?*-z}Mnc1dlRRIZ zn$%uzotmry7-Ymh{BUFsv0BNFkJkCi!Wg52=2sH#);I^dygsC7aeK>vWy=aJfKpCZ z$vBwevSQY<=`2;{==9v&g{YDEk6mSw=+87O4R?sq6qTlk$+WHuINMy1xL8zrqlU3$ z)=Nq~1jgg6Nue824GB%6sniL;lv~h3zDcvpjqm9K;&3C%g^%F#bhKEFqzGagzl>A7I~ zdTLbRh3(HyF_jwQ2u@L>WBp*&@~z>vXMQvLG?z-rFu5d6@y<@EUU1Gb>M~vdoh7YQ zm&X++KPV`Gunmlf1FvInAj}V9ROyMEH-RYef$Ny@Y$h;(>tQ?+ljzt~-RYk(m2E@7 zgB*a;qTr8ofXQiIa(V%X(Ug`RhWco+Hf_amQ`7)Ba)BspmLpz@sF>6(+74@MN<5Qq z8WWRZE?*C27=={26LjEM#r*xdBniw9Di}E`1HeexNyfL6DFwh|0gj(G=Ryy_>20jj zg{!`X*^O(kS^oxrC~kierykSo^3la4VkZN11?xmp1Ypu}xFcQ)Kq&8d2;=^V z-+*pL5A$uN04$5=2*g0lm#FPG7yVG+Z#}fD`EH8iztN`M{BGZoZ&i}7OYooOGAkt~ zK@@6$>_i!on*$TG8dMB&%{|j2U=a@ z1o@qJ#J^L(iQw#1NNy8>kKFR%P}(NyKCkH*!*aPe1)9dn}#^jkPex?0RyI&11UzL}J9sS@0B&n zT|1wDI=A%oQfl^TOYf+m6<)cQs|b)hu?7Pm2NtP+Pfz&bEL_5FR>4btN~>P1HvooM z7I5O3Rdytvjb69{i078r-~h0dwUn%PU&g^oQ=B%i?QqZfnP{oNp`Ov{DAH-5gQ|+d zF#4M`=y=~T(!otIkR{Q1%AYXu36H9!>R^F09ZA)sM70XX48>Y2k{?dRV;b@$~{cegWtgWY>!IY z3lpLJJ+>Qeea<2}E(4cJJX;knKYzbH90t%4bnKj=9UuL%d@ABD%wxIZeRd9Co<|Cy zJLKkrjA9T%A^b=s+y$YTm|2AbBl=kixreQN9O#!=!G3aMwDN7V243#a@pM$ZFV#W5 z<7!_<72T^%EYv+`vTQQJ&1EVbgptF-xnr>959r&}o+Zf6fux-j3@odz#zO#D65;=t z)$vyaybXWHiR$VF3u)v`EOkPA#RE`>&M3El`mQAov_KKwh9Qs!(eAtlQa+R)wOGnB zJf!;K@r>*D3I9|zW3Pw(dGF5)WDEU6YA*9)&>$gSb}&AG88Pd2o^dmbgpI}L{k?AC z<@+3ddwrEJSZe)UUbS1&=LM}+_mUHxr%;t_-uy2Z9nSf_u=BoQH2A?cVw=u``VBje z3+4@8_E|^3@zL-)P~8O2Z#`63fL5P4E=^Bj73mC#d`{JJ6xDX!A&u5+y#c|&2y7Nm zE9eO6(9*9x%b^<8+6EA=Zfn_6jYw6Yn~RNR(QZ54x@O6tI<^}XUidVn0lIwQTH8yo z#$HLB=s+JagQ1jTlrK`wJDxSAnqZ$#iMH&93Dtxt#^sQrL|vq=p5Z<&_qY4vG=H zwP*#JEOj3bF7YL%Bju|S|Ltcxd0bpkH(HA>K=V|~oo%|Xfo)p}V^aL>DgLGp)#g=*|MD$5`?(5DnO-!B8C^&7!_Ju#8h3xE zTLv^>-_Vb`Pd{uUCTQcm#vJ;4>sW#Yh)@}7Lv%T9)zW65dMSe}p^;I$+&l=Xfy$hC ztr)$)#kdja6wt-Dzpm@c2*7L$=`C@(=ml1-wwQHZ!w9boTYm+q_&=F0r~<)XnGmJ2 zg3xZ;w76JmBY6hhrwquXRwFCtZNa?rwatfA63eCo6n@v&b7?|ktGo*u0hgLC?#PIm zU@%rdv&*CYs2V&L#IbR-XXz=z*2o6*nR-FQ{z1J-VAJU}is)^@%BLV%F&uY z*tue*vR;{pQ75V3guFFCJ=j3wJOR)_Qs;lL^eP2to9bo}dw>^0|9o0gWMv5T;+LRX z&cgzp2MN^hc)rYmWx5+*Y%``Ie&x>U8;OMB(?)#$4E+gc&QBiw5f8jq+c}XxyBc_$ z(AQl6b~9FPEv#?`jLkU@fp7F!7TD9Jtxl?1d|?+?^eT0v?%n8X+X{T6M{aSz(5nYT zY`V;v!sy4-($CCce-Lh3ow@0Z7=75`$qvGw^}}p?2_b{Mv&9WB*L2n}>8pF3q)Sd!;yEZ=}z2O8d++)P)9o{q4r z{zTe(!z+!^X`j8JHG5$l`+K+DD+HP>uB!-u@e++=d&sip`CnjmU2Tu(y#`)VKxDii zID3!2GWF4ta?t4g!S8aP)BCf3$Af0XYT^(J!xN_TH?@o_c8~;N)ZuzqT*QV}g0owFN<~f~gwI6ZZGn9mbm0 zv`+bD?eOu_Fg2dX=lF-KrXU(uweK$#+oD#&Ea=ZdktF+@lx^b;i3ritULga;x;9}9 zb{fpqhY#_EF+t3}fKaFDZS;(mTi}r!?MEs`s}4xlpAGo6HCM!Dy05hs6XFL9Oosqc z#-F_%m7vA5mBeAtm63Mx{h@6|xWLvbi-maLQ7!D5)>I>AUMz00zgnCOqqVvs(=xpX zVQ;4M-KlR%65t`IL}wk=izokcIj6d0EQcCU(07f%igi>{s@E8k($*|SN%{Vs$_juT zF^=S?%>55)0lW(pbl>EqR)Ni3Pl}^-y(iD3!Dm+1y{8=W+1Q?4)wWcRKN}OxCx`8S)?!&hEI9i2C=pj;LQey-@%S)lQs6&r~1PAhyi&fhE*yV#y=wg-cx;^|J%bMt| zu)D;%lDl^darf1#$0#RJyqC)ih(mjv{`KXQrXt|`raFy_30@oGS<*UEAQPz069h%0 zfLUu+P-LDCEPBaA1Uoq9nk63R=-~>cD|N6Uu(-BdA(Eo#%6`~==`O6TrBVv3Hc-028 zk9mC(j&%vlR`tiP7IN0pEvr7Dc6Ye!x-Ccsj2(>0oDihR0hA#;!X!pyWwhj+Bs}?F zQDp35TLq($tA^i0gnul!Il7!XYbmuMXz2?W06@ZrA2rEI>;zGoTxd*o*D(m&;SgJ6 z%Yj{nd89E=%a-0j0S4b=2qZzE_yB@KF0mIx3qTxo>A{u6tHy&l`}nerOlI~2Vus2j zGs$3&`hXY%pdq#tMle!9ax}hGKv42~Q(~HcAZ!;4!hDwl5IO?WtQ2@6pYs;*KhBfJ z4YUJX7>4c*u$jv+YPtc>x*hIk{JPmnktQIQT+NoGr9Mvhe93`ntgjm>#<`XqtC-XkEkL6$?=Cs`=CQXog(q~8tf5zvr~f7`!o-LZDK?dG=O#S$ z9VeGbW#~+HV(ODseaIQ(*@h^Ew4BDX)?u?6$4tbdI%^Ssx+W^pYl?8ThD9}Q)jzd# z2Pf8woph0|ql0=n10*l-_*4OZ2CPE?tbd$Ej%H;eYx`xQgI&N^0tYMY5t^>@-!VQ5 zei%g6E5V@*F~S1qJlPShIQui!n&gFFw}Vi{n*W9FTIFmuZ#GcBUb%U|X@9d8re35I zTlP2cH~czuXDJ8{l$qL-Z{q>e`lZu1AovIIuFW@W_~Do1#1PU^priRu-Wph&`v?Ao zG{*tSXu6S$yUM8~DB?fQfc0}N)fII*cJ=xlqX#Lq6&+H5H0j}98&xy9hI5H9ot zzn%}6_Be9SL-oH_8+G`Nx0@w-#57f&8aC(Sd~F67nCktf7Apu|+Q>qPJb%=GP&lU) zaZ+~5Iu$!9Q@s>im}{qyTrSkC>C`D`>$8d_srQ}x`p`EfxBjV7hEa-)Nf=-)gqm0Vq_ z?;QEkx&xIp8JM1(vvvpWVy~p6-UF=JeR3cHROfebkJh|r-j!+_&@RnZQyehEotw$k zZhuyq7am+vIHkp1wmMUG6{Z*`OAh>hSh1q~aRdUz(1lSh3i5$TI0{#Ja>9phE#Bl- z=@7P7!X{Yga#NkqFT#0GI8K+wd^YF* z|4WSXHtV-Cy>|2Unp|f9#u+2Ye8ORynNKGt!3;YYKPtS7l5fo4{{UPg+3#4Ad6?p< z|LJ<4b1waIzl;DszI{xc77mB6@7uDaUVb#}Sa|POM=_q?n%M47rz5ECk`;9Ecg*&{ zL3qE)*BDWD&>m|zG#pg-=^emMC07lWDz5l45RY0|jO~lpGmG`|6J(y!l!9+3O#H z=J5X01r!l&sJ~RH0!C6S%KQ&1yX#R$!i1fg3w?=BzjaEaV8mQ~jaA?AYOS=34H3&! zX8h!EmS7fIRmK8hX?q(rgCXzI+snm`O%%7(q^=?jV9sX|cwdvX?SDUxvJ!p95Qz%^o z>yf2*5+$5n%%$|EfwiK!$E&v`fT^zIT2)tL9pxXDGH==5cu`hyf~FNqzE^~<##DYY zd!db%==1bYVG(7o-||+LOCmF;O66kyE%8S-U>eJQpRGts-kHK`o_ZGv%tl$`z*las z)bxu%lUx-7uKIlKp-9*pP@x@v@Sle{u^?GhdOrXTP1DrgLn5CnX9CBc5{1YWM{K}W zgDgUWbVmpa*vE_XG6^d7tvm2j-~3d{SY7!UsKLsyoLej+46`Vh4PrGh7NxW4z(43Q ze!4#S#z>UEQX~Tex0omH|a5Mm?yWuNQ z??jo{ek^<3zU^ip==3bhWWXgNRY_6ChyJz~%9*z;DCc=>FEAF%xO^VIZ5qH3dUYbo z098P$zoDfAdAws}A#NsUliErWCo=#)`Z@>n6z1ol>6!KFMz`EtIiZDIbS;N>Q_H1& zM?}$mn|}q%^UFFeRz)S?tjnO@DiI)DSO!e`Ib4@#?a}y+`^jyR0O}T(w!&OoWokvebAbf+A z%zWl+d$+|RI_T3Gu9W9pEI|E7t<7;8ZsfLl*R$=kWFO~l1Xd5HZr@`{7SOrQN;nlf z6%oE5oI40}`3PK)TxuFKY-bN2$~__GAIaJf$X?f@T2P0dI3!C?r?VeWg`aR87h%oO zcs`jrb!X>NRsiS}v&$;GQ4H%Z+(|}CR{@E_V-y6}>z-ufL5G%9 z@;3u`sKH=SHp=ac(6`R-p(#Gbt3>Id%usEZ?Rn9%ZYC< zZ_w~}!Ci8_t*A*0-UX!W_>L|mjUAJ4VxA590uei5kD0;E9?y2}S7pbz1^0gPzdn&B zyN@ZCoKy6M2!@UWsp*&2EkM2ZA*sJXGz975V-L7&fYxpgjR1>nkj6`%R`EWCLQr zP$8a3iGmz~qup^09t6@@z@G+oyCZ@Jfdn8!1}7y%h7*8AGr8#U zR?N5RWh*jLL4HuuiKRw$fa7BKI7LkrB$Ku7`z2TJU1}O$%~E0;zlzcnvkkGTh<_eOI zP1g1=p$btDz3ZxU4 zA+kEO7nl;|)zA=9>XC2d4TGu~ z+uoLgd$gaw4VbY86AXpnBL^T`h-QT8Z=}Tx&yMOwDA>Mw`tVPJ3Zr?9N6NV>FYX;Oiwi zogKjk%jfGVV)un=)LBivUF6b}aNd{8vJaa!`XdhdpeE1Gds|>>XrjdWhJY;N0GJ>u zM6a6dOM=35gV+z>c1vmv*!_w8`@Xm{&3z}l2cE1eSaxO6KD}$ZnZz;&dq7*PfrZfV zz-~TiB&EKo^EtOrnEZupWpHk*1qMOCDI0u<7A+PY_b-d8W^{%_AI2ycygfPr z4c&&DdyKUt)RmgB=1{FNnO)Q=9>c%s&7Rw9?5%40@qOnt2Ex{!;Oop@HwBM;yf zf(UQ3{m2j@>?p$}JhT5xM$59#)9bmUJ{&x_U+_N{y-PIJ$iS5y+-X=VKORY!5DXU( zgO+FO9N`M5oi(`B@^Cq{0Ely)-o#7#?U!5H6P>TQM+G0QtY%B4x@oeb1~ngcqlU;F zzU=xdY1ca+{&mH-xX@xQ2EGfrX#)sqPZy-T`SreEy<_dWl~U`xYP2AcIAQ4%KAp-n z9+X3P#QA!ssHR0?fNEpnRaP!mF>P-+)ELdpuYj{ttY zy>Y=GW4>53*nG}SHNBM7X}IvOCUM~P{wNicQ~H#{XzS~`EC2lbJP~%hQ}u?Y$4MUf zsfAh9g>q`=h14TJUbCbgw>Ct4yZ-V6!Vt(~w?I@ENK^999FbO>21@Ynq@!|#X;sxz4-g-i2!P&gn z2b5d1%oe0gFs#D%ozG)z^skm$nPclJgeuIuUs2bB@Uw#X=4?W40uy-k(Gm#-L2^%Q zkOMSv@#{<@lu0gXc%)YbNAe+@eBwsGRXqCld3C+dU!^7y-yZ00DD5>s1=Lip0!`%m zm#?iy`<{9#qIRk4opNrlRgb66(PiWb{o0AgfxBGZ#rE3Tq)g+NA`o`7vq=0zQ5wkn zJ&m-DZ<@i?43sN_+C%nkOnXw(w@EF?qRDEb6??%ULQ? z8oG)&`O9gMp~xu6oL#e2*N%&MTz zQgsAv9Xxn?c-!RgKftdsa;Na02p$hLjvI-7Dbmuj(M!xV9b4Zn+z*n@wn~9>3=c?(&NuZQJ0(%kow!8!u8WBR(Jftm3(IbPeusF05~_PnM4_ z5}s^s$R7u92+x=>wqq3yKQaIO+v7)I18e{S!j$rMvFv&YX8BgiM**hG4@(NN%3 zUQo>Q#@P3O!|sM>l@-{~@7XSgQ}A{tF~C}|Pr5<+0rKQXv8d4R1^cvC)4v-&Z87h< zR=Vg+uuTCE)}MRVs!iY@?fqq}*Xi_czW}z?dbg_pSnuSQ7CRSXw07{MttPYhcCJd} zz41*6S2%2`w@2+Vj*q4x&_?CQSY5E2Ys2pArkL-iXRxpRtnQo$D=%?$+J71Xd$`yu-4Hk}dkXSjGX}^9&g%Pa zxyQO%lyajn8eq$+VQu~05RAa1Z=XfbNFur|DZr@QXIDxkBD#f>N<18cYvh)EjTC~1 zyr{}EI=K1on)5uRkKiG@syw5^S@tf>``mANN>{<@>*)xX;|8#+QzK8j8c>TF#MML~ zbf=dokxgKYzsDMe4rZk&q>2t7S@3*I+?jV~yLfzOK|~>u@bq}1=eicVjr5ZA97m5w zVxjT}a{RhY?#3%3!;La3t`#JDkJ>2Z*jK6@)&#!p^#rI?1vvbD3V9_(OO0ME?dP~# z2_ubC{!TfcAVLTIC~nM`=rwV1MvYfUd(!9IFa3%lgdGu_g3 zl7E@BPl6FhQwJE{qJEfAdDl5}Cp>y^G52oTUoyRZ+fM?uERvTcQeS)Di%aYETQ~8k z)e7=@ZtN@|(}L+1Y;bq`vJcRvcjg`~S3Q&Qn_+ASs)l&hsC%yPBpiB)sN2y{{*x5Y zT|xT=P;-F;e|^@Or~RjCJqq8+J{X_-?lmzQu0FjbB}6vT~?Q^ zNnmp4UljVhk%ADdMD~g~BuQB*{jnZB=i2s+&Zxm-%#kTioc$RSo;WG~-mp7UF zXjcJQ3u&r0{oKge@(7EApe={86!;k^$(UIkTKG?N1;8@n=k4fRNv4Bl(#ufWM!hgQmB2-!MU`$jS z-QkMqQL2zteV!XQ@uZhG^=l-Vsasa!fya@U;JEvqgjNjyrVa~%C|qG9a8j&tFw?j0 zzV1B&3GA%72E8(Y7WuIY$Rb?4O!$7ev@$9WU%wm3B_)rRzs%kY^JcF>`wQKyT+iyW zB3WL3d2u4;CwgHkxgx6=`8apy>rlV{(vqg!y0}AjD#%tmbGc0|7UMzRX)gLxDDnKs z{QL?o^DF7%81T`?>Z}o!Zz=@PP~9iTDOvQ(g!P*LEthp78vt7t9J^SE6OSYp3hb)- z&%o<-p{Eo8qg)ge4g@sFj3GgXFWNJ&kJXQP5BCG(V+g!xA#t@Cez97<1TMgr+zR~P zzsRGD5UUYcQS(iCJW3OpSAa9QxOK`!Sx!>vSw`VX?}QJFa+T@RmbT17GR0`_2T#Fc zw&iYHJ#Q0m_WQS%8tyUTt}wfHrI+&@Oy8FF@kjgpx|5l$h2z0Q`Qsd-Ib{n6CXm#6 zVp=Yc**-MWSlKZ9)^uGg?6&Ws^jwymSiYLwi)&973y7wvT>iaA@c|Vg(d>Pl?WyBe zB4s>y@75-2-8c*KlP9q~sfmZT`+xhtd+l&R5y!WK_jUxy;7g0oRzBRxNWUDOV?_Q{ zRPlIIY71^iMt+P*o8G2A&eG;wRyeu@%)w7Ebc&-_W9RS8wFI7j#5f(No!$3OiN1>N z`5xECo}tUh^Yn4KVN!zA$I#w5iVx^&?tMVr`%iLJd^372iec}ZV53}%d#2*siKXHP z^@!t?xS8oB8ps!>BFV`%1+k)YF^Y?w>L&Kp($#GuXnkNYK|r-Ey9a2xEgsHWK*$y@?GD6H z%kgL5!BbKT_$=1PeBoRoz)`TAM)GlH_%AxILXygA!ZZgMspO0 z3W)7S>NV`8ir6AG^ z1Kei4P9Xksxj@PVl+CnUW%x_VDzRMH#}pd4mgoL&Rn_LHk9#v<8J9|;Aqh`BRR!j8 zSrzpHV$j!1UpC~5OlCFjA6n(Z@s2|6FvP1qjgao+QX8f8(op+xPVUzDhUL3S;4)xD57BtVY@B4Ga8oesbcKfN1&Z5GT^lD66g^zX7j zpU<35dGK2p(*4+57g9EKibS<`k12Y-HsVYHnkFeRXs#x1S)W-|&Q>J$(=(u7 ze0paE`t6QLN1xMx>o5H#e=G-JJpi~EIGv49g_AO~}arAc*S{wZw+0l>_ z%q8#s1DCg&IjYbAokgRNB6iyGjiYNJeCIlx(Cx=p&R~2;T)Qjhl#e?rp{?6D5a;%f zA1%#-TCkn}nIG9)RAp(+WwYUtf+Eh9E9qhjiO{asC2hwZ9^w3&U{kJpy)E-l=@rTLtGkgW>>aLdWY8d5Q($B#7l4x&d^9h1J zi|fXq%r2}(QBP~gtInZi)vgUxz^nGfK|d?=?!Q$yHIb9@p9D^J5klb~0#4${sqo*F zaEvAijQ{|YWmN+J>dIXQm*07=YD8H&OH6}V78U(m@o>iK<~1tA6fCvQoBw4(scNmy z?uut3qj#~|Vj#qi=z)o4dgS_EBPj)!3JJ9kgY}E2De#~v+8>3EFpkh9n88n!p6MWI-8P?Xo~ zdZwU~G;LXoHRfJjl)?ukS3keXagKqTZmWWmy0e>jbB-IE$U>;6wK65oj@SHbS?O1I zWV7lra|8hXMRlXN@4*w|52?2f$A*NhPL6Ws0|SZrUGy7LZdYHvszj@DFkoWP8iyNg zM-1%Tv+(7|{!XV@d@NJUa-W@RDO=}0Xy%I2dDm5W=q{5XCyaSK5Qur>6-Qb90Uei8 z9odP2=|ZdAeM(Ij@X*mg?u2XL$={OGLhk*jADVF3f7W~9)%%D32x5S<*8!Rjwv!SD zBK)N0B6+8QzX9g#1?ncK5Y-^BG*Aw@s!Q;DbuJm{SkPm5Pl5$z!$=2|nq|dIl)rpb zNg^V|37iNeQSI#%NdRtkmJxDX9w0HonI|ydi)bnE zOaXG@BQS2uz@-YvgO)i9P-6*Dg6Dz@xF4PnPqAewuc@&Q8#%*bM%SVIiVRrV=02uI z%sBW*KsM*=PTq6FOu+gS2YcO74Kzq=NYT0>B?U2^l+fO8^f zzh8J(!kBqx=$C@fZZO2EzUtUfPj_0VFzJ_R)R zWLs4n196UhA7A9QdzkD-QGpg(JJAzV@GSf}++{+|^byEZmhjVW{#MY_p7KAj{?kuO z;)|HJfb{ylA)uHzj8xz9YNy0(|MIx->j2N$F$l2GJwK`mPmn5_CuW+xeUGQthknVM z@W{;Yzqcnfnu$ZfTKeP+cDF@&@hd@^<OZ5`uE8ZN%v}>;?b*8g7S#nK|Ik>SWo6u2-3o5D?S! z<2KHV3Xlqcx3TaSV5jVvZyD|iXObreo2EVWrROGa6%!Y;sN%^~dp_%t|% zq@e8gu36i%5%v>nliRmxV(C7Av5ckcvrjoa@)vLO6vz;J@9WD?C7o0+-*X!c0m@}V z$=SiU-<%$XafpUtC-M0z+9S~dmTtgQ!QiVUF4l)a2x5Yi^>8N=SrIW%i7y zv3foR=Qx;#lThJwieQOf9Xt}!9Xl6;XLqYMgoQ%}bq%Q_@_h-gY8Qjk9QSt^{lQ}K zUUe5&GUt!BFgegnZV4M%zm{gf_tJ)&70+7<%+Fvms^ZQ5j$Je0fdF|Bt&I|kQ87qK z;4&oLmk8z2lIAP4>d`HW$= z;V`kYw^d6Tk)jruvk6~FiDisXv<*XfCj+& z(YHAahGt2%*)Ddyp_8R7CZMe_fj@pt%S)*^M+AeK6A+V*7G$Lq#N#N3vW3eQC}J^t zo1SAxXb zlA~P4v}qtKuA;H^J$@m1vPWoyj4m2L`3iloKFtcwrTZPizu#u7`tntB^e-P0|FNk* zjpg!3dl2K1w|Q}-WG_ix5huo$7CpI3FDzGJ^XzwQ@dJJL4+!~c16*4D(9b(Q6Qm9n zO!Yl?{0;XdnEWr;L5kO;D1P^j=Lg;K7e?U(NB-;;&(W#Qx$eFH4ESFv`4c_#7u)2U zrFZ`_7aEB5_~?iJnb-KH;9o26jeoVRrpd!U8&NMHPJX$@UyU0F65-t6Uk_^OJN%0u z)l(wQoy*YdaPV)29i`VC?HW{mInkP;_@tlU>CoO|Q&Y$GghG;!{?beE%qZ^1tuc@+ z9~*?cXI(zj^xFuYqQk@Vn_vdH!Hxa?gtsEe+v}!*M{*KU75S*zrg$7YdvPRe#+vL1 z<0li2<&VAa{V((F0*?$f4jqV-6mR=TK0ozVGL?u=rt-cg7cAJWFE)qOpxmvh-J<;% zoNIpn{J})>4Nn;2d?GY=h0TJRtQ}uxFYtO7@0;oY{j`%}@~%#!Vl;RZrrklz*V@R$ zqzsbYbOj_!MNabwW$3;#&ePiP-EnBnj5}9yVuX}@J^Cs5d1qBKoA0qn*OAxF1Zsbmvvl|xDwh-Qz?mSc#b|BT=n@6Gv!U2{g2FUXgXU6PJ$18xjW&X>XLzoj6F2tG~CIY^p5<_y(sI+Bc z98bGKw$}n7#0HwjF@ytFaKUcs*aFZw$D}J=YXKXCH)T9Cjn-x7qlD{N!;}A?>mTb8 zdIhF>-VuZU%6&(QT_dXJWJ0k#_a$Eu%B%6Aop01jkW4X!O>A4kpV<88Qk2|-x&Nje zUuSC<7G0=IUQP`viyr8DJfv-cwQOk)zV)6A;u+?>Tj@Sd6c^+2r$}?=LWS3LuJ9YK z)k8oJP+;kei4C^gF>|}tYRPPJ>K^X(m?c~Rp>ckCQDgYjt;CWNlmEun8WUY{W)6J4 zS_3hteZ6R;IH5M{`hJ$uJ>%AuKksNo8=>0i+cYry5;YHqk?}>)RWTEm0 z7^)>DQr*A2?qMVgzvEgW4>Md8@?~S>$Z|T?CE;1VXj7!#;tkktPM^0FuZc6TE@jA7 zduV$sAptccNOqP*1m?Z}men^Ur(vjO40Ert^1bIgmdGA26TQ4=$#FOBOA7 zYd7ywm&u6-Bbsvr6`HHE#I~E9%!g=!5)zF;CY4nGZzArz{%3K^FA@2z=***BGi&2(f_{0dz3%mU*=YHXqxH#_fo^ej>?Urrd|Jx{^ma1Jp8hX?f$Le1N zE}r%asZwTWqvW3vU}-ul1Wvfe#3vKkKw12Yi-z$X?|9L1SDc&4!0aC~wNHLU?@hcO z4?&j6%4kEF>B_)nq;CI`V}sKmZSmFjnHJbL*&4@;|2F-<7Y$D{I@02rBS~wH?X%EB z$w~cPN)=Nosl1Wnn7Bts$k~%f#Fj`~BqBX45$PFQ-pKPpQxK`|;@IE?19zD7!>0y` znu5C%+!;ipOW)mrd9HOHW&xhmIU}UW1>#oD=#=wuv}JKF+g<=1$pI+qZZvB_egpuv z_PC2efAWoFv*=f9%_9cQ%T5?lUJ(AlL3%DdfGPp?hUST!=@Wr{)4rbe9Cj$nm%=Oq z2oOZce&~T%tte%`)_3_PJeNX)BIhn;dXL{SFiCLyARDGi4I~;O$*{6L@M?v5a!MfO zBn5!1NXC@l7{C;OF^ORItN&nuTBgnN{ z=T`|qH0KB8*ige1c%aA>{a73Uz+o5Oz@haqz}&X*&VXTld3RR?jA{->kwe)I^UH>x zU1p;BGrV|>6$Us_yHW9L9~WvfqRvLmMeUA?qQ<}W0V*PDcU1VA6h4c<1Pe?#uF@!W znZ>A_c5p@I<(BeJ6L)aTDBIr`GW4T$LPh|hiuTpj3!A25!+jb^KO3s`TMJ?y34SI4 z1AS-OF#hbQkFt6E#Zh0veqsENv){=|+8$zmDSkiu2duX3CF}>{M>etR+rEQeQ5pBv z2W6i{Wc@G`k?p^2VkL0$G68VL>OQS2${)_G!}eQPSfmFdo3I7#4lC^>K!r|~XaCG@ z1f7;Qv|R)x0s`6a3`fut8f+dMl%EZVwNniB8oVuIE!UA0TN1b7M7t4~A#LjpNtfA) zgQl-HzqQ%SlYt&bj9Z5H_>Ctg1zp6hN~5qhsMA)5B2k+eC$>^VR_OJ#^i?8BcxhSF z(Nwfh5u=#xK|as}Ses^gdG=2T?Uh#(xFA2A-5xsElmtZ((;ZKVsBSu8H}005zT#wm zr0+?W4jw&{uh~vd$(l;;8Lff&R!|nQhv0;zb8csOOE(89sd}*^Y-pJc$afMrMq(|j z{R*(4ZM#F=hEQTt>HGIszzzf%dX4MW_U#caz|bv<&qTbi-)euj0pEajDSHtorc;_J zJ~&N-4Kmb$;9<7vQ%4L^YnJJvf~b_P^oOpV3V5n1EOG2iX7}8iI0r4N2JyKkk;7R{ z)L5sAZnBAsq8+nIl$os6-aQT-|GkRrGt=GsiD%>H*Sg?b;`>;#b}i}92y6nPVv z)5uRe(E|JFH%~>BLr?LZO+r?a193gyK2mB?$dK*m&Oo?;xs;AgpdZL(_7DqE@7ezeLoTUrdm!Zo-Vc zOc3lu5q&v&1Aab1cThO*Ht4$-)5vlV|IWI&v9%MErp#C@YgbJ;S?srAb2gHkC!T#W z3x&4<=$mRnCnhJGSC-~t;oGU6cxPVEbQ?;E&B~r|`LuEY{&2p=x4_%ms_foXFq(>7 z3m~G5fL0*~pj-fu15hTA13&=h1VHy$JJgnC`w&9MRe)S+;E6~6gwV$gS&wL0BPzBB zp}kEL0}@m;ltxvn)ksXsh1M061%QgC(x_?$jr|5`%U2?Bn?L|6+LT6Bn->oP0jtw7 zy_k{bqx^F-e2T_qcbEX=jrMB=@Cof=l?_^LeV~DtS55s!BPu&~vGXn6QOeI(^QkPv z1wyy<%0DUQGP*gr6?4?W1sb4u6guMb=~!q)b}GP?L3{Sd0FV3;9$bdMn03CiEchu8 z-h?&J^)ui=js9r@@>=~<_mq#r2L1ZcgfzA?x}0-EK)lbxZ!N1Zn=&zRt=XL-!w5xG zPyBbcTD-l~C=rM7a7b9EEO8Nl`TGsc7TU~PLPIcQ;Tu5?3mpy(SBZxzRJ=wv^6V^n z_C*L`xg7lEe8e=Bg?JJzIpxWD&#X=|L`^JSq5xKrnF1366oj0pR4x2g^)C_ASmOff zRvk&Oa_otKl+GldPt1+~>*4!*VR`(&cS-T>5{bjbd#Uf9)tLR4z$j%CSi%rSl86xP zeb|=}QZmElfp%i4k^R$dOt``!KkI^j5u9)2W^yM<;>?=Pr3}Eys)e#YMj(ET76?Gr zVBj@cRLQT_Pd=c6h1X(6t@NOyTgqx7Tb8h-s+LVnM@PmOZJUixb_sw?l~UnyT=}9n zT!79#I^|y+SVIca{92|T^~#Sa%LflF{=Pu^;_FYze%X1x`-h{?4vJ>Ypp#Oc(`>}|uCc^Vnmm>cnPAqpkE$;&t$ zLMIL1w8!3NLz#T)!IWX4k@&k1sC4rg7ZW(Dr>M*%$<4GKY)L*;<=KobHYN_8jnrd~_(W-Pv z{{#)!q&F9zNihx|Y7L=8l2lNo-Co7QM<=%hmWpwHv#Hq0kEuo?tip!jKXopvvg<+- z>zM*=X7OoYPy$Ox{p{1XN@7eHvJrl;B~7Rrc$7S$=0eD=tHbxTsaaEpHs8gvMishC zNxz|ASPBT9Gg*jc)xq~+zdbn2aW-SyS=??II16@a-*VJnT&sI(aKzjNWcp_)oFF_! zP7_slh}ub|ukDx8me^kHe>elaM|Uo|5|qhJj8RWj^3c6u`=iWD`@`N5mY^Qu&BmW6 zFpUax%8c_-dxrn|vwC(fQAcZf?41Z(!WR=mr!mTI>Ge@!ocQMBi~NV(bvX zAh%4$u5DJhxqjQbWNRyWyUEE7+*rRYHqX)2)<#V!HJ>F$0~X?>`4>#Toh1Klci8^$ zi|y;JGXLYyJP$8*@kPyfb~ubpK<&Gd=$tyyG*Kh`^&uPInVgIG3B#< z`FiV!&v`ZCIsW^!M3Y^yKsMMuY2_#XV`ah*i}CS;fvAZ@fu!X2iJ=#eAlR3X6$8=b z6z2T^sPKsQYJ2ajKSOQ(09x6QrH?7y+B&%PSBZvZx`(%aF;usHPrivL`_06pVbj>o z3kd;1F$I4w7H)oo75iE(y{+87C6W{5DV^^Xj~5wW`#rCK@>mKOg1tlsg%{&t>p-@f2er$Qg$(0T-Uj_L@H

!M7PFxa^jfuFvTkK6V&PsAedwx2FLiWqS$X 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 diff --git a/test/net/sourceforge/plantuml/ugraphic/ImageBuilderTest.java b/test/net/sourceforge/plantuml/ugraphic/ImageBuilderTest.java index c8a81ee86..4d462ba23 100644 --- a/test/net/sourceforge/plantuml/ugraphic/ImageBuilderTest.java +++ b/test/net/sourceforge/plantuml/ugraphic/ImageBuilderTest.java @@ -2,6 +2,8 @@ package net.sourceforge.plantuml.ugraphic; import net.sourceforge.plantuml.FileFormatOption; import net.sourceforge.plantuml.PlainDiagram; +import net.sourceforge.plantuml.StringLocated; +import net.sourceforge.plantuml.core.UmlSource; import net.sourceforge.plantuml.creole.legacy.PSystemCreole; import net.sourceforge.plantuml.wbs.WBSDiagram; import org.junit.jupiter.params.ParameterizedTest; @@ -10,6 +12,8 @@ import org.junit.jupiter.params.provider.CsvSource; import static net.sourceforge.plantuml.FileFormat.DEBUG; import static org.assertj.core.api.Assertions.assertThat; +import java.util.ArrayList; + class ImageBuilderTest { @ParameterizedTest @@ -22,7 +26,7 @@ class ImageBuilderTest { nullValues = {"NULL"} ) public void test_preserveAspectRatio_plainDiagram(String inFileFormatOption, String expected) throws Exception { - final PlainDiagram diagram = new PSystemCreole(); + final PlainDiagram diagram = new PSystemCreole(new UmlSource(new ArrayList(), false)); FileFormatOption fileFormatOption = new FileFormatOption(DEBUG); if (inFileFormatOption != null) fileFormatOption = fileFormatOption.withPreserveAspectRatio(inFileFormatOption); @@ -44,7 +48,7 @@ class ImageBuilderTest { nullValues = {"NULL"} ) public void test_preserveAspectRatio_styledDiagram(String inSkinParam, String inFileFormatOption, String expected) throws Exception { - final WBSDiagram diagram = new WBSDiagram(); + final WBSDiagram diagram = new WBSDiagram(new UmlSource(new ArrayList(), false)); FileFormatOption fileFormatOption = new FileFormatOption(DEBUG); if (inSkinParam != null) diagram.setParam("preserveAspectRatio", inSkinParam);

9P;v&Sta24ecD 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