/**
* Interfaces for preprocessors
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
+ * @ingroup Parser
*/
/**
* @ingroup Parser
*/
interface Preprocessor {
- /** Create a new preprocessor object based on an initialised Parser object */
+ /**
+ * Create a new preprocessor object based on an initialised Parser object
+ *
+ * @param $parser Parser
+ */
function __construct( $parser );
- /** Create a new top-level frame for expansion of a page */
+ /**
+ * Create a new top-level frame for expansion of a page
+ *
+ * @return PPFrame
+ */
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
+ *
+ * @return PPFrame
+ */
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
+ */
function newPartNodeArray( $values );
- /** Preprocess text to a PPNode */
+ /**
+ * Preprocess text to a PPNode
+ *
+ * @param $text
+ * @param $flags
+ *
+ * @return PPNode
+ */
function preprocessToObj( $text, $flags = 0 );
}
const RECOVER_ORIG = 27; // = 1|2|8|16 no constant expression support in PHP yet
+ /** This constant exists when $indexOffset is supported in newChild() */
+ const SUPPORTS_INDEX_OFFSET = 1;
+
/**
* Create a child frame
+ *
+ * @param $args array
+ * @param $title Title
+ * @param $indexOffset A number subtracted from the index attributes of the arguments
+ *
+ * @return PPFrame
*/
- function newChild( $args = false, $title = false );
+ function newChild( $args = false, $title = false, $indexOffset = 0 );
/**
* Expand a document tree node
/**
* Returns true if there are no arguments in this frame
+ *
+ * @return bool
*/
function isEmpty();
/**
* Returns true if the infinite loop check is OK, false if a loop is detected
+ *
+ * @param $title
+ *
+ * @return bool
*/
function loopCheck( $title );
* Return true if the frame is a template frame
*/
function isTemplate();
+
+ /**
+ * Get a title of frame
+ *
+ * @return Title
+ */
+ function getTitle();
}
/**
/**
* Get the first child of a tree node. False if there isn't one.
+ *
+ * @return PPNode
*/
function getFirstChild();
function getName();
/**
- * Split a <part> node into an associative array containing:
+ * Split a "<part>" node into an associative array containing:
* name PPNode name
* index String index
* value PPNode value
function splitArg();
/**
- * Split an <ext> node into an associative array containing name, attr, inner and close
+ * 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.
*/
function splitExt();
/**
- * Split an <h> node
+ * Split an "<h>" node
*/
function splitHeading();
}