public function __construct() { // get locale $this->locale = Config::get('letterpress.locale'); // defaults if (Config::get('letterpress.microtypography.useDefaults')) { $this->fixers = Config::get('jolitypo.defaults'); // locale additions $localeKey = sprintf('jolitypo.%s', $this->locale); if (Config::has($localeKey)) { $this->fixers = array_merge($this->fixers, Config::get($localeKey)); } } // hyphenation if (Config::get('letterpress.microtypography.enableHyphenation')) { $this->fixers[] = 'Hyphen'; } // user additions $this->fixers = array_merge($this->fixers, Config::get('letterpress.microtypography.additionalFixers')); if (count($this->fixers) === 0) { throw new LetterpressException('Typography fixing requires setting up fixers.'); } $this->fixer = new Fixer($this->fixers); $this->fixer->setLocale($this->locale); }
public function testCreateWithConfigOverride() { Config::init(); $this->assertEquals('en_GB', Config::get('letterpress.locale')); new Letterpress(['configoption' => 'optionvalue', 'letterpress.locale' => 'de_DE']); $this->assertEquals('optionvalue', Config::get('configoption')); $this->assertEquals('de_DE', Config::get('letterpress.locale')); }
public static function run($content, $force = false) { $output = $content; if (Config::get('letterpress.microtypography.enabled') || $force) { $fixer = new TypoFixerFacade(); $output = $fixer->facade_fixer->fix($output); } return $output; }
public static function run($content, $force = false) { $output = $content; if (Config::get('letterpress.markup.enabled') || $force) { // TODO: implement a way of injecting cached media repositories $markup = new MarkupProcessor(new Repository()); $output = $markup->process($content); } return $output; }
public static function run($content, $force = false) { $output = $content; if (Config::get('letterpress.markdown.enabled') || $force) { $escaper = new Escaper('/(?P<bbcode>\\[.+?\\].+\\[\\/.+?\\])/', 'bbcode'); $output = $escaper->escape($output); if (!is_a(static::$parsedown, \Parsedown::class)) { static::$parsedown = ParsedownFactory::create(); } $output = static::$parsedown->text($output); $output = $escaper->replace($output); } return $output; }
public function candidateModify(DOMNode $parent, DOMNode $candidate) { $languageCode = strtolower(substr(Config::get('letterpress.locale'), 0, 2)); if (in_array($candidate->nodeName, $this->textContentElements)) { /* @var $candidate \DOMElement*/ $candidate->setAttribute('lang', $languageCode); } else { $block = $this->doc->createElement('div'); $block->setAttribute('lang', $languageCode); $candidateClone = $candidate->cloneNode(true); $block->appendChild($candidateClone); $candidate = $block; } return $candidate; }
/** * @return \Parsedown */ public static function create() { $class = '\\Parsedown'; if (Config::get('letterpress.markdown.useMarkdownExtra')) { if (!class_exists('\\ParsedownExtra')) { throw new LetterpressException('Enabling MarkdownExtra requires ParsedownExtra to be installed.'); } $class = '\\ParsedownExtra'; } /* @var $instance \Parsedown */ $instance = new $class(); $instance->setBreaksEnabled(Config::get('letterpress.markdown.enableLineBreaks')); $instance->setMarkupEscaped(!Config::get('letterpress.markdown.escapeMarkup')); return $instance; }
protected function loadMediaModifiers() { if (!is_a($this->mediaRepository, Repository::class)) { throw new LetterpressException('Media repository was not initialized.'); } $iter = new ClassIterator((new Finder())->in(__DIR__ . DIRECTORY_SEPARATOR . 'RichMedia')); $iter->enableAutoloading(); $mediaModifiers = collect(); foreach ($iter as $mediaModifier) { /** @var $mediaModifier \ReflectionClass */ if ($mediaModifier->isSubclassOf(MediaModifier::class)) { $mediaModifiers[$mediaModifier->getShortName()] = $mediaModifier->getName(); } } foreach (Config::get('letterpress.media.services') as $serviceName) { if ($mediaModifiers->has($serviceName)) { $class = $mediaModifiers->get($serviceName); $this->modifiers[] = new $class($this->mediaRepository); } else { throw new LetterpressException('Rich media integration for ' . $serviceName . ' is not available.'); } } }
/** * @expectedException EFrane\Letterpress\LetterpressException * @expectedExceptionMessage Config must be initialized before usage. */ public function testGetNotInitialized() { Config::reset(true); Config::get('letterpress.locale'); }