%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/Translate/insertables/ |
| Current File : /www/varak.net/wiki.varak.net/extensions/Translate/insertables/MediaWikiInsertablesSuggester.php |
<?php
/**
* @file
* @author Niklas Laxström
* @license GPL-2.0-or-later
*/
/**
* Insertable is a string that usually does not need translation and is
* difficult to type manually.
* @since 2013.09
*/
class MediaWikiInsertablesSuggester {
public function getInsertables( $text ) {
$insertables = [];
$matches = [];
preg_match_all( '/\$(1[a-z]+|[0-9]+)/', $text, $matches, PREG_SET_ORDER );
$new = array_map( function ( $match ) {
return new Insertable( $match[0], $match[0] );
}, $matches );
$insertables = array_merge( $insertables, $new );
$matches = [];
preg_match_all(
'/({{((?:PLURAL|GENDER|GRAMMAR):[^|]*)\|).*?(}})/i',
$text,
$matches,
PREG_SET_ORDER
);
$new = array_map( function ( $match ) {
return new Insertable( $match[2], $match[1], $match[3] );
}, $matches );
$insertables = array_merge( $insertables, $new );
$matches = [];
preg_match_all( '/<\/?[a-z]+>/', $text, $matches, PREG_SET_ORDER );
$new = array_map( function ( $match ) {
return new Insertable( $match[0], $match[0] );
}, $matches );
$insertables = array_merge( $insertables, $new );
return $insertables;
}
}