function IntegerFormatter::patternSymbols in Currency 7.2
Converts a number pattern to an array of NumberPatternSymbol objects.
Parameters
string $pattern:
Return value
array
Throws
\RuntimeException
2 calls to IntegerFormatter::patternSymbols()
- DecimalFormatter::__construct in currency/vendor/ bartfeenstra/ cldr/ src/ BartFeenstra/ CLDR/ DecimalFormatter.php 
- Overrides parent::__construct().
- IntegerFormatter::__construct in currency/vendor/ bartfeenstra/ cldr/ src/ BartFeenstra/ CLDR/ IntegerFormatter.php 
- Implements __construct().
File
- currency/vendor/ bartfeenstra/ cldr/ src/ BartFeenstra/ CLDR/ IntegerFormatter.php, line 167 
- Contains class \BartFeenstra\CLDR\IntegerFormatter.
Class
- IntegerFormatter
- Formats an integer according CLDR number pattern guidelines.
Namespace
BartFeenstra\CLDRCode
function patternSymbols($pattern) {
  // Convert the pattern to NumberPatternSymbol objects.
  $symbols = array();
  foreach ($this
    ->str_split($pattern) as $position => $symbol) {
    $symbols[] = new NumberPatternSymbol($symbol, $position);
  }
  // Loop through the NumberPatternSymbol objects and mark escaped symbols.
  foreach ($symbols as $i => $symbol) {
    // Check if the previous character is an unused escape symbol for this
    // symbol.
    if (isset($symbols[$i - 1]) && $symbols[$i - 1]->symbol == self::SYMBOL_ESCAPE && !$symbols[$i - 1]->escaped && !$symbols[$i - 1]->escapes_other_symbol && isset($symbols[$i + 1]) && $symbols[$i + 1]->symbol == self::SYMBOL_ESCAPE && !$symbols[$i + 1]->escaped && !$symbols[$i + 1]->escapes_other_symbol) {
      $symbol->escaped = TRUE;
      $symbols[$i - 1]->escapes_other_symbol = TRUE;
      $symbols[$i + 1]->escapes_other_symbol = TRUE;
    }
  }
  // Find illegal escape symbols, such as escape symbols that do not escape
  // other symbols and are not escaped themselves.
  foreach ($symbols as $symbol) {
    if ($symbol->symbol == self::SYMBOL_ESCAPE && !$symbol->escaped && !$symbol->escapes_other_symbol) {
      throw new \RunTimeException("Invalid escape symbol (') in pattern " . $pattern . "at position {$symbol->position}.");
    }
  }
  // Remove escape symbols from the array, because we have transferred their
  // meaning to other symbols' NumberPatternSymbol objects.
  foreach ($symbols as $i => $symbol) {
    if ($symbol->escapes_other_symbol) {
      unset($symbols[$i]);
    }
  }
  // Reset the array keys so they make sense again.
  return array_values($symbols);
}