private static function init_tags_regex($force = FALSE, $flags = NULL, &$tags_regex = NULL)
 {
     CrayonSettingsWP::load_settings();
     self::init_tag_bits();
     // Default output
     if ($tags_regex === NULL) {
         $tags_regex =& self::$tags_regex;
     }
     if ($force || $tags_regex === "") {
         // Check which tags are in $flags. If it's NULL, then all flags are true.
         $in_flag = self::in_flag($flags);
         if ($in_flag[CrayonSettings::CAPTURE_MINI_TAG] && CrayonGlobalSettings::val(CrayonSettings::CAPTURE_MINI_TAG) || $force || ($in_flag[CrayonSettings::INLINE_TAG] && (CrayonGlobalSettings::val(CrayonSettings::INLINE_TAG) && CrayonGlobalSettings::val(CrayonSettings::INLINE_TAG_CAPTURE)) || $force)) {
             $aliases = CrayonResources::langs()->ids_and_aliases();
             self::$alias_regex = '';
             for ($i = 0; $i < count($aliases); $i++) {
                 $alias = $aliases[$i];
                 $alias_regex = CrayonUtil::esc_hash(CrayonUtil::esc_regex($alias));
                 if ($i != count($aliases) - 1) {
                     $alias_regex .= '|';
                 }
                 self::$alias_regex .= $alias_regex;
             }
         }
         // Add other tags
         $tags_regex = '#(?<!\\$)(?:(\\s*\\[\\s*crayon\\b)';
         // TODO this is duplicated in capture_crayons()
         $tag_regexes = array(CrayonSettings::CAPTURE_MINI_TAG => '(\\[\\s*(' . self::$alias_regex . ')\\b)', CrayonSettings::CAPTURE_PRE => '(<\\s*pre\\b)', CrayonSettings::INLINE_TAG => '(' . self::REGEX_INLINE_CLASS . ')' . '|(\\{\\s*(' . self::$alias_regex . ')\\b([^\\}]*)\\})', CrayonSettings::PLAIN_TAG => '(\\s*\\[\\s*plain\\b)', CrayonSettings::BACKQUOTE => '(`[^`]*`)');
         foreach ($tag_regexes as $tag => $regex) {
             if ($in_flag[$tag] && (CrayonGlobalSettings::val($tag) || $force)) {
                 $tags_regex .= '|' . $regex;
             }
         }
         $tags_regex .= ')#msi';
     }
 }
 private static function init_tags_regex()
 {
     if (!self::$is_tags_regex_init) {
         if (CrayonGlobalSettings::val(CrayonSettings::CAPTURE_MINI_TAG) || CrayonGlobalSettings::val(CrayonSettings::INLINE_TAG)) {
             $aliases = CrayonResources::langs()->ids_and_aliases();
             for ($i = 0; $i < count($aliases); $i++) {
                 $alias = $aliases[$i];
                 $alias_regex = CrayonUtil::esc_hash(CrayonUtil::esc_regex($alias));
                 if ($i != count($aliases) - 1) {
                     $alias_regex .= '|';
                 }
                 self::$alias_regex .= $alias_regex;
             }
         }
         // Add other tags
         self::$tags_regex = '#(\\s*\\[\\s*crayon\\b)';
         if (CrayonGlobalSettings::val(CrayonSettings::CAPTURE_MINI_TAG)) {
             self::$tags_regex .= '|([\\[]\\s*(' . self::$alias_regex . '))';
         }
         if (CrayonGlobalSettings::val(CrayonSettings::CAPTURE_PRE)) {
             self::$tags_regex .= '|(<\\s*pre\\b)';
         }
         if (CrayonGlobalSettings::val(CrayonSettings::INLINE_TAG)) {
             self::$tags_regex .= '|(' . self::REGEX_INLINE_CLASS . ')' . '|([\\{]\\s*(' . self::$alias_regex . '))';
         }
         if (CrayonGlobalSettings::val(CrayonSettings::PLAIN_TAG)) {
             self::$tags_regex .= '|(\\s*\\[\\s*plain\\b)';
         }
         if (CrayonGlobalSettings::val(CrayonSettings::BACKQUOTE)) {
             self::$tags_regex .= '|(`[^`]*`)';
         }
         self::$tags_regex .= '#msi';
         self::$is_tags_regex_init = TRUE;
     }
 }