Workspaces
Documents make it easier to work with the many types of nodes produced by the parser, and Workspaces make it easier to interact with many documents simultaneously. Using workspaces, we can compile multiple documents at once or look for specific nodes and features across the workspace.
1<?php
2
3use Stillat\BladeParser\Document\Document;
4use Stillat\BladeParser\Workspaces\Workspace;
5
6$workspace = new Workspace();
7$workspace->addDirectory(resource_path('views'))->getDocuments()->each(function (Document $doc) {
8 // Interact with documents in the workspace.
9});
10
11// Find all components in the workspace.
12$components = $workspace->getComponents();
#Available Methods
#addDirectory
Recursively adds all Blade templates to the workspace discovered within the provided directory.
Argument | Description |
---|---|
$directory | The path. |
1<?php
2
3use Stillat\BladeParser\Workspaces\Workspace;
4
5public function addDirectory(
6 string $directory
7): Workspace;
#addFile
Adds a single Blade template to the workspace.
If the provided path does not end with a configured Blade extension, the file will not be added to the workspace.
Argument | Description |
---|---|
$path | The file path. |
1<?php
2
3use Stillat\BladeParser\Workspaces\Workspace;
4
5public function addFile(
6 string $path
7): Workspace;
#getDocuments
Returns a collection of Document
instances.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getDocuments(): Collection;
#getFileCount
Returns the number of template files discovered in the workspace.
1<?php
2
3public function getFileCount(): int;
#findDirectivesByName
Returns all directives with the provided name in the workspace.
Argument | Description |
---|---|
$name | The directive name to search |
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function findDirectivesByName(
6 string $name
7): NodeCollection;
#getComments
Retrieves all Blade comments in the workspace.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getComments(): NodeCollection;
#hasAnyComments
Returns a value indicating if the workspace has any Blade comments.
1<?php
2
3public function hasAnyComments(): bool;
#getEchoes
Returns all Blade echo nodes in the workspace.
Retrieves all Blade echo statements from the workspace. Echo nodes are created after parsing the following types of syntax:
Normal echo:
{{ $variable }}
Triple echo:
{{{ $variable }}}
Raw Echo:
{!! $variable !!}
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getEchoes(): NodeCollection;
#getPhpBlocks
Returns all Blade php/endphp blocks within the workspace.
Retrieves all raw PHP blocks within the workspace templates that were created using Blade's @php
/@endphp
directives. Raw @php
directives that contain arguments will not be converted to instances of PhpBlockNode
, and will instead become instances of DirectiveNode
.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getPhpBlocks(): NodeCollection;
#getPhpTags
Returns all PHP tags within the workspace.
PHP tags are created after parsing raw PHP regions within a template. PHP tags will be created whenever the following types of PHP tags are encountered:
PHP Short Echo:
<?= ?>
PHP Open:
<?php ?>
If you are looking to retrieve PHP blocks created using Blade's @php @endphp directives you should refer to thegetPhpBlocks
method instead.
Note: The PHP short echo tags will be parsed even if short tags have been disabled in the PHP configuration.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getPhpTags(): NodeCollection;
#getVerbatimBlocks
Returns all verbatim blocks within the workspace.
Returns all valid @verbatim
/@endverbatim
regions within a source document. Unpaired verbatim directives that could not be converted into a valid VerbatimNode
instance will either become part of the document's literal content (in the case of the @verbatim
directive), or will become a standalone DirectiveNode
(in the case of @endverbatim
).
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getVerbatimBlocks(): NodeCollection;
#getLiterals
Returns all literal content nodes within the workspace.
Returns the source template's content that could not be parsed into a valid Blade construct. If a document contains no Blade code, the parser will return a single instance of LiteralNode
.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getLiterals(): NodeCollection;
#getDirectives
Returns all directives within the workspace.
Returns all directives from a source document. Some directive pairs, such as the @php
/@endphp
and @verbatim
/@endverbatim
pairs will not result in an instance of DirectiveNode
, as they are handled by the parser directly.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getDirectives(): NodeCollection;
#hasAnyDirectives
Tests if the workspace contains any Blade directives.
1<?php
2
3public function hasAnyDirectives(): bool;
#getComponents
Returns all component tags within workspace document.
This method will return all component tags within a document, including closing tags and self-closing tags.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getComponents(): NodeCollection;
#getOpeningComponentTags
Returns all self-closing or opening component tags within the workspace.
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function getOpeningComponentTags(): NodeCollection;
#findComponentsByTagName
Finds all components with the provided tag name.
This method will return all component tags that match the provided name, including closing tags.
Argument | Description |
---|---|
$tagName | The tag name to filter on. |
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function findComponentsByTagName(
6 string $tagName
7): NodeCollection;
#hasAnyComponents
Returns a value indicating if the workspace has any component tags.
1<?php
2
3public function hasAnyComponents(): bool;
#hasDirective
Tests if the workspace contains a directive with the provided name.
Argument | Description |
---|---|
$name | The directive name. |
1<?php
2
3public function hasDirective(
4 string $name
5): bool;
#allOfType
Finds all nodes of the provided type.
Argument | Description |
---|---|
$type | The type to search. |
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function allOfType(
6 string $type
7): NodeCollection;
#allNotOfType
Finds all nodes that are not of the provided type.
Argument | Description |
---|---|
$type | The type to search. |
1<?php
2
3use Stillat\BladeParser\Nodes\NodeCollection;
4
5public function allNotOfType(
6 string $type
7): NodeCollection;
#hasAnyOfType
Tests if the workspace contains any node of the provided type.
Argument | Description |
---|---|
$type | The desired type. |
1<?php
2
3public function hasAnyOfType(
4 string $type
5): bool;
#getAllStructures
Returns all the workspace structures.
This method automatically performs structural analysis on a document.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getAllStructures(): Collection;
#getRootStructures
Returns the direct workspace structures.
This method automatically performs structural analysis. Only structures that are at the root of a document, without any parent node, will be returned.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getRootStructures(): Collection;
#getAllSwitchStatements
Returns all the workspaces' switch statements.
This method automatically performs structural analysis.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getAllSwitchStatements(): Collection;
#getRootSwitchStatements
Returns all the direct switch statements.
This method automatically performs structural analysis. Only @switch
statements that appear at the root of a document, without any parent nodes, will be returned.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getRootSwitchStatements(): Collection;
#getAllConditions
Returns all the workspace conditions.
This method automatically performs structural analysis.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getAllConditions(): Collection;
#getRootConditions
Returns all the root workspace conditions.
This method automatically performs structural analysis. Only structures that appear at the root of the document, without any parent node, will be returned.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getRootConditions(): Collection;
#getAllForElse
Returns all the workspace for-else blocks.
This method automatically performs structural analysis.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getAllForElse(): Collection;
#getRootForElse
Returns the direct for-else blocks.
This method automatically performs structural analysis. Only nodes that appear at the root of a document, without any parent nodes, will be returned.
1<?php
2
3use Illuminate\Support\Collection;
4
5public function getRootForElse(): Collection;