public static function Bootstrap::cssClassFromString in Express 8
Matches a Bootstrap class based on a string value.
Parameters
string|array $value: The string to match against to determine the class. Passed by reference in case it is a render array that needs to be rendered and typecast.
string $default: The default class to return if no match is found.
Return value
string The Bootstrap class matched against the value of $haystack or $default if no match could be made.
3 calls to Bootstrap::cssClassFromString()
- Element::colorize in themes/contrib/ bootstrap/ src/ Utility/ Element.php 
- Adds a specific Bootstrap class to color a button based on its text value.
- MenuLocalAction::preprocessElement in themes/contrib/ bootstrap/ src/ Plugin/ Preprocess/ MenuLocalAction.php 
- Preprocess the variables array if an element is present.
- _bootstrap_colorize_text in themes/contrib/ bootstrap/ deprecated.php 
- Matches a Bootstrap class based on a string value.
File
- themes/contrib/ bootstrap/ src/ Bootstrap.php, line 307 
- Contains \Drupal\bootstrap\Bootstrap.
Class
- Bootstrap
- The primary class for the Drupal Bootstrap base theme.
Namespace
Drupal\bootstrapCode
public static function cssClassFromString(&$value, $default = '') {
  static $lang;
  if (!isset($lang)) {
    $lang = \Drupal::languageManager()
      ->getCurrentLanguage()
      ->getId();
  }
  $theme = static::getTheme();
  $texts = $theme
    ->getCache('cssClassFromString', [
    $lang,
  ]);
  // Ensure it's a string value that was passed.
  $string = static::toString($value);
  if ($texts
    ->isEmpty()) {
    $data = [
      // Text that match these specific strings are checked first.
      'matches' => [
        // Primary class.
        t('Download feature')
          ->render() => 'primary',
        // Success class.
        t('Add effect')
          ->render() => 'success',
        t('Add and configure')
          ->render() => 'success',
        t('Save configuration')
          ->render() => 'success',
        t('Install and set as default')
          ->render() => 'success',
        // Info class.
        t('Save and add')
          ->render() => 'info',
        t('Add another item')
          ->render() => 'info',
        t('Update style')
          ->render() => 'info',
      ],
      // Text containing these words anywhere in the string are checked last.
      'contains' => [
        // Primary class.
        t('Confirm')
          ->render() => 'primary',
        t('Filter')
          ->render() => 'primary',
        t('Log in')
          ->render() => 'primary',
        t('Submit')
          ->render() => 'primary',
        t('Search')
          ->render() => 'primary',
        t('Settings')
          ->render() => 'primary',
        t('Upload')
          ->render() => 'primary',
        // Danger class.
        t('Delete')
          ->render() => 'danger',
        t('Remove')
          ->render() => 'danger',
        t('Uninstall')
          ->render() => 'danger',
        // Success class.
        t('Add')
          ->render() => 'success',
        t('Create')
          ->render() => 'success',
        t('Install')
          ->render() => 'success',
        t('Save')
          ->render() => 'success',
        t('Write')
          ->render() => 'success',
        // Warning class.
        t('Export')
          ->render() => 'warning',
        t('Import')
          ->render() => 'warning',
        t('Restore')
          ->render() => 'warning',
        t('Rebuild')
          ->render() => 'warning',
        // Info class.
        t('Apply')
          ->render() => 'info',
        t('Update')
          ->render() => 'info',
      ],
    ];
    // Allow sub-themes to alter this array of patterns.
    /** @var \Drupal\Core\Theme\ThemeManager $theme_manager */
    $theme_manager = \Drupal::service('theme.manager');
    $theme_manager
      ->alter('bootstrap_colorize_text', $data);
    $texts
      ->setMultiple($data);
  }
  // Iterate over the array.
  foreach ($texts as $pattern => $strings) {
    foreach ($strings as $text => $class) {
      switch ($pattern) {
        case 'matches':
          if ($string === $text) {
            return $class;
          }
          break;
        case 'contains':
          if (strpos(Unicode::strtolower($string), Unicode::strtolower($text)) !== FALSE) {
            return $class;
          }
          break;
      }
    }
  }
  // Return the default if nothing was matched.
  return $default;
}