private function _maybeRemoveLeadingPL($originalValue)
 {
     if (!tubepress_impl_util_StringUtils::startsWith($originalValue, 'PL')) {
         return $originalValue;
     }
     return tubepress_impl_util_StringUtils::replaceFirst('PL', '', $originalValue);
 }
 private function _getHtml($content, $trigger, tubepress_spi_shortcode_ShortcodeParser $parser)
 {
     $context = tubepress_impl_patterns_sl_ServiceLocator::getExecutionContext();
     $gallery = tubepress_impl_patterns_sl_ServiceLocator::getShortcodeHtmlGenerator();
     /* Parse each shortcode one at a time */
     while ($parser->somethingToParse($content, $trigger)) {
         /* Get the HTML for this particular shortcode. Could be a single video or a gallery. */
         try {
             $generatedHtml = $gallery->getHtmlForShortcode($content);
         } catch (Exception $e) {
             $generatedHtml = $this->_dispatchErrorAndGetMessage($e);
         }
         /* remove any leading/trailing <p> tags from the content */
         $pattern = '/(<[P|p]>\\s*)(' . preg_quote($context->getActualShortcodeUsed(), '/') . ')(\\s*<\\/[P|p]>)/';
         $content = preg_replace($pattern, '${2}', $content);
         /* replace the shortcode with our new content */
         $currentShortcode = $context->getActualShortcodeUsed();
         $content = tubepress_impl_util_StringUtils::replaceFirst($currentShortcode, $generatedHtml, $content);
         $content = tubepress_impl_util_StringUtils::removeEmptyLines($content);
         /* reset the context for the next shortcode */
         $context->reset();
     }
     return $content;
 }