diff options
Diffstat (limited to 'includes/parser/Preprocessor.php')
-rw-r--r-- | includes/parser/Preprocessor.php | 176 |
1 files changed, 135 insertions, 41 deletions
diff --git a/includes/parser/Preprocessor.php b/includes/parser/Preprocessor.php index aeacd2e1..b32593c9 100644 --- a/includes/parser/Preprocessor.php +++ b/includes/parser/Preprocessor.php @@ -28,42 +28,44 @@ interface Preprocessor { /** * Create a new preprocessor object based on an initialised Parser object * - * @param $parser Parser + * @param Parser $parser */ - function __construct( $parser ); + public function __construct( $parser ); /** * Create a new top-level frame for expansion of a page * * @return PPFrame */ - function newFrame(); + public function newFrame(); /** - * Create a new custom frame for programmatic use of parameter replacement as used in some extensions + * Create a new custom frame for programmatic use of parameter replacement + * as used in some extensions. * - * @param $args array + * @param array $args * * @return PPFrame */ - function newCustomFrame( $args ); + public function newCustomFrame( $args ); /** - * Create a new custom node for programmatic use of parameter replacement as used in some extensions + * Create a new custom node for programmatic use of parameter replacement + * as used in some extensions. * - * @param $values + * @param array $values */ - function newPartNodeArray( $values ); + public function newPartNodeArray( $values ); /** * Preprocess text to a PPNode * - * @param $text - * @param $flags + * @param string $text + * @param int $flags * * @return PPNode */ - function preprocessToObj( $text, $flags = 0 ); + public function preprocessToObj( $text, $flags = 0 ); } /** @@ -75,8 +77,9 @@ interface PPFrame { const STRIP_COMMENTS = 4; const NO_IGNORE = 8; const RECOVER_COMMENTS = 16; + const NO_TAGS = 32; - const RECOVER_ORIG = 27; // = 1|2|8|16 no constant expression support in PHP yet + const RECOVER_ORIG = 59; // = 1|2|8|16|32 no constant expression support in PHP yet /** This constant exists when $indexOffset is supported in newChild() */ const SUPPORTS_INDEX_OFFSET = 1; @@ -84,87 +87,168 @@ interface PPFrame { /** * Create a child frame * - * @param array $args - * @param Title $title + * @param array|bool $args + * @param bool|Title $title * @param int $indexOffset A number subtracted from the index attributes of the arguments * * @return PPFrame */ - function newChild( $args = false, $title = false, $indexOffset = 0 ); + public function newChild( $args = false, $title = false, $indexOffset = 0 ); + + /** + * Expand a document tree node, caching the result on its parent with the given key + * @param string|int $key + * @param string|PPNode $root + * @param int $flags + * @return string + */ + public function cachedExpand( $key, $root, $flags = 0 ); /** * Expand a document tree node + * @param string|PPNode $root + * @param int $flags + * @return string */ - function expand( $root, $flags = 0 ); + public function expand( $root, $flags = 0 ); /** * Implode with flags for expand() + * @param string $sep + * @param int $flags + * @param string|PPNode $args,... + * @return string */ - function implodeWithFlags( $sep, $flags /*, ... */ ); + public function implodeWithFlags( $sep, $flags /*, ... */ ); /** * Implode with no flags specified + * @param string $sep + * @param string|PPNode $args,... + * @return string */ - function implode( $sep /*, ... */ ); + public function implode( $sep /*, ... */ ); /** * Makes an object that, when expand()ed, will be the same as one obtained * with implode() + * @param string $sep + * @param string|PPNode $args,... + * @return PPNode */ - function virtualImplode( $sep /*, ... */ ); + public function virtualImplode( $sep /*, ... */ ); /** * Virtual implode with brackets + * @param string $start + * @param string $sep + * @param string $end + * @param string|PPNode $args,... + * @return PPNode */ - function virtualBracketedImplode( $start, $sep, $end /*, ... */ ); + public function virtualBracketedImplode( $start, $sep, $end /*, ... */ ); /** * Returns true if there are no arguments in this frame * * @return bool */ - function isEmpty(); + public function isEmpty(); /** * Returns all arguments of this frame + * @return array */ - function getArguments(); + public function getArguments(); /** * Returns all numbered arguments of this frame + * @return array */ - function getNumberedArguments(); + public function getNumberedArguments(); /** * Returns all named arguments of this frame + * @return array */ - function getNamedArguments(); + public function getNamedArguments(); /** * Get an argument to this frame by name + * @param string $name + * @return bool */ - function getArgument( $name ); + public function getArgument( $name ); /** * Returns true if the infinite loop check is OK, false if a loop is detected * - * @param $title - * + * @param Title $title * @return bool */ - function loopCheck( $title ); + public function loopCheck( $title ); /** * Return true if the frame is a template frame + * @return bool */ - function isTemplate(); + public function isTemplate(); + + /** + * Set the "volatile" flag. + * + * Note that this is somewhat of a "hack" in order to make extensions + * with side effects (such as Cite) work with the PHP parser. New + * extensions should be written in a way that they do not need this + * function, because other parsers (such as Parsoid) are not guaranteed + * to respect it, and it may be removed in the future. + * + * @param bool $flag + */ + public function setVolatile( $flag = true ); + + /** + * Get the "volatile" flag. + * + * Callers should avoid caching the result of an expansion if it has the + * volatile flag set. + * + * @see self::setVolatile() + * @return bool + */ + public function isVolatile(); + + /** + * Get the TTL of the frame's output. + * + * This is the maximum amount of time, in seconds, that this frame's + * output should be cached for. A value of null indicates that no + * maximum has been specified. + * + * Note that this TTL only applies to caching frames as parts of pages. + * It is not relevant to caching the entire rendered output of a page. + * + * @return int|null + */ + public function getTTL(); + + /** + * Set the TTL of the output of this frame and all of its ancestors. + * Has no effect if the new TTL is greater than the one already set. + * Note that it is the caller's responsibility to change the cache + * expiry of the page as a whole, if such behavior is desired. + * + * @see self::getTTL() + * @param int $ttl + */ + public function setTTL( $ttl ); /** * Get a title of frame * * @return Title */ - function getTitle(); + public function getTitle(); } /** @@ -184,36 +268,42 @@ interface PPNode { /** * Get an array-type node containing the children of this node. * Returns false if this is not a tree node. + * @return PPNode */ - function getChildren(); + public function getChildren(); /** * Get the first child of a tree node. False if there isn't one. * * @return PPNode */ - function getFirstChild(); + public function getFirstChild(); /** * Get the next sibling of any node. False if there isn't one + * @return PPNode */ - function getNextSibling(); + public function getNextSibling(); /** * Get all children of this tree node which have a given name. * Returns an array-type node, or false if this is not a tree node. + * @param string $type + * @return bool|PPNode */ - function getChildrenOfType( $type ); + public function getChildrenOfType( $type ); /** * Returns the length of the array, or false if this is not an array-type node */ - function getLength(); + public function getLength(); /** * Returns an item of an array-type node + * @param int $i + * @return bool|PPNode */ - function item( $i ); + public function item( $i ); /** * Get the name of this node. The following names are defined here: @@ -226,25 +316,29 @@ interface PPNode { * #nodelist An array-type node * * The subclass may define various other names for tree and leaf nodes. + * @return string */ - function getName(); + public function getName(); /** * Split a "<part>" node into an associative array containing: * name PPNode name * index String index * value PPNode value + * @return array */ - function splitArg(); + public function splitArg(); /** * Split an "<ext>" node into an associative array containing name, attr, inner and close * All values in the resulting array are PPNodes. Inner and close are optional. + * @return array */ - function splitExt(); + public function splitExt(); /** * Split an "<h>" node + * @return array */ - function splitHeading(); + public function splitHeading(); } |