Skip to content

Commit

Permalink
TemplateForensics: renamed to TemplateInspector
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshyPHP committed Dec 11, 2016
1 parent 7d71e7c commit f5f494f
Show file tree
Hide file tree
Showing 25 changed files with 127 additions and 119 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "s9e/text-formatter",
"version": "0.8.6-dev",
"version": "0.9.0-dev",
"type": "library",
"description": "Multi-purpose text formatting and markup library. Plugins offer support for BBCodes, Markdown, emoticons, HTML, embedding media (YouTube, etc...), enhanced typography and more.",
"homepage": "https://github.com/s9e/TextFormatter/",
Expand Down
8 changes: 8 additions & 0 deletions docs/Internals/API_changes.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
## 0.9.0

`s9e\TextFormatter\Configurator\TemplateForensics` has been renamed to `s9e\TextFormatter\Configurator\TemplateInspector`.

`s9e\TextFormatter\Configurator\Items\Template::getForensics()` has been renamed to `s9e\TextFormatter\Configurator\Items\Template::getInspector()`.


## 0.8.0

The `s9e\TextFormatter\Plugins\MediaEmbed\Configurator\SiteDefinitionProvider` interface has been removed.

`$configurator->MediaEmbed->defaultSites` is now an iterable collection that implements the `ArrayAccess` interface. See [its API](http://s9e.github.io/TextFormatter/api/s9e/TextFormatter/Plugins/MediaEmbed/Configurator/Collections/SiteDefinitionCollection.html).


## 0.7.0

`s9e\TextFormatter\Parser\Tag::setSortPriority()` has been deprecated. It will emit a warning upon use and will be removed in a future version.
Expand Down
10 changes: 5 additions & 5 deletions docs/testdox.txt
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@ s9e\TextFormatter\Tests\Configurator\Helpers\ContextSafeness
[x] getDisallowedCharactersInCSS() returns a list of strings
[x] getDisallowedCharactersInJS() returns a list of strings

s9e\TextFormatter\Tests\Configurator\Helpers\TemplateForensics
s9e\TextFormatter\Tests\Configurator\Helpers\TemplateInspector
[x] getDOM() returns the template as a DOMDocument
[x] Test cases

Expand Down Expand Up @@ -988,12 +988,12 @@ s9e\TextFormatter\Tests\Configurator\Items\Template
[x] isNormalized() returns true if normalize() was called
[x] isNormalized(true) sets it to true
[x] isNormalized(false) sets it to false
[x] getForensics() returns an instance of TemplateForensics based on this template's content
[x] normalize() resets the cached instance of TemplateForensics
[x] getInspector() returns an instance of TemplateInspector based on this template's content
[x] normalize() resets the cached instance of TemplateInspector
[x] replaceTokens() performs regexp-based replacements on the template's content
[x] replaceTokens() resets the cached instance of TemplateForensics
[x] replaceTokens() resets the cached instance of TemplateInspector
[x] replaceTokens() resets isNormalized
[x] Unknown methods such as isBlock() and isPassthrough() are forwarded to this template's TemplateForensics instance
[x] Unknown methods such as isBlock() and isPassthrough() are forwarded to this template's TemplateInspector instance
[x] setContent() updates the template's content

s9e\TextFormatter\Tests\Configurator\Items\TemplateDocument
Expand Down
2 changes: 1 addition & 1 deletion phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<file>tests/Configurator/Helpers/CharacterClassBuilderTest.php</file>
<file>tests/Configurator/Helpers/ConfigHelperTest.php</file>
<file>tests/Configurator/Helpers/ContextSafenessTest.php</file>
<file>tests/Configurator/Helpers/TemplateForensicsTest.php</file>
<file>tests/Configurator/Helpers/TemplateInspectorTest.php</file>
<file>tests/Configurator/Helpers/RegexpBuilderTest.php</file>
<file>tests/Configurator/Helpers/RegexpParserTest.php</file>
<file>tests/Configurator/Helpers/RulesHelperTest.php</file>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ function getClosedIfEmptyClosers($arr, $elName)

$php = substr($php, 0, -1);

$filepath = __DIR__ . '/../src/Configurator/Helpers/TemplateForensics.php';
$filepath = __DIR__ . '/../src/Configurator/Helpers/TemplateInspector.php';
$file = file_get_contents($filepath);

if (!preg_match('#(?<=static \\$htmlElements = \\[)(.*?)(?=\\n\\t\\];)#s', $file, $m, PREG_OFFSET_CAPTURE))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
*
* @link http://dev.w3.org/html5/spec/content-models.html#content-models
* @link http://dev.w3.org/html5/spec/syntax.html#optional-tags
* @see /scripts/patchTemplateForensics.php
* @see /scripts/patchTemplateInspector.php
*/
class TemplateForensics
class TemplateInspector
{
/**
* @var string allowChild bitfield (all branches)
Expand Down Expand Up @@ -747,7 +747,7 @@ protected function isFormattingSpan(DOMElement $node)
* predecessor. Those are used to generate closeParent rules and are stored in the "cp" key.
*
* @var array
* @see /scripts/patchTemplateForensics.php
* @see /scripts/patchTemplateInspector.php
*/
protected static $htmlElements = [
'a'=>['c'=>"\17\0\0\0\0\1",'c3'=>'@href','ac'=>"\0",'dd'=>"\10\0\0\0\0\1",'t'=>1,'fe'=>1],
Expand Down
28 changes: 14 additions & 14 deletions src/Configurator/Items/Template.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@
namespace s9e\TextFormatter\Configurator\Items;

use DOMDocument;
use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\Helpers\TemplateHelper;
use s9e\TextFormatter\Configurator\TemplateNormalizer;

class Template
{
/**
* @var TemplateForensics Instance of TemplateForensics based on the content of this template
* @var TemplateInspector Instance of TemplateInspector based on the content of this template
*/
protected $forensics;
protected $inspector;

/**
* @var bool Whether this template has been normalized
Expand All @@ -42,13 +42,13 @@ public function __construct($template)
/**
* Handle calls to undefined methods
*
* Forwards calls to this template's TemplateForensics instance
* Forwards calls to this template's TemplateInspector instance
*
* @return mixed
*/
public function __call($methodName, $args)
{
return call_user_func_array([$this->getForensics(), $methodName], $args);
return call_user_func_array([$this->getInspector(), $methodName], $args);
}

/**
Expand Down Expand Up @@ -91,18 +91,18 @@ public function getCSSNodes()
}

/**
* Return an instance of TemplateForensics based on this template's content
* Return an instance of TemplateInspector based on this template's content
*
* @return TemplateForensics
* @return TemplateInspector
*/
public function getForensics()
public function getInspector()
{
if (!isset($this->forensics))
if (!isset($this->inspector))
{
$this->forensics = new TemplateForensics($this->__toString());
$this->inspector = new TemplateInspector($this->__toString());
}

return $this->forensics;
return $this->inspector;
}

/**
Expand Down Expand Up @@ -159,7 +159,7 @@ public function isNormalized($bool = null)
*/
public function normalize(TemplateNormalizer $templateNormalizer)
{
$this->forensics = null;
$this->inspector = null;
$this->template = $templateNormalizer->normalizeTemplate($this->template);
$this->isNormalized = true;
}
Expand All @@ -173,7 +173,7 @@ public function normalize(TemplateNormalizer $templateNormalizer)
*/
public function replaceTokens($regexp, $fn)
{
$this->forensics = null;
$this->inspector = null;
$this->template = TemplateHelper::replaceTokens($this->template, $regexp, $fn);
$this->isNormalized = false;
}
Expand All @@ -186,7 +186,7 @@ public function replaceTokens($regexp, $fn)
*/
public function setContent($template)
{
$this->forensics = null;
$this->inspector = null;
$this->template = (string) $template;
$this->isNormalized = false;
}
Expand Down
42 changes: 21 additions & 21 deletions src/Configurator/RulesGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
use Iterator;
use s9e\TextFormatter\Configurator\Collections\RulesGeneratorList;
use s9e\TextFormatter\Configurator\Collections\TagCollection;
use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\BooleanRulesGenerator;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\TargetedRulesGenerator;
use s9e\TextFormatter\Configurator\Traits\CollectionProxy;
Expand Down Expand Up @@ -93,19 +93,19 @@ public function getRules(TagCollection $tags, array $options = [])

// Create a proxy for the parent markup so that we can determine which tags are allowed at
// the root of the text (IOW, with no parent) or even disabled altogether
$rootForensics = $this->generateRootForensics($parentHTML);
$rootInspector = $this->generateRootInspector($parentHTML);

// Study the tags
$templateForensics = [];
$templateInspector = [];
foreach ($tags as $tagName => $tag)
{
// Use the tag's template if applicable or XSLT's implicit default otherwise
$template = (isset($tag->template)) ? $tag->template : '<xsl:apply-templates/>';
$templateForensics[$tagName] = new TemplateForensics($template);
$templateInspector[$tagName] = new TemplateInspector($template);
}

// Generate a full set of rules
$rules = $this->generateRulesets($templateForensics, $rootForensics);
$rules = $this->generateRulesets($templateInspector, $rootInspector);

// Remove root rules that wouldn't be applied anyway
unset($rules['root']['autoClose']);
Expand All @@ -123,12 +123,12 @@ public function getRules(TagCollection $tags, array $options = [])
}

/**
* Generate a TemplateForensics instance for the root element
* Generate a TemplateInspector instance for the root element
*
* @param string $html Root HTML, e.g. "<div>"
* @return TemplateForensics
* @return TemplateInspector
*/
protected function generateRootForensics($html)
protected function generateRootInspector($html)
{
$dom = new DOMDocument;
$dom->loadHTML($html);
Expand All @@ -149,39 +149,39 @@ protected function generateRootForensics($html)
'xsl:apply-templates'
));

// Finally create and return a new TemplateForensics instance
return new TemplateForensics($dom->saveXML($body));
// Finally create and return a new TemplateInspector instance
return new TemplateInspector($dom->saveXML($body));
}

/**
* Generate and return rules based on a set of TemplateForensics
* Generate and return rules based on a set of TemplateInspector
*
* @param array $templateForensics Array of [tagName => TemplateForensics]
* @param TemplateForensics $rootForensics TemplateForensics for the root of the text
* @param array $templateInspector Array of [tagName => TemplateInspector]
* @param TemplateInspector $rootInspector TemplateInspector for the root of the text
* @return array
*/
protected function generateRulesets(array $templateForensics, TemplateForensics $rootForensics)
protected function generateRulesets(array $templateInspector, TemplateInspector $rootInspector)
{
$rules = [
'root' => $this->generateRuleset($rootForensics, $templateForensics),
'root' => $this->generateRuleset($rootInspector, $templateInspector),
'tags' => []
];
foreach ($templateForensics as $tagName => $src)
foreach ($templateInspector as $tagName => $src)
{
$rules['tags'][$tagName] = $this->generateRuleset($src, $templateForensics);
$rules['tags'][$tagName] = $this->generateRuleset($src, $templateInspector);
}

return $rules;
}

/**
* Generate a set of rules for a single TemplateForensics instance
* Generate a set of rules for a single TemplateInspector instance
*
* @param TemplateForensics $src Source of the rules
* @param array $targets Array of [tagName => TemplateForensics]
* @param TemplateInspector $src Source of the rules
* @param array $targets Array of [tagName => TemplateInspector]
* @return array
*/
protected function generateRuleset(TemplateForensics $src, array $targets)
protected function generateRuleset(TemplateInspector $src, array $targets)
{
$rules = [];
foreach ($this->collection as $rulesGenerator)
Expand Down
4 changes: 2 additions & 2 deletions src/Configurator/RulesGenerators/AutoCloseIfVoid.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
*/
namespace s9e\TextFormatter\Configurator\RulesGenerators;

use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\BooleanRulesGenerator;

class AutoCloseIfVoid implements BooleanRulesGenerator
{
/**
* {@inheritdoc}
*/
public function generateBooleanRules(TemplateForensics $src)
public function generateBooleanRules(TemplateInspector $src)
{
return ($src->isVoid()) ? ['autoClose' => true] : [];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
*/
namespace s9e\TextFormatter\Configurator\RulesGenerators;

use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\BooleanRulesGenerator;

class AutoReopenFormattingElements implements BooleanRulesGenerator
{
/**
* {@inheritdoc}
*/
public function generateBooleanRules(TemplateForensics $src)
public function generateBooleanRules(TemplateInspector $src)
{
return ($src->isFormattingElement()) ? ['autoReopen' => true] : [];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
*/
namespace s9e\TextFormatter\Configurator\RulesGenerators;

use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\TargetedRulesGenerator;

class BlockElementsCloseFormattingElements implements TargetedRulesGenerator
{
/**
* {@inheritdoc}
*/
public function generateTargetedRules(TemplateForensics $src, TemplateForensics $trg)
public function generateTargetedRules(TemplateInspector $src, TemplateInspector $trg)
{
return ($src->isBlock() && $trg->isFormattingElement()) ? ['closeParent'] : [];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
*/
namespace s9e\TextFormatter\Configurator\RulesGenerators;

use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\TargetedRulesGenerator;

class BlockElementsFosterFormattingElements implements TargetedRulesGenerator
{
/**
* {@inheritdoc}
*/
public function generateTargetedRules(TemplateForensics $src, TemplateForensics $trg)
public function generateTargetedRules(TemplateInspector $src, TemplateInspector $trg)
{
return ($src->isBlock() && $src->isPassthrough() && $trg->isFormattingElement()) ? ['fosterParent'] : [];
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
*/
namespace s9e\TextFormatter\Configurator\RulesGenerators;

use s9e\TextFormatter\Configurator\Helpers\TemplateForensics;
use s9e\TextFormatter\Configurator\Helpers\TemplateInspector;
use s9e\TextFormatter\Configurator\RulesGenerators\Interfaces\BooleanRulesGenerator;

class DisableAutoLineBreaksIfNewLinesArePreserved implements BooleanRulesGenerator
{
/**
* {@inheritdoc}
*/
public function generateBooleanRules(TemplateForensics $src)
public function generateBooleanRules(TemplateInspector $src)
{
return ($src->preservesNewLines()) ? ['disableAutoLineBreaks' => true] : [];
}
Expand Down

0 comments on commit f5f494f

Please sign in to comment.