PATH:
home
/
thebhoeo
/
.trash
/
wpforms-lite-pro
/
vendor_prefixed
/
ezyang
/
htmlpurifier
/
library
/
HTMLPurifier
<?php namespace WPForms\Vendor; /** * Parses string hash files. File format is as such: * * DefaultKeyValue * KEY: Value * KEY2: Value2 * --MULTILINE-KEY-- * Multiline * value. * * Which would output something similar to: * * array( * 'ID' => 'DefaultKeyValue', * 'KEY' => 'Value', * 'KEY2' => 'Value2', * 'MULTILINE-KEY' => "Multiline\nvalue.\n", * ) * * We use this as an easy to use file-format for configuration schema * files, but the class itself is usage agnostic. * * You can use ---- to forcibly terminate parsing of a single string-hash; * this marker is used in multi string-hashes to delimit boundaries. */ class HTMLPurifier_StringHashParser { /** * @type string */ public $default = 'ID'; /** * Parses a file that contains a single string-hash. * @param string $file * @return array */ public function parseFile($file) { if (!\file_exists($file)) { return \false; } $fh = \fopen($file, 'r'); if (!$fh) { return \false; } $ret = $this->parseHandle($fh); \fclose($fh); return $ret; } /** * Parses a file that contains multiple string-hashes delimited by '----' * @param string $file * @return array */ public function parseMultiFile($file) { if (!\file_exists($file)) { return \false; } $ret = array(); $fh = \fopen($file, 'r'); if (!$fh) { return \false; } while (!\feof($fh)) { $ret[] = $this->parseHandle($fh); } \fclose($fh); return $ret; } /** * Internal parser that acepts a file handle. * @note While it's possible to simulate in-memory parsing by using * custom stream wrappers, if such a use-case arises we should * factor out the file handle into its own class. * @param resource $fh File handle with pointer at start of valid string-hash * block. * @return array */ protected function parseHandle($fh) { $state = \false; $single = \false; $ret = array(); do { $line = \fgets($fh); if ($line === \false) { break; } $line = \rtrim($line, "\n\r"); if (!$state && $line === '') { continue; } if ($line === '----') { break; } if (\strncmp('--#', $line, 3) === 0) { // Comment continue; } elseif (\strncmp('--', $line, 2) === 0) { // Multiline declaration $state = \trim($line, '- '); if (!isset($ret[$state])) { $ret[$state] = ''; } continue; } elseif (!$state) { $single = \true; if (\strpos($line, ':') !== \false) { // Single-line declaration list($state, $line) = \explode(':', $line, 2); $line = \trim($line); } else { // Use default declaration $state = $this->default; } } if ($single) { $ret[$state] = $line; $single = \false; $state = \false; } else { $ret[$state] .= "{$line}\n"; } } while (!\feof($fh)); return $ret; } } // vim: et sw=4 sts=4
[-] AttrTypes.php
[edit]
[-] Arborize.php
[edit]
[-] AttrCollections.php
[edit]
[-] Printer.php
[edit]
[-] VarParser.php
[edit]
[-] DoctypeRegistry.php
[edit]
[-] Language.php
[edit]
[-] HTMLModuleManager.php
[edit]
[-] AttrDef.php
[edit]
[+]
Token
[-] ErrorStruct.php
[edit]
[-] IDAccumulator.php
[edit]
[+]
ChildDef
[+]
VarParser
[-] Doctype.php
[edit]
[+]
URIScheme
[+]
Strategy
[-] DefinitionCacheFactory.php
[edit]
[+]
AttrTransform
[-] Zipper.php
[edit]
[-] Filter.php
[edit]
[-] Node.php
[edit]
[+]
URIFilter
[+]
Injector
[-] PropertyList.php
[edit]
[+]
ConfigSchema
[-] Lexer.php
[edit]
[+]
AttrDef
[-] TokenFactory.php
[edit]
[-] TagTransform.php
[edit]
[-] StringHashParser.php
[edit]
[+]
Printer
[-] ContentSets.php
[edit]
[-] Definition.php
[edit]
[-] URISchemeRegistry.php
[edit]
[+]
TagTransform
[-] ErrorCollector.php
[edit]
[-] Injector.php
[edit]
[-] Length.php
[edit]
[-] Exception.php
[edit]
[+]
DefinitionCache
[-] URIDefinition.php
[edit]
[-] Token.php
[edit]
[-] URIScheme.php
[edit]
[-] EntityParser.php
[edit]
[-] ElementDef.php
[edit]
[+]
Node
[+]
Filter
[-] URIParser.php
[edit]
[-] PropertyListIterator.php
[edit]
[+]
HTMLModule
[+]
..
[-] Bootstrap.php
[edit]
[-] PercentEncoder.php
[edit]
[-] UnitConverter.php
[edit]
[-] VarParserException.php
[edit]
[-] ChildDef.php
[edit]
[-] HTMLDefinition.php
[edit]
[-] AttrValidator.php
[edit]
[+]
Lexer
[-] URIFilter.php
[edit]
[-] Queue.php
[edit]
[-] CSSDefinition.php
[edit]
[-] AttrTransform.php
[edit]
[-] URI.php
[edit]
[-] StringHash.php
[edit]
[-] EntityLookup.php
[edit]
[+]
Language
[-] LanguageFactory.php
[edit]
[-] ConfigSchema.php
[edit]
[-] HTMLModule.php
[edit]
[-] DefinitionCache.php
[edit]
[-] Context.php
[edit]
[-] Config.php
[edit]
[+]
EntityLookup
[-] Strategy.php
[edit]
[-] Encoder.php
[edit]
[-] Generator.php
[edit]