Submit
Path:
~
/
home
/
decas683
/
public_html
/
futebolsocial
/
wp-includes
/
File Content:
class-wp-block-parser.php
<?php /** * Block Serialization Parser * * @package WordPress */ /** * Class WP_Block_Parser_Block * * Holds the block structure in memory * * @since 3.8.0 */ class WP_Block_Parser_Block { /** * Name of block * * @example "core/paragraph" * * @since 3.8.0 * @var string */ public $blockName; /** * Optional set of attributes from block comment delimiters * * @example null * @example array( 'columns' => 3 ) * * @since 3.8.0 * @var array|null */ public $attrs; /** * List of inner blocks (of this same class) * * @since 3.8.0 * @var WP_Block_Parser_Block[] */ public $innerBlocks; /** * Resultant HTML from inside block comment delimiters * after removing inner blocks * * @example "...Just <!-- wp:test /--> testing..." -> "Just testing..." * * @since 3.8.0 * @var string */ public $innerHTML; /** * List of string fragments and null markers where inner blocks were found * * @example array( * 'innerHTML' => 'BeforeInnerAfter', * 'innerBlocks' => array( block, block ), * 'innerContent' => array( 'Before', null, 'Inner', null, 'After' ), * ) * * @since 4.2.0 * @var array */ public $innerContent; /** * Constructor. * * Will populate object properties from the provided arguments. * * @since 3.8.0 * * @param string $name Name of block. * @param array $attrs Optional set of attributes from block comment delimiters. * @param array $innerBlocks List of inner blocks (of this same class). * @param string $innerHTML Resultant HTML from inside block comment delimiters after removing inner blocks. * @param array $innerContent List of string fragments and null markers where inner blocks were found. */ function __construct( $name, $attrs, $innerBlocks, $innerHTML, $innerContent ) { $this->blockName = $name; $this->attrs = $attrs; $this->innerBlocks = $innerBlocks; $this->innerHTML = $innerHTML; $this->innerContent = $innerContent; } } /** * Class WP_Block_Parser_Frame * * Holds partial blocks in memory while parsing * * @internal * @since 3.8.0 */ class WP_Block_Parser_Frame { /** * Full or partial block * * @since 3.8.0 * @var WP_Block_Parser_Block */ public $block; /** * Byte offset into document for start of parse token * * @since 3.8.0 * @var int */ public $token_start; /** * Byte length of entire parse token string * * @since 3.8.0 * @var int */ public $token_length; /** * Byte offset into document for after parse token ends * (used during reconstruction of stack into parse production) * * @since 3.8.0 * @var int */ public $prev_offset; /** * Byte offset into document where leading HTML before token starts * * @since 3.8.0 * @var int */ public $leading_html_start; /** * Constructor * * Will populate object properties from the provided arguments. * * @since 3.8.0 * * @param WP_Block_Parser_Block $block Full or partial block. * @param int $token_start Byte offset into document for start of parse token. * @param int $token_length Byte length of entire parse token string. * @param int $prev_offset Byte offset into document for after parse token ends. * @param int $leading_html_start Byte offset into document where leading HTML before token starts. */ function __construct( $block, $token_start, $token_length, $prev_offset = null, $leading_html_start = null ) { $this->block = $block; $this->token_start = $token_start; $this->token_length = $token_length; $this->prev_offset = isset( $prev_offset ) ? $prev_offset : $token_start + $token_length; $this->leading_html_start = $leading_html_start; } } /** * Class WP_Block_Parser * * Parses a document and constructs a list of parsed block objects * * @since 3.8.0 * @since 4.0.0 returns arrays not objects, all attributes are arrays */ class WP_Block_Parser { /** * Input document being parsed * * @example "Pre-text\n<!-- wp:paragraph -->This is inside a block!<!-- /wp:paragraph -->" * * @since 3.8.0 * @var string */ public $document; /** * Tracks parsing progress through document * * @since 3.8.0 * @var int */ public $offset; /** * List of parsed blocks * * @since 3.8.0 * @var WP_Block_Parser_Block[] */ public $output; /** * Stack of partially-parsed structures in memory during parse * * @since 3.8.0 * @var WP_Block_Parser_Frame[] */ public $stack; /** * Empty associative array, here due to PHP quirks * * @since 4.4.0 * @var array empty associative array */ public $empty_attrs; /** * Parses a document and returns a list of block structures * * When encountering an invalid parse will return a best-effort * parse. In contrast to the specification parser this does not * return an error on invalid inputs. * * @since 3.8.0 * * @param string $document Input document being parsed. * @return WP_Block_Parser_Block[] */ function parse( $document ) { $this->document = $document; $this->offset = 0; $this->output = array(); $this->stack = array(); $this->empty_attrs = json_decode( '{}', true ); do { // twiddle our thumbs. } while ( $this->proceed() ); return $this->output; } /** * Processes the next token from the input document * and returns whether to proceed eating more tokens * * This is the "next step" function that essentially * takes a token as its input and decides what to do * with that token before descending deeper into a * nested block tree or continuing along the document * or breaking out of a level of nesting. * * @internal * @since 3.8.0 * @return bool */ function proceed() { $next_token = $this->next_token(); list( $token_type, $block_name, $attrs, $start_offset, $token_length ) = $next_token; $stack_depth = count( $this->stack ); // we may have some HTML soup before the next block. $leading_html_start = $start_offset > $this->offset ? $this->offset : null; switch ( $token_type ) { case 'no-more-tokens': // if not in a block then flush output. if ( 0 === $stack_depth ) { $this->add_freeform(); return false; } /* * Otherwise we have a problem * This is an error * * we have options * - treat it all as freeform text * - assume an implicit closer (easiest when not nesting) */ // for the easy case we'll assume an implicit closer. if ( 1 === $stack_depth ) { $this->add_block_from_stack(); return false; } /* * for the nested case where it's more difficult we'll * have to assume that multiple closers are missing * and so we'll collapse the whole stack piecewise */ while ( 0 < count( $this->stack ) ) { $this->add_block_from_stack(); } return false; case 'void-block': /* * easy case is if we stumbled upon a void block * in the top-level of the document */ if ( 0 === $stack_depth ) { if ( isset( $leading_html_start ) ) { $this->output[] = (array) self::freeform( substr( $this->document, $leading_html_start, $start_offset - $leading_html_start ) ); } $this->output[] = (array) new WP_Block_Parser_Block( $block_name, $attrs, array(), '', array() ); $this->offset = $start_offset + $token_length; return true; } // otherwise we found an inner block. $this->add_inner_block( new WP_Block_Parser_Block( $block_name, $attrs, array(), '', array() ), $start_offset, $token_length ); $this->offset = $start_offset + $token_length; return true; case 'block-opener': // track all newly-opened blocks on the stack. array_push( $this->stack, new WP_Block_Parser_Frame( new WP_Block_Parser_Block( $block_name, $attrs, array(), '', array() ), $start_offset, $token_length, $start_offset + $token_length, $leading_html_start ) ); $this->offset = $start_offset + $token_length; return true; case 'block-closer': /* * if we're missing an opener we're in trouble * This is an error */ if ( 0 === $stack_depth ) { /* * we have options * - assume an implicit opener * - assume _this_ is the opener * - give up and close out the document */ $this->add_freeform(); return false; } // if we're not nesting then this is easy - close the block. if ( 1 === $stack_depth ) { $this->add_block_from_stack( $start_offset ); $this->offset = $start_offset + $token_length; return true; } /* * otherwise we're nested and we have to close out the current * block and add it as a new innerBlock to the parent */ $stack_top = array_pop( $this->stack ); $html = substr( $this->document, $stack_top->prev_offset, $start_offset - $stack_top->prev_offset ); $stack_top->block->innerHTML .= $html; $stack_top->block->innerContent[] = $html; $stack_top->prev_offset = $start_offset + $token_length; $this->add_inner_block( $stack_top->block, $stack_top->token_start, $stack_top->token_length, $start_offset + $token_length ); $this->offset = $start_offset + $token_length; return true; default: // This is an error. $this->add_freeform(); return false; } } /** * Scans the document from where we last left off * and finds the next valid token to parse if it exists * * Returns the type of the find: kind of find, block information, attributes * * @internal * @since 3.8.0 * @since 4.6.1 fixed a bug in attribute parsing which caused catastrophic backtracking on invalid block comments * @return array */ function next_token() { $matches = null; /* * aye the magic * we're using a single RegExp to tokenize the block comment delimiters * we're also using a trick here because the only difference between a * block opener and a block closer is the leading `/` before `wp:` (and * a closer has no attributes). we can trap them both and process the * match back in PHP to see which one it was. */ $has_match = preg_match( '/<!--\s+(?P<closer>\/)?wp:(?P<namespace>[a-z][a-z0-9_-]*\/)?(?P<name>[a-z][a-z0-9_-]*)\s+(?P<attrs>{(?:(?:[^}]+|}+(?=})|(?!}\s+\/?-->).)*+)?}\s+)?(?P<void>\/)?-->/s', $this->document, $matches, PREG_OFFSET_CAPTURE, $this->offset ); // if we get here we probably have catastrophic backtracking or out-of-memory in the PCRE. if ( false === $has_match ) { return array( 'no-more-tokens', null, null, null, null ); } // we have no more tokens. if ( 0 === $has_match ) { return array( 'no-more-tokens', null, null, null, null ); } list( $match, $started_at ) = $matches[0]; $length = strlen( $match ); $is_closer = isset( $matches['closer'] ) && -1 !== $matches['closer'][1]; $is_void = isset( $matches['void'] ) && -1 !== $matches['void'][1]; $namespace = $matches['namespace']; $namespace = ( isset( $namespace ) && -1 !== $namespace[1] ) ? $namespace[0] : 'core/'; $name = $namespace . $matches['name'][0]; $has_attrs = isset( $matches['attrs'] ) && -1 !== $matches['attrs'][1]; /* * Fun fact! It's not trivial in PHP to create "an empty associative array" since all arrays * are associative arrays. If we use `array()` we get a JSON `[]` */ $attrs = $has_attrs ? json_decode( $matches['attrs'][0], /* as-associative */ true ) : $this->empty_attrs; /* * This state isn't allowed * This is an error */ if ( $is_closer && ( $is_void || $has_attrs ) ) { // we can ignore them since they don't hurt anything. } if ( $is_void ) { return array( 'void-block', $name, $attrs, $started_at, $length ); } if ( $is_closer ) { return array( 'block-closer', $name, null, $started_at, $length ); } return array( 'block-opener', $name, $attrs, $started_at, $length ); } /** * Returns a new block object for freeform HTML * * @internal * @since 3.9.0 * * @param string $innerHTML HTML content of block. * @return WP_Block_Parser_Block freeform block object. */ function freeform( $innerHTML ) { return new WP_Block_Parser_Block( null, $this->empty_attrs, array(), $innerHTML, array( $innerHTML ) ); } /** * Pushes a length of text from the input document * to the output list as a freeform block. * * @internal * @since 3.8.0 * @param null $length how many bytes of document text to output. */ function add_freeform( $length = null ) { $length = $length ? $length : strlen( $this->document ) - $this->offset; if ( 0 === $length ) { return; } $this->output[] = (array) self::freeform( substr( $this->document, $this->offset, $length ) ); } /** * Given a block structure from memory pushes * a new block to the output list. * * @internal * @since 3.8.0 * @param WP_Block_Parser_Block $block The block to add to the output. * @param int $token_start Byte offset into the document where the first token for the block starts. * @param int $token_length Byte length of entire block from start of opening token to end of closing token. * @param int|null $last_offset Last byte offset into document if continuing form earlier output. */ function add_inner_block( WP_Block_Parser_Block $block, $token_start, $token_length, $last_offset = null ) { $parent = $this->stack[ count( $this->stack ) - 1 ]; $parent->block->innerBlocks[] = (array) $block; $html = substr( $this->document, $parent->prev_offset, $token_start - $parent->prev_offset ); if ( ! empty( $html ) ) { $parent->block->innerHTML .= $html; $parent->block->innerContent[] = $html; } $parent->block->innerContent[] = null; $parent->prev_offset = $last_offset ? $last_offset : $token_start + $token_length; } /** * Pushes the top block from the parsing stack to the output list. * * @internal * @since 3.8.0 * @param int|null $end_offset byte offset into document for where we should stop sending text output as HTML. */ function add_block_from_stack( $end_offset = null ) { $stack_top = array_pop( $this->stack ); $prev_offset = $stack_top->prev_offset; $html = isset( $end_offset ) ? substr( $this->document, $prev_offset, $end_offset - $prev_offset ) : substr( $this->document, $prev_offset ); if ( ! empty( $html ) ) { $stack_top->block->innerHTML .= $html; $stack_top->block->innerContent[] = $html; } if ( isset( $stack_top->leading_html_start ) ) { $this->output[] = (array) self::freeform( substr( $this->document, $stack_top->leading_html_start, $stack_top->token_start - $stack_top->leading_html_start ) ); } $this->output[] = (array) $stack_top->block; } }
Submit
FILE
FOLDER
Name
Size
Permission
Action
ID3
---
0755
IXR
---
0755
Requests
---
0755
SimplePie
---
0755
Text
---
0755
blocks
---
0755
certificates
---
0755
css
---
0755
customize
---
0755
fonts
---
0755
images
---
0755
js
---
0755
pomo
---
0755
random_compat
---
0755
rest-api
---
0755
sodium_compat
---
0755
theme-compat
---
0755
widgets
---
0755
admin-bar.php
30435 bytes
0644
atomlib.php
11839 bytes
0644
author-template.php
16650 bytes
0644
blocks.php
18241 bytes
0644
bookmark-template.php
11918 bytes
0644
bookmark.php
13901 bytes
0644
cache.php
21874 bytes
0644
canonical.php
28487 bytes
0644
capabilities.php
31721 bytes
0644
category-template.php
52031 bytes
0644
category.php
12227 bytes
0644
class-IXR.php
2573 bytes
0644
class-feed.php
523 bytes
0644
class-http.php
37141 bytes
0644
class-json.php
40476 bytes
0644
class-oembed.php
31482 bytes
0644
class-phpass.php
7317 bytes
0644
class-phpmailer.php
148244 bytes
0644
class-pop3.php
20919 bytes
0644
class-requests.php
29790 bytes
0644
class-simplepie.php
89264 bytes
0644
class-smtp.php
39476 bytes
0644
class-snoopy.php
37785 bytes
0644
class-walker-category-dropdown.php
2127 bytes
0644
class-walker-category.php
7751 bytes
0644
class-walker-comment.php
13654 bytes
0644
class-walker-nav-menu.php
8642 bytes
0644
class-walker-page-dropdown.php
2298 bytes
0644
class-walker-page.php
6993 bytes
0644
class-wp-admin-bar.php
16920 bytes
0644
class-wp-ajax-response.php
5127 bytes
0644
class-wp-block-parser.php
15215 bytes
0644
class-wp-block-type-registry.php
5089 bytes
0644
class-wp-block-type.php
4815 bytes
0644
class-wp-comment-query.php
43223 bytes
0644
class-wp-comment.php
8961 bytes
0644
class-wp-customize-control.php
25053 bytes
0644
class-wp-customize-manager.php
201856 bytes
0644
class-wp-customize-nav-menus.php
54354 bytes
0644
class-wp-customize-panel.php
9647 bytes
0644
class-wp-customize-section.php
10229 bytes
0644
class-wp-customize-setting.php
28243 bytes
0644
class-wp-customize-widgets.php
66296 bytes
0644
class-wp-dependency.php
2335 bytes
0644
class-wp-editor.php
67872 bytes
0644
class-wp-embed.php
14732 bytes
0644
class-wp-error.php
4923 bytes
0644
class-wp-fatal-error-handler.php
6462 bytes
0644
class-wp-feed-cache-transient.php
2560 bytes
0644
class-wp-feed-cache.php
749 bytes
0644
class-wp-hook.php
14105 bytes
0644
class-wp-http-cookie.php
6847 bytes
0644
class-wp-http-curl.php
11928 bytes
0644
class-wp-http-encoding.php
6503 bytes
0644
class-wp-http-ixr-client.php
3326 bytes
0644
class-wp-http-proxy.php
6061 bytes
0644
class-wp-http-requests-hooks.php
1876 bytes
0644
class-wp-http-requests-response.php
4398 bytes
0644
class-wp-http-response.php
2871 bytes
0644
class-wp-http-streams.php
15385 bytes
0644
class-wp-image-editor-gd.php
13061 bytes
0644
class-wp-image-editor-imagick.php
21780 bytes
0644
class-wp-image-editor.php
11761 bytes
0644
class-wp-list-util.php
6396 bytes
0644
class-wp-locale-switcher.php
5026 bytes
0644
class-wp-locale.php
14629 bytes
0644
class-wp-matchesmapregex.php
1804 bytes
0644
class-wp-meta-query.php
23436 bytes
0644
class-wp-metadata-lazyloader.php
5384 bytes
0644
class-wp-network-query.php
17835 bytes
0644
class-wp-network.php
12217 bytes
0644
class-wp-oembed-controller.php
6024 bytes
0644
class-wp-paused-extensions-storage.php
4933 bytes
0644
class-wp-post-type.php
18236 bytes
0644
class-wp-post.php
6441 bytes
0644
class-wp-query.php
130818 bytes
0644
class-wp-recovery-mode-cookie-service.php
6247 bytes
0644
class-wp-recovery-mode-email-service.php
7996 bytes
0644
class-wp-recovery-mode-key-service.php
4284 bytes
0644
class-wp-recovery-mode-link-service.php
3370 bytes
0644
class-wp-recovery-mode.php
11254 bytes
0644
class-wp-rewrite.php
59821 bytes
0644
class-wp-role.php
2661 bytes
0644
class-wp-roles.php
8328 bytes
0644
class-wp-session-tokens.php
7430 bytes
0644
class-wp-simplepie-file.php
2326 bytes
0644
class-wp-simplepie-sanitize-kses.php
1775 bytes
0644
class-wp-site-query.php
28038 bytes
0644
class-wp-site.php
7306 bytes
0644
class-wp-tax-query.php
19433 bytes
0644
class-wp-taxonomy.php
10661 bytes
0644
class-wp-term-query.php
34656 bytes
0644
class-wp-term.php
5265 bytes
0644
class-wp-text-diff-renderer-inline.php
716 bytes
0644
class-wp-text-diff-renderer-table.php
16448 bytes
0644
class-wp-theme.php
50386 bytes
0644
class-wp-user-meta-session-tokens.php
2990 bytes
0644
class-wp-user-query.php
31224 bytes
0644
class-wp-user.php
21414 bytes
0644
class-wp-walker.php
12687 bytes
0644
class-wp-widget-factory.php
3781 bytes
0644
class-wp-widget.php
17834 bytes
0644
class-wp-xmlrpc-server.php
207849 bytes
0644
class-wp.php
24754 bytes
0644
class.wp-dependencies.php
11512 bytes
0644
class.wp-scripts.php
17191 bytes
0644
class.wp-styles.php
9842 bytes
0644
comment-template.php
89869 bytes
0644
comment.php
115373 bytes
0644
compat.php
17753 bytes
0644
cron.php
32460 bytes
0644
date.php
35618 bytes
0644
default-constants.php
10126 bytes
0644
default-filters.php
25727 bytes
0644
default-widgets.php
2180 bytes
0644
deprecated.php
114270 bytes
0644
embed-template.php
344 bytes
0644
embed.php
47122 bytes
0644
error-protection.php
3386 bytes
0644
feed-atom-comments.php
5378 bytes
0644
feed-atom.php
3081 bytes
0644
feed-rdf.php
2660 bytes
0644
feed-rss.php
1190 bytes
0644
feed-rss2-comments.php
4122 bytes
0644
feed-rss2.php
3782 bytes
0644
feed.php
21380 bytes
0644
formatting.php
295678 bytes
0644
functions.php
219959 bytes
0644
functions.wp-scripts.php
12830 bytes
0644
functions.wp-styles.php
8219 bytes
0644
general-template.php
146632 bytes
0644
http.php
22424 bytes
0644
kses.php
57233 bytes
0644
l10n.php
51925 bytes
0644
link-template.php
138482 bytes
0644
load.php
43146 bytes
0644
locale.php
141 bytes
0644
media-template.php
48922 bytes
0644
media.php
144763 bytes
0644
meta.php
46551 bytes
0644
ms-blogs.php
23122 bytes
0644
ms-default-constants.php
4785 bytes
0644
ms-default-filters.php
6414 bytes
0644
ms-deprecated.php
19907 bytes
0644
ms-files.php
2649 bytes
0644
ms-functions.php
87059 bytes
0644
ms-load.php
19557 bytes
0644
ms-network.php
3658 bytes
0644
ms-settings.php
4134 bytes
0644
ms-site.php
43064 bytes
0644
nav-menu-template.php
22008 bytes
0644
nav-menu.php
40672 bytes
0644
option.php
69555 bytes
0644
pluggable-deprecated.php
6262 bytes
0644
pluggable.php
98630 bytes
0644
plugin.php
32068 bytes
0644
post-formats.php
7024 bytes
0644
post-template.php
61764 bytes
0644
post-thumbnail-template.php
8957 bytes
0644
post.php
235364 bytes
0644
query.php
32993 bytes
0644
registration-functions.php
180 bytes
0644
registration.php
180 bytes
0644
rest-api.php
42053 bytes
0644
revision.php
21586 bytes
0644
rewrite.php
17723 bytes
0644
rss-functions.php
193 bytes
0644
rss.php
23208 bytes
0644
script-loader.php
109605 bytes
0644
session.php
243 bytes
0644
shortcodes.php
21698 bytes
0644
spl-autoload-compat.php
2574 bytes
0644
taxonomy.php
156655 bytes
0644
template-loader.php
2695 bytes
0644
template.php
20828 bytes
0644
theme.php
102301 bytes
0644
update.php
25382 bytes
0644
user.php
124086 bytes
0644
vars.php
5715 bytes
0644
version.php
762 bytes
0644
widgets.php
57200 bytes
0644
wlwmanifest.xml
1045 bytes
0644
wp-db.php
101620 bytes
0644
wp-diff.php
662 bytes
0644
N4ST4R_ID | Naxtarrr