Compare commits
	
		
			2 Commits
		
	
	
		
			84020a871c
			...
			ded3d5e907
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ded3d5e907 | |||
| 9ea4856f49 | 
@ -7,7 +7,7 @@ It also insert `Tell` inside the LanguageHandler which handles the `{% _ 'relati
 | 
				
			|||||||
```php
 | 
					```php
 | 
				
			||||||
use function DI\autowire, DI\create, DI\get;
 | 
					use function DI\autowire, DI\create, DI\get;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Zend\Diactoros\Response\HtmlResponse;
 | 
					use Laminas\Diactoros\Response\HtmlResponse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use Picea\{ Picea, Caching\Cache, Caching\Opcache, Compiler, Compiler\Context, Compiler\BaseContext, FileFetcher, Language\DefaultRegistrations, Method\Request };
 | 
					use Picea\{ Picea, Caching\Cache, Caching\Opcache, Compiler, Compiler\Context, Compiler\BaseContext, FileFetcher, Language\DefaultRegistrations, Method\Request };
 | 
				
			||||||
use Picea\Extension\{ LanguageHandler, LanguageExtension, TitleExtension, MoneyExtension, UrlExtension };
 | 
					use Picea\Extension\{ LanguageHandler, LanguageExtension, TitleExtension, MoneyExtension, UrlExtension };
 | 
				
			||||||
 | 
				
			|||||||
@ -14,6 +14,8 @@ abstract class Context {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public string $compiledSource = "";
 | 
					    public string $compiledSource = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ? string $sectionAction = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public string $viewPath = "";
 | 
					    public string $viewPath = "";
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public string $filePath = "";
 | 
					    public string $filePath = "";
 | 
				
			||||||
 | 
				
			|||||||
@ -4,10 +4,14 @@ namespace Picea\ControlStructure;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class SectionToken implements ControlStructure {
 | 
					class SectionToken implements ControlStructure {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public array $token = [ "section", "endsection" ];
 | 
					    public array $token = [ "section", "section.prepend", "section.append", "endsection" ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) {
 | 
					    public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) {
 | 
				
			||||||
        switch($token) {
 | 
					        switch($token) {
 | 
				
			||||||
 | 
					            case "section.prepend":
 | 
				
			||||||
 | 
					                $context->sectionAction = "prepend";
 | 
				
			||||||
 | 
					            case "section.append":
 | 
				
			||||||
 | 
					                $context->sectionAction ??= "append";
 | 
				
			||||||
            case "section":
 | 
					            case "section":
 | 
				
			||||||
                return $this->printSection($context, $arguments);
 | 
					                return $this->printSection($context, $arguments);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -28,7 +32,7 @@ class SectionToken implements ControlStructure {
 | 
				
			|||||||
            $options = eval("return $options;");
 | 
					            $options = eval("return $options;");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ( ! ctype_alnum(str_replace([".", "\"", "'", "-", "_"], "", $name)) ) {
 | 
					        if ( ! ctype_alnum(str_replace([".", "\"", "'", "-", "_", ":"], "", $name)) ) {
 | 
				
			||||||
            throw new \RuntimeException("Your section named `{$name}` contains invalid character. Allowed are only letters, numbers, dashes, underscores and dots");
 | 
					            throw new \RuntimeException("Your section named `{$name}` contains invalid character. Allowed are only letters, numbers, dashes, underscores and dots");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -37,7 +41,9 @@ class SectionToken implements ControlStructure {
 | 
				
			|||||||
            'options' => $options,
 | 
					            'options' => $options,
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $action = $options['action'] ?? "default";
 | 
					        $action = $options['action'] ?? $context->sectionAction ?? "default";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        unset($context->sectionAction);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (! in_array($action, ['prepend', 'append', 'default'])) {
 | 
					        if (! in_array($action, ['prepend', 'append', 'default'])) {
 | 
				
			||||||
            throw new \RuntimeException("An unsupported action `$action` was given as an option of a {% section %} tag");
 | 
					            throw new \RuntimeException("An unsupported action `$action` was given as an option of a {% section %} tag");
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user