From 57cff648691518329b03db3ea3c4dd262a85d31d Mon Sep 17 00:00:00 2001 From: Simon Wisselink Date: Fri, 23 Dec 2022 14:03:05 +0100 Subject: [PATCH] Add makefile, PSR-4 ModifierCompilers --- .gitignore | 4 + Makefile | 19 +++ TODO.txt | 8 +- composer.json | 15 +- plugins/modifiercompiler.count_characters.php | 28 ---- plugins/modifiercompiler.count_paragraphs.php | 26 ---- plugins/modifiercompiler.count_sentences.php | 26 ---- plugins/modifiercompiler.count_words.php | 26 ---- plugins/modifiercompiler.default.php | 32 ---- plugins/modifiercompiler.escape.php | 63 -------- plugins/modifiercompiler.from_charset.php | 26 ---- plugins/modifiercompiler.indent.php | 30 ---- plugins/modifiercompiler.lower.php | 25 --- plugins/modifiercompiler.nl2br.php | 23 --- plugins/modifiercompiler.noprint.php | 20 --- plugins/modifiercompiler.round.php | 23 --- plugins/modifiercompiler.str_repeat.php | 23 --- plugins/modifiercompiler.string_format.php | 24 --- plugins/modifiercompiler.strip_tags.php | 28 ---- plugins/modifiercompiler.strlen.php | 23 --- plugins/modifiercompiler.to_charset.php | 26 ---- plugins/modifiercompiler.unescape.php | 40 ----- plugins/modifiercompiler.upper.php | 24 --- plugins/modifiercompiler.wordwrap.php | 36 ----- plugins/shared.literal_compiler_param.php | 38 ----- src/Cacheresource/Base.php | 4 +- src/Compile/Call.php | 91 ----------- src/Compile/Modifier/Base.php | 49 ++++++ .../Compile/Modifier/CatModifierCompiler.php | 25 ++- .../CountCharactersModifierCompiler.php | 23 +++ .../CountParagraphsModifierCompiler.php | 21 +++ .../CountSentencesModifierCompiler.php | 21 +++ .../Modifier/CountWordsModifierCompiler.php | 21 +++ .../Modifier/DefaultModifierCompiler.php | 27 ++++ .../Modifier/EscapeModifierCompiler.php | 55 +++++++ .../Modifier/FromCharsetModifierCompiler.php | 21 +++ .../Modifier/IndentModifierCompiler.php | 25 +++ .../Modifier/LowerModifierCompiler.php | 20 +++ .../Modifier/Nl2brModifierCompiler.php | 18 +++ .../Modifier/NoPrintModifierCompiler.php | 18 +++ .../Modifier/RoundModifierCompiler.php | 19 +++ .../Modifier/StrRepeatModifierCompiler.php | 18 +++ .../Modifier/StringFormatModifierCompiler.php | 19 +++ .../Modifier/StripModifierCompiler.php | 29 ++-- .../Modifier/StripTagsModifierCompiler.php | 23 +++ .../Modifier/StrlenModifierCompiler.php | 19 +++ .../Modifier/ToCharsetModifierCompiler.php | 21 +++ .../Modifier/UnescapeModifierCompiler.php | 34 +++++ .../Modifier/UpperModifierCompiler.php | 19 +++ .../Modifier/WordWrapModifierCompiler.php | 29 ++++ src/Compile/{ => Tag}/Append.php | 2 +- src/Compile/{ => Tag}/Assign.php | 5 +- src/Compile/{ => Tag}/Base.php | 8 +- src/Compile/{ => Tag}/Block.php | 2 +- src/Compile/{ => Tag}/BlockChild.php | 2 +- src/Compile/{ => Tag}/BlockClose.php | 2 +- src/Compile/{ => Tag}/BlockParent.php | 2 +- src/Compile/{ => Tag}/BreakTag.php | 2 +- src/Compile/Tag/Call.php | 90 +++++++++++ src/Compile/{ => Tag}/Capture.php | 2 +- src/Compile/{ => Tag}/CaptureClose.php | 4 +- src/Compile/{ => Tag}/Child.php | 4 +- src/Compile/{ => Tag}/ConfigLoad.php | 5 +- src/Compile/{ => Tag}/ContinueTag.php | 4 +- src/Compile/{ => Tag}/Debug.php | 4 +- src/Compile/{ => Tag}/ElseIfTag.php | 4 +- src/Compile/{ => Tag}/ElseTag.php | 4 +- src/Compile/{ => Tag}/EvalTag.php | 5 +- src/Compile/{ => Tag}/ExtendsTag.php | 4 +- src/Compile/{ => Tag}/ForClose.php | 4 +- src/Compile/{ => Tag}/ForElse.php | 4 +- src/Compile/{ => Tag}/ForTag.php | 4 +- src/Compile/{ => Tag}/ForeachClose.php | 4 +- src/Compile/{ => Tag}/ForeachElse.php | 4 +- src/Compile/{ => Tag}/ForeachSection.php | 4 +- src/Compile/{ => Tag}/ForeachTag.php | 4 +- src/Compile/{ => Tag}/FunctionClose.php | 6 +- src/Compile/{ => Tag}/FunctionTag.php | 4 +- src/Compile/{ => Tag}/IfClose.php | 6 +- src/Compile/{ => Tag}/IfTag.php | 4 +- src/Compile/{ => Tag}/IncludeTag.php | 3 +- src/Compile/{ => Tag}/Inheritance.php | 4 +- src/Compile/{ => Tag}/Insert.php | 3 +- src/Compile/{ => Tag}/Ldelim.php | 4 +- src/Compile/{ => Tag}/MakeNocache.php | 5 +- src/Compile/{ => Tag}/Nocache.php | 4 +- src/Compile/{ => Tag}/NocacheClose.php | 4 +- src/Compile/{ => Tag}/ParentTag.php | 2 +- src/Compile/{ => Tag}/PrivateBlockPlugin.php | 4 +- .../{ => Tag}/PrivateFunctionPlugin.php | 5 +- src/Compile/{ => Tag}/PrivateModifier.php | 11 +- .../{ => Tag}/PrivateObjectBlockFunction.php | 2 +- .../{ => Tag}/PrivateObjectFunction.php | 4 +- .../{ => Tag}/PrivatePrintExpression.php | 5 +- .../{ => Tag}/PrivateRegisteredFunction.php | 2 +- .../{ => Tag}/PrivateSpecialVariable.php | 8 +- src/Compile/{ => Tag}/Rdelim.php | 4 +- src/Compile/{ => Tag}/Section.php | 4 +- src/Compile/{ => Tag}/SectionClose.php | 6 +- src/Compile/{ => Tag}/SectionElse.php | 4 +- src/Compile/{ => Tag}/Setfilter.php | 4 +- src/Compile/{ => Tag}/SetfilterClose.php | 4 +- src/Compile/{ => Tag}/WhileClose.php | 4 +- src/Compile/{ => Tag}/WhileTag.php | 4 +- src/Compiler/CodeFrame.php | 2 +- .../{ConfigFile.php => Configfile.php} | 8 +- src/Compiler/Template.php | 143 +++++------------- src/Data.php | 4 +- src/Extension/Base.php | 14 ++ src/Extension/Core.php | 91 +++++++++++ src/Extension/ExtensionInterface.php | 11 ++ src/Lexer/ConfigfileLexer.plex | 12 +- src/Parser/ConfigfileParser.y | 21 +-- src/Parser/TemplateParser.y | 51 ++++--- src/Resource/BasePlugin.php | 22 +-- src/Resource/CustomPlugin.php | 2 +- src/Resource/FilePlugin.php | 2 +- src/Resource/RecompiledPlugin.php | 2 +- src/Resource/StreamPlugin.php | 2 +- src/Resource/StringEval.php | 8 +- src/Resource/StringPlugin.php | 2 +- src/Resource/UncompiledPlugin.php | 2 +- src/Smarty.php | 63 +++++++- src/Template.php | 2 +- src/Template/Config.php | 4 +- src/Template/Source.php | 4 +- tests/Bootstrap.php | 1 - .../ProtectedFolderVarsTest.php | 2 +- .../PHPunitplugins/resource.ambiguous.php | 1 + .../PHPunitplugins/compiler.test.php | 2 +- .../PHPunitplugins/compiler.testclose.php | 2 +- .../compiler.getparamsshort.php | 2 +- utilities/make-lexer.php | 7 + utilities/make-parser.php | 11 ++ 134 files changed, 1048 insertions(+), 1084 deletions(-) create mode 100644 Makefile delete mode 100644 plugins/modifiercompiler.count_characters.php delete mode 100644 plugins/modifiercompiler.count_paragraphs.php delete mode 100644 plugins/modifiercompiler.count_sentences.php delete mode 100644 plugins/modifiercompiler.count_words.php delete mode 100644 plugins/modifiercompiler.default.php delete mode 100644 plugins/modifiercompiler.escape.php delete mode 100644 plugins/modifiercompiler.from_charset.php delete mode 100644 plugins/modifiercompiler.indent.php delete mode 100644 plugins/modifiercompiler.lower.php delete mode 100644 plugins/modifiercompiler.nl2br.php delete mode 100644 plugins/modifiercompiler.noprint.php delete mode 100644 plugins/modifiercompiler.round.php delete mode 100644 plugins/modifiercompiler.str_repeat.php delete mode 100644 plugins/modifiercompiler.string_format.php delete mode 100644 plugins/modifiercompiler.strip_tags.php delete mode 100644 plugins/modifiercompiler.strlen.php delete mode 100644 plugins/modifiercompiler.to_charset.php delete mode 100644 plugins/modifiercompiler.unescape.php delete mode 100644 plugins/modifiercompiler.upper.php delete mode 100644 plugins/modifiercompiler.wordwrap.php delete mode 100644 plugins/shared.literal_compiler_param.php delete mode 100644 src/Compile/Call.php create mode 100644 src/Compile/Modifier/Base.php rename plugins/modifiercompiler.cat.php => src/Compile/Modifier/CatModifierCompiler.php (57%) create mode 100644 src/Compile/Modifier/CountCharactersModifierCompiler.php create mode 100644 src/Compile/Modifier/CountParagraphsModifierCompiler.php create mode 100644 src/Compile/Modifier/CountSentencesModifierCompiler.php create mode 100644 src/Compile/Modifier/CountWordsModifierCompiler.php create mode 100644 src/Compile/Modifier/DefaultModifierCompiler.php create mode 100644 src/Compile/Modifier/EscapeModifierCompiler.php create mode 100644 src/Compile/Modifier/FromCharsetModifierCompiler.php create mode 100644 src/Compile/Modifier/IndentModifierCompiler.php create mode 100644 src/Compile/Modifier/LowerModifierCompiler.php create mode 100644 src/Compile/Modifier/Nl2brModifierCompiler.php create mode 100644 src/Compile/Modifier/NoPrintModifierCompiler.php create mode 100644 src/Compile/Modifier/RoundModifierCompiler.php create mode 100644 src/Compile/Modifier/StrRepeatModifierCompiler.php create mode 100644 src/Compile/Modifier/StringFormatModifierCompiler.php rename plugins/modifiercompiler.strip.php => src/Compile/Modifier/StripModifierCompiler.php (51%) create mode 100644 src/Compile/Modifier/StripTagsModifierCompiler.php create mode 100644 src/Compile/Modifier/StrlenModifierCompiler.php create mode 100644 src/Compile/Modifier/ToCharsetModifierCompiler.php create mode 100644 src/Compile/Modifier/UnescapeModifierCompiler.php create mode 100644 src/Compile/Modifier/UpperModifierCompiler.php create mode 100644 src/Compile/Modifier/WordWrapModifierCompiler.php rename src/Compile/{ => Tag}/Append.php (98%) rename src/Compile/{ => Tag}/Assign.php (97%) rename src/Compile/{ => Tag}/Base.php (98%) rename src/Compile/{ => Tag}/Block.php (98%) rename src/Compile/{ => Tag}/BlockChild.php (93%) rename src/Compile/{ => Tag}/BlockClose.php (99%) rename src/Compile/{ => Tag}/BlockParent.php (94%) rename src/Compile/{ => Tag}/BreakTag.php (99%) create mode 100644 src/Compile/Tag/Call.php rename src/Compile/{ => Tag}/Capture.php (98%) rename src/Compile/{ => Tag}/CaptureClose.php (94%) rename src/Compile/{ => Tag}/Child.php (97%) rename src/Compile/{ => Tag}/ConfigLoad.php (94%) rename src/Compile/{ => Tag}/ContinueTag.php (87%) rename src/Compile/{ => Tag}/Debug.php (94%) rename src/Compile/{ => Tag}/ElseIfTag.php (98%) rename src/Compile/{ => Tag}/ElseTag.php (92%) rename src/Compile/{ => Tag}/EvalTag.php (95%) rename src/Compile/{ => Tag}/ExtendsTag.php (98%) rename src/Compile/{ => Tag}/ForClose.php (94%) rename src/Compile/{ => Tag}/ForElse.php (92%) rename src/Compile/{ => Tag}/ForTag.php (98%) rename src/Compile/{ => Tag}/ForeachClose.php (93%) rename src/Compile/{ => Tag}/ForeachElse.php (94%) rename src/Compile/{ => Tag}/ForeachSection.php (98%) rename src/Compile/{ => Tag}/ForeachTag.php (99%) rename src/Compile/{ => Tag}/FunctionClose.php (98%) rename src/Compile/{ => Tag}/FunctionTag.php (96%) rename src/Compile/{ => Tag}/IfClose.php (89%) rename src/Compile/{ => Tag}/IfTag.php (97%) rename src/Compile/{ => Tag}/IncludeTag.php (99%) rename src/Compile/{ => Tag}/Inheritance.php (95%) rename src/Compile/{ => Tag}/Insert.php (98%) rename src/Compile/{ => Tag}/Ldelim.php (94%) rename src/Compile/{ => Tag}/MakeNocache.php (94%) rename src/Compile/{ => Tag}/Nocache.php (93%) rename src/Compile/{ => Tag}/NocacheClose.php (94%) rename src/Compile/{ => Tag}/ParentTag.php (94%) rename src/Compile/{ => Tag}/PrivateBlockPlugin.php (98%) rename src/Compile/{ => Tag}/PrivateFunctionPlugin.php (95%) rename src/Compile/{ => Tag}/PrivateModifier.php (93%) rename src/Compile/{ => Tag}/PrivateObjectBlockFunction.php (97%) rename src/Compile/{ => Tag}/PrivateObjectFunction.php (97%) rename src/Compile/{ => Tag}/PrivatePrintExpression.php (98%) rename src/Compile/{ => Tag}/PrivateRegisteredFunction.php (98%) rename src/Compile/{ => Tag}/PrivateSpecialVariable.php (95%) rename src/Compile/{ => Tag}/Rdelim.php (93%) rename src/Compile/{ => Tag}/Section.php (99%) rename src/Compile/{ => Tag}/SectionClose.php (90%) rename src/Compile/{ => Tag}/SectionElse.php (93%) rename src/Compile/{ => Tag}/Setfilter.php (92%) rename src/Compile/{ => Tag}/SetfilterClose.php (95%) rename src/Compile/{ => Tag}/WhileClose.php (93%) rename src/Compile/{ => Tag}/WhileTag.php (97%) rename src/Compiler/{ConfigFile.php => Configfile.php} (97%) create mode 100644 src/Extension/Base.php create mode 100644 src/Extension/Core.php create mode 100644 src/Extension/ExtensionInterface.php create mode 100644 utilities/make-lexer.php create mode 100644 utilities/make-parser.php diff --git a/.gitignore b/.gitignore index 67f0dc51..97b7377d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,7 @@ phpunit* .phpunit.result.cache vendor/* composer.lock +/src/Lexer/ConfigfileLexer.php +/src/Lexer/TemplateLexer.php +/src/Parser/ConfigfileParser.php +/src/Parser/TemplateParser.php diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..38afdbf1 --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +all: lexers parsers + +lexers: src/Lexer/ConfigfileLexer.php src/Lexer/TemplateLexer.php +parsers: src/Parser/ConfigfileParser.php src/Parser/TemplateParser.php + +src/Lexer/ConfigfileLexer.php: src/Lexer/ConfigfileLexer.plex + php ./utilities/make-lexer.php src/Lexer/ConfigfileLexer.plex src/Lexer/ConfigfileLexer.php + +src/Lexer/TemplateLexer.php: src/Lexer/TemplateLexer.plex + php ./utilities/make-lexer.php src/Lexer/TemplateLexer.plex src/Lexer/TemplateLexer.php + +src/Parser/ConfigfileParser.php: src/Parser/ConfigfileParser.y + php ./utilities/make-parser.php src/Parser/ConfigfileParser.y src/Parser/ConfigfileParser.php + +src/Parser/TemplateParser.php: src/Parser/TemplateParser.y + php ./utilities/make-parser.php src/Parser/TemplateParser.y src/Parser/TemplateParser.php + +clean: + rm -f src/Lexer/ConfigfileLexer.php src/Lexer/TemplateLexer.php src/Parser/ConfigfileParser.php src/Parser/TemplateParser.php \ No newline at end of file diff --git a/TODO.txt b/TODO.txt index c0b575d4..e7e61a8d 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,9 +1,7 @@ -- [ ] \Smarty\Cacheresource\Base::load generates classnames that are now invalid -- [ ] \Smarty\Resource\BasePlugin::load generates classnames that are now invalid -- [ ] consistent ConfigFile Configfile - +## Data, TemplateBase, Smarty, Template, Debug, DataObject mess: - [ ] review usages of ->_getSmartyObj and ->smarty: maybe change this so we can hide more - [ ] ->_objType and ->objMap - [ ] refactor _isTplObj, _isDataObj +- [ ] look for and remove @method and @property phpdoc tags + - [ ] remove `require_once` calls from tests/*, especially where they load files from the demo dir -- [ ] look for and remove @method and @property phpdoc tags \ No newline at end of file diff --git a/composer.json b/composer.json index e6cfafa9..df463a86 100644 --- a/composer.json +++ b/composer.json @@ -36,7 +36,10 @@ "autoload": { "psr-4" : { "Smarty\\" : "src/" - } + }, + "files": [ + "src/functions.php" + ] }, "extra": { "branch-alias": { @@ -45,6 +48,12 @@ }, "require-dev": { "phpunit/phpunit": "^8.5 || ^7.5", - "smarty/smarty-lexer": "^3.1" - } + "smarty/smarty-lexer": "@dev" + }, + "repositories": [ + { + "type": "path", + "url": "../smarty-lexer/" + } + ] } diff --git a/plugins/modifiercompiler.count_characters.php b/plugins/modifiercompiler.count_characters.php deleted file mode 100644 index 78a0f50f..00000000 --- a/plugins/modifiercompiler.count_characters.php +++ /dev/null @@ -1,28 +0,0 @@ - "\\\\\\\\", "\'" => "\\\\\'", "\"" => "\\\\\"", "\\r" => "\\\\r", "\\n" => "\\\n", " "<\/", "