public function asConfig() { $bbcodes = parent::asConfig(); foreach ($bbcodes as $bbcodeName => &$bbcode) { if (isset($bbcode['tagName']) && TagName::isValid($bbcodeName) && TagName::normalize($bbcodeName) === $bbcode['tagName']) { unset($bbcode['tagName']); } if (isset($bbcode['defaultAttribute']) && AttributeName::isValid($bbcodeName) && AttributeName::normalize($bbcodeName) === $bbcode['defaultAttribute']) { unset($bbcode['defaultAttribute']); } } unset($bbcode); return new Dictionary($bbcodes); }
/** * {@inheritdoc} * * This method will remove redundant info such as the BBCode's tagName or defaultAttribute values * if they are the same as their default values */ public function asConfig() { $bbcodes = parent::asConfig(); foreach ($bbcodes as $bbcodeName => &$bbcode) { // Remove the tag name if it's the same name as the BBCode if (isset($bbcode['tagName']) && TagName::isValid($bbcodeName) && TagName::normalize($bbcodeName) === $bbcode['tagName']) { unset($bbcode['tagName']); } // Remove the defaultAttribute name if it's the same name as the BBCode if (isset($bbcode['defaultAttribute']) && AttributeName::isValid($bbcodeName) && AttributeName::normalize($bbcodeName) === $bbcode['defaultAttribute']) { unset($bbcode['defaultAttribute']); } } unset($bbcode); return new Dictionary($bbcodes); }
/** * {@inheritdoc} */ public function asConfig() { $plugins = parent::asConfig(); // Adjust plugins' default properties foreach ($plugins as $pluginName => &$pluginConfig) { $plugin = $this->get($pluginName); // Add base properties $pluginConfig += $plugin->getBaseProperties(); // Remove quickMatch if it's false if ($pluginConfig['quickMatch'] === false) { unset($pluginConfig['quickMatch']); } // Remove regexpLimit if there's no regexp if (!isset($pluginConfig['regexp'])) { unset($pluginConfig['regexpLimit']); } // Add the JavaScript parser (generated dynamically) if (!isset($pluginConfig['parser'])) { $pluginConfig['parser'] = new Variant(); $pluginConfig['parser']->setDynamic('JS', [$plugin, 'getJSParser']); } // Remove className if it's a default plugin using its default name. Its class name will // be generated by the parser automatically $className = 's9e\\TextFormatter\\Plugins\\' . $pluginName . '\\Parser'; if ($pluginConfig['className'] === $className) { unset($pluginConfig['className']); } } unset($pluginConfig); return $plugins; }
/** * @testdox asConfig() returns the elements in lexical order */ public function testAsConfigLexicalOrder() { $collection = new NormalizedCollection(); $collection->add('foo', 'foo'); $collection->add('bar', 'bar'); $this->assertSame(['bar' => 'bar', 'foo' => 'foo'], $collection->asConfig()); }