Example #1
0
 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);
 }
Example #2
0
 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'));
 }
Example #3
0
 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;
 }
Example #4
0
 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;
 }
Example #5
0
 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;
 }
Example #7
0
 /**
  * @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;
 }
Example #8
0
 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.');
         }
     }
 }
Example #9
0
 /**
  * @expectedException EFrane\Letterpress\LetterpressException
  * @expectedExceptionMessage Config must be initialized before usage.
  */
 public function testGetNotInitialized()
 {
     Config::reset(true);
     Config::get('letterpress.locale');
 }