https://www.mediawiki.org/wiki/Special:Code/MediaWiki/114427
Revision: 114427
Author: danwe
Date: 2012-03-22 18:17:36 +0000 (Thu, 22 Mar 2012)
Log Message:
-----------
intro/outro/default parameters for "?" parser function implemented
Modified Paths:
--------------
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php
trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php
Modified:
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php
===================================================================
---
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php
2012-03-22 18:07:15 UTC (rev 114426)
+++
trunk/extensions/SemanticExpressiveness/includes/SemExExpressiveStringPF.php
2012-03-22 18:17:36 UTC (rev 114427)
@@ -43,7 +43,7 @@
* @return array
*/
protected function getParameterInfo( $type ) {
- $params = array();
+ $params = SemExExpressiveStringOutputOptions::getPFParams();
# input text.
# since 0.1
@@ -55,13 +55,11 @@
$params['detect'] = new ListParameter( 'detect' );
$params['detect']->addCriteria( $pieceTypesCriteria );
- $params['detect']->setDefault( false, false );
+ $params['detect']->setDefault( array( '' ), false );
$params['ignore'] = new ListParameter( 'ignore' );
$params['ignore']->addCriteria( $pieceTypesCriteria );
$params['ignore']->setDefault( array(), false );
-
- $params = array_merge( $params,
SemExExpressiveStringOutputOptions::getPFParams() );
return $params;
}
@@ -102,7 +100,7 @@
// get all types that should be handled by this
$enabledTypes = array();
- if( $parameters['detect'] !== false ) {
+ if( implode( '', $parameters['detect'] ) !== '' ) { // ''
counts as if parameter not set
foreach( $parameters['detect'] as $typeName ) {
$type =
SemExExpressiveString::getRegisteredPieceTypeByName( $typeName );
if( $type !== null ) {
@@ -115,11 +113,13 @@
$enabledTypes =
SemExExpressiveString::getRegisteredPieceTypeNames();
}
- $enabledTypes = array_flip( $enabledTypes );
- foreach( $parameters['ignore'] as $typeName ) {
- unset( $enabledTypes[
SemExExpressiveString::getRegisteredPieceTypeByName( $typeName ) ] );
+ if( $enabledTypes !== null ) {
+ $enabledTypes = array_flip( $enabledTypes );
+ foreach( $parameters['ignore'] as $typeName ) {
+ unset( $enabledTypes[
SemExExpressiveString::getRegisteredPieceTypeByName( $typeName ) ] );
+ }
+ $enabledTypes = array_flip( $enabledTypes );
}
- $enabledTypes = array_flip( $enabledTypes );
// build expressive string from input with enabled types:
$exprString = new SemExExpressiveString( $parameters['text'],
$this->parser, $enabledTypes );
Modified: trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php
===================================================================
--- trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php
2012-03-22 18:07:15 UTC (rev 114426)
+++ trunk/extensions/SemanticExpressiveness/includes/SemExQueryPF.php
2012-03-22 18:17:36 UTC (rev 114427)
@@ -20,27 +20,47 @@
$smwgIQRunningNumber++;
$params = func_get_args();
- array_shift( $params ); // remove $parser
+ array_shift( $params ); // remove $parser
+ $params = static::validateParams( $params );
- $query = SemExShortQuery::newFromPFParams(
- $params,
- array( 'property',
Validator::PARAM_UNNAMED )
- );
- $options =
SemExShortQueryOutputOptions::newFromPFParams( $params );
+ $query = SemExShortQuery::newFromValidatedParams(
$params );
+ $options =
SemExShortQueryOutputOptions::newFromValidatedParams( $params );
if( ! $query || ! $options ) {
// @ToDo: real error message (anyway, in what
case can this happen?)
return 'FALSE';
}
- $result = SemExShortQueryProcessor::getResultFromQuery(
$parser, $query, $options );
- } else {
+ $result = SemExShortQueryProcessor::getResultFromQuery(
$parser, $query, $options );
+
+ if( $result === '' ) {
+ $result = $params['default'];
+ } else {
+ $result = // allow ' ' in form of '_' around
the result
+ preg_replace( '/_$/', ' ',
$params['intro'] ) .
+ $result .
+ preg_replace( '/^_/', ' ',
$params['outro'] );
+ }
+ }
+ else {
$result = smwfEncodeMessages( array( wfMsgForContent(
'smw_iq_disabled' ) ) );
}
return $result;
}
+ protected static function validateParams( array $rawParams, &$validator
= null ) {
+ $validator = new Validator();
+ $validator->setFunctionParams(
+ $rawParams,
+ static::getParameters(),
+ array( 'property', Validator::PARAM_UNNAMED )
// 'property' is parameter 1
+ );
+ $validator->validateParameters();
+
+ return $validator->getParameterValues();
+ }
+
/**
* Returns a description of all allowed function Parameters.
*
@@ -50,8 +70,13 @@
$params = array();
$params['intro'] = new Parameter( 'intro' );
+ $params['intro']->setDefault( '' );
+
$params['outro'] = new Parameter( 'outro' );
+ $params['outro']->setDefault( '' );
+
$params['default'] = new Parameter( 'default' );
+ $params['default']->setDefault( '' );
// add function parameters describing the querry and its
options:
$params = array_merge(
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs