Skip to content

Commit

Permalink
Keep the transliterator identifier getter/setter.
Browse files Browse the repository at this point in the history
  • Loading branch information
ndm2 committed May 25, 2018
1 parent b29fd68 commit 847d5bb
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 200 deletions.
101 changes: 37 additions & 64 deletions src/Utility/Text.php
Expand Up @@ -23,20 +23,18 @@ class Text
{

/**
* Default transliterator id string.
* Default transliterator.
*
* @deprecated 3.7.0 Use $_defaultTransliterator instead.
* @var string $_defaultTransliteratorId Transliterator identifier string.
* @var \Transliterator Transliterator instance.
*/
protected static $_defaultTransliteratorId;
protected static $_defaultTransliterator;

/**
* Default transliterator.
* Default transliterator id string.
*
* @var \Transliterator|string Either a Transliterator instance, or a
* transliterator identifier string.
* @var string $_defaultTransliteratorId Transliterator identifier string.
*/
protected static $_defaultTransliterator = 'Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove';
protected static $_defaultTransliteratorId = 'Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove';

/**
* Default html tags who must not be count for truncate text.
Expand Down Expand Up @@ -1061,85 +1059,66 @@ public static function parseFileSize($size, $default = false)
}

/**
* Get default transliterator identifier string.
* Get the default transliterator.
*
* @deprecated 3.7.0 Use getTransliterator() instead.
* @return string Transliterator identifier.
* @return \Transliterator|null Either a Transliterator instance, or `null`
* in case no transliterator has been set yet.
* @since 3.7.0
*/
public static function getTransliteratorId()
public static function getTransliterator()
{
deprecationWarning(
'Text::getTransliteratorId() is deprecated. ' .
'Use Text::getTransliterator() instead.'
);

return static::getTransliterator();
return static::$_defaultTransliterator;
}

/**
* Set default transliterator identifier string.
* Set the default transliterator.
*
* @deprecated 3.7.0 Use setTransliterator() instead.
* @param string $transliteratorId Transliterator identifier.
* @param \Transliterator $transliterator A `Transliterator` instance.
* @return void
* @since 3.7.0
*/
public static function setTransliteratorId($transliteratorId)
public static function setTransliterator(\Transliterator $transliterator)
{
deprecationWarning(
'Text::setTransliteratorId() is deprecated. ' .
'Use Text::setTransliterator() instead.'
);

static::setTransliterator($transliteratorId);
static::$_defaultTransliterator = $transliterator;
}

/**
* Get the default transliterator.
* Get default transliterator identifier string.
*
* @return \Transliterator|string Either a Transliterator instance, or a
* transliterator identifier string.
* @since 3.7.0
* @return string Transliterator identifier.
*/
public static function getTransliterator()
public static function getTransliteratorId()
{
return static::$_defaultTransliterator;
return static::$_defaultTransliteratorId;
}

/**
* Set default transliterator identifier string.
*
* @param \Transliterator|string $transliterator Either a Transliterator
* instance, or a transliterator identifier string.
* @param string $transliteratorId Transliterator identifier.
* @return void
* @since 3.7.0
*/
public static function setTransliterator($transliterator)
public static function setTransliteratorId($transliteratorId)
{
static::$_defaultTransliterator = $transliterator;
static::setTransliterator(transliterator_create($transliteratorId));
static::$_defaultTransliteratorId = $transliteratorId;
}

/**
* Transliterate string.
*
* @param string $string String to transliterate.
* @param \Transliterator|string|null $transliterator Either a Transliterator
* instance, or a transliterator identifier string. If `null`
* `Text::$_defaultTransliterator` will be used.
* instance, or a transliterator identifier string. If `null`, the default
* transliterator (identifier) set via `setTransliteratorId()` or
* `setTransliterator()` will be used.
* @return string
* @see https://secure.php.net/manual/en/transliterator.transliterate.php
*/
public static function transliterate($string, $transliterator = null)
{
if (!$transliterator) {
if (static::$_defaultTransliteratorId !== null) {
deprecationWarning(
'`Text::$_defaultTransliteratorId` is deprecated. ' .
'Use `Text::$_defaultTransliterator` instead.'
);
$transliterator = static::$_defaultTransliteratorId;
} else {
$transliterator = static::$_defaultTransliterator;
}
$transliterator = static::$_defaultTransliterator ?: static::$_defaultTransliteratorId;
}

return transliterator_transliterate($transliterator, $string);
Expand All @@ -1152,18 +1131,19 @@ public static function transliterate($string, $transliterator = null)
* ### Options:
*
* - `replacement`: Replacement string. Default '-'.
* - `transliterator`: A Transliterator instance, or a transliterator id string.
* If `null` (default) `Text::$_defaultTransliterator` will be used.
* - `transliteratorId`: A valid transliterator id string.
* If `null` (default) the transliterator (identifier) set via
* `setTransliteratorId()` or `setTransliterator()` will be used.
* If `false` no transliteration will be done, only non words will be removed.
* - `transliteratorId`: Deprecated as of 3.7.0, use the `transliterator` option
* instead.
* - `preserve`: Specific non-word character to preserve. Default `null`.
* For e.g. this option can be set to '.' to generate clean file names.
*
* @param string $string the string you want to slug
* @param array $options If string it will be use as replacement character
* or an array of options.
* @return string
* @see setTransliterator()
* @see setTransliteratorId()
*/
public static function slug($string, $options = [])
{
Expand All @@ -1172,19 +1152,12 @@ public static function slug($string, $options = [])
}
$options += [
'replacement' => '-',
'transliterator' => null,
'transliteratorId' => null,
'preserve' => null
];

if (array_key_exists('transliteratorId', $options)) {
deprecationWarning(
'The `transliteratorId` option is deprecated. ' .
'Use `transliterator` instead.'
);
$options['transliterator'] = $options['transliteratorId'];
}
if ($options['transliterator'] !== false) {
$string = static::transliterate($string, $options['transliterator']);
if ($options['transliteratorId'] !== false) {
$string = static::transliterate($string, $options['transliteratorId']);
}

$regex = '^\s\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}';
Expand Down

0 comments on commit 847d5bb

Please sign in to comment.