[MediaWiki-commits] [Gerrit] mediawiki...RemexHtml[master]: Turn PropGuard into a trait

2018-01-08 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/402180 )

Change subject: Turn PropGuard into a trait
..


Turn PropGuard into a trait

This makes it easier to use, as you don't need to copy the __set function
into every class to take advantage of it.

Change-Id: I8ab0f99d0149f3a04ada6564c3e871775590d722
---
M RemexHtml/PropGuard.php
M RemexHtml/Serializer/Serializer.php
M RemexHtml/Serializer/SerializerNode.php
M RemexHtml/Tokenizer/Attribute.php
M RemexHtml/Tokenizer/Tokenizer.php
M RemexHtml/TreeBuilder/Element.php
M RemexHtml/TreeBuilder/InsertionMode.php
M RemexHtml/TreeBuilder/Marker.php
M RemexHtml/TreeBuilder/TreeBuilder.php
9 files changed, 20 insertions(+), 36 deletions(-)

Approvals:
  Tim Starling: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/RemexHtml/PropGuard.php b/RemexHtml/PropGuard.php
index 00c3c4d..111c09a 100644
--- a/RemexHtml/PropGuard.php
+++ b/RemexHtml/PropGuard.php
@@ -7,15 +7,15 @@
  * undeclared properties on objects. The point of it is to detect programmer
  * errors.
  */
-class PropGuard {
+trait PropGuard {
public static $armed = true;
 
-   public static function set( $obj, $name, $value ) {
+   public function __set( $name, $value ) {
if ( self::$armed ) {
-   throw new \Exception( "Property \"$name\" on object of 
class " . get_class( $obj ) .
+   throw new \Exception( "Property \"$name\" on object of 
class " . get_class( $this ) .
" is undeclared" );
} else {
-   $obj->$name = $value;
+   $this->$name = $value;
}
}
 }
diff --git a/RemexHtml/Serializer/Serializer.php 
b/RemexHtml/Serializer/Serializer.php
index 786c969..b46a18e 100644
--- a/RemexHtml/Serializer/Serializer.php
+++ b/RemexHtml/Serializer/Serializer.php
@@ -14,6 +14,8 @@
  * a DOM and then serializing it, even if you use DOMDocument::saveHTML().
  */
 class Serializer implements AbstractSerializer {
+   use PropGuard;
+
/**
 * A node corresponding to the Document
 * @var SerializerNode
@@ -67,10 +69,6 @@
public function __construct( Formatter $formatter, $errorCallback = 
null ) {
$this->formatter = $formatter;
$this->errorCallback = $errorCallback;
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 
/**
diff --git a/RemexHtml/Serializer/SerializerNode.php 
b/RemexHtml/Serializer/SerializerNode.php
index 2944732..6739b27 100644
--- a/RemexHtml/Serializer/SerializerNode.php
+++ b/RemexHtml/Serializer/SerializerNode.php
@@ -4,6 +4,8 @@
 use RemexHtml\PropGuard;
 
 class SerializerNode {
+   use PropGuard;
+
public $id;
public $parentId;
public $namespace;
@@ -24,9 +26,5 @@
$this->name = $name;
$this->attrs = $attrs;
$this->void = $void;
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 }
diff --git a/RemexHtml/Tokenizer/Attribute.php 
b/RemexHtml/Tokenizer/Attribute.php
index 293b075..9346783 100644
--- a/RemexHtml/Tokenizer/Attribute.php
+++ b/RemexHtml/Tokenizer/Attribute.php
@@ -7,6 +7,8 @@
  * A namespaced attribute, as returned by Attributes::getObjects()
  */
 class Attribute {
+   use PropGuard;
+
public $qualifiedName;
public $namespaceURI;
public $prefix;
@@ -19,9 +21,5 @@
$this->prefix = $prefix;
$this->localName = $localName;
$this->value = $value;
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 }
diff --git a/RemexHtml/Tokenizer/Tokenizer.php 
b/RemexHtml/Tokenizer/Tokenizer.php
index 3567dab..b998f8b 100644
--- a/RemexHtml/Tokenizer/Tokenizer.php
+++ b/RemexHtml/Tokenizer/Tokenizer.php
@@ -11,6 +11,8 @@
  * https://www.w3.org/TR/2016/REC-html51-20161101/
  */
 class Tokenizer {
+   use PropGuard;
+
// States
const STATE_START = 1;
const STATE_DATA = 2;
@@ -111,10 +113,6 @@
$this->ignoreCharRefs = !empty( $options['ignoreCharRefs'] );
$this->ignoreNulls = !empty( $options['ignoreNulls'] );
$this->skipPreprocess = !empty( $options['skipPreprocess'] );
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 
public function setEnableCdataCallback( $cb ) {
diff --git a/RemexHtml/TreeBuilder/Element.php 
b/RemexHtml/TreeBuilder/Element.php
index 18e2166..59029eb 100644
--- a/RemexHtml/TreeBuilder/Element.php
+++ b/RemexHtml/TreeBuilder/Element.php
@@ -14,6 +14,8 @@
  * downstream cl

[MediaWiki-commits] [Gerrit] mediawiki...RemexHtml[master]: Turn PropGuard into a trait

2018-01-04 Thread Legoktm (Code Review)
Legoktm has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/402180 )

Change subject: Turn PropGuard into a trait
..

Turn PropGuard into a trait

This makes it easier to use, as you don't need to copy the __set function
into every class to take advantage of it.

Change-Id: I8ab0f99d0149f3a04ada6564c3e871775590d722
---
M RemexHtml/PropGuard.php
M RemexHtml/Serializer/Serializer.php
M RemexHtml/Serializer/SerializerNode.php
M RemexHtml/Tokenizer/Attribute.php
M RemexHtml/Tokenizer/Tokenizer.php
M RemexHtml/TreeBuilder/Element.php
M RemexHtml/TreeBuilder/InsertionMode.php
M RemexHtml/TreeBuilder/Marker.php
M RemexHtml/TreeBuilder/TreeBuilder.php
9 files changed, 20 insertions(+), 36 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/libs/RemexHtml 
refs/changes/80/402180/1

diff --git a/RemexHtml/PropGuard.php b/RemexHtml/PropGuard.php
index 00c3c4d..111c09a 100644
--- a/RemexHtml/PropGuard.php
+++ b/RemexHtml/PropGuard.php
@@ -7,15 +7,15 @@
  * undeclared properties on objects. The point of it is to detect programmer
  * errors.
  */
-class PropGuard {
+trait PropGuard {
public static $armed = true;
 
-   public static function set( $obj, $name, $value ) {
+   public function __set( $name, $value ) {
if ( self::$armed ) {
-   throw new \Exception( "Property \"$name\" on object of 
class " . get_class( $obj ) .
+   throw new \Exception( "Property \"$name\" on object of 
class " . get_class( $this ) .
" is undeclared" );
} else {
-   $obj->$name = $value;
+   $this->$name = $value;
}
}
 }
diff --git a/RemexHtml/Serializer/Serializer.php 
b/RemexHtml/Serializer/Serializer.php
index 786c969..b46a18e 100644
--- a/RemexHtml/Serializer/Serializer.php
+++ b/RemexHtml/Serializer/Serializer.php
@@ -14,6 +14,8 @@
  * a DOM and then serializing it, even if you use DOMDocument::saveHTML().
  */
 class Serializer implements AbstractSerializer {
+   use PropGuard;
+
/**
 * A node corresponding to the Document
 * @var SerializerNode
@@ -67,10 +69,6 @@
public function __construct( Formatter $formatter, $errorCallback = 
null ) {
$this->formatter = $formatter;
$this->errorCallback = $errorCallback;
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 
/**
diff --git a/RemexHtml/Serializer/SerializerNode.php 
b/RemexHtml/Serializer/SerializerNode.php
index 2944732..6739b27 100644
--- a/RemexHtml/Serializer/SerializerNode.php
+++ b/RemexHtml/Serializer/SerializerNode.php
@@ -4,6 +4,8 @@
 use RemexHtml\PropGuard;
 
 class SerializerNode {
+   use PropGuard;
+
public $id;
public $parentId;
public $namespace;
@@ -24,9 +26,5 @@
$this->name = $name;
$this->attrs = $attrs;
$this->void = $void;
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 }
diff --git a/RemexHtml/Tokenizer/Attribute.php 
b/RemexHtml/Tokenizer/Attribute.php
index 293b075..9346783 100644
--- a/RemexHtml/Tokenizer/Attribute.php
+++ b/RemexHtml/Tokenizer/Attribute.php
@@ -7,6 +7,8 @@
  * A namespaced attribute, as returned by Attributes::getObjects()
  */
 class Attribute {
+   use PropGuard;
+
public $qualifiedName;
public $namespaceURI;
public $prefix;
@@ -19,9 +21,5 @@
$this->prefix = $prefix;
$this->localName = $localName;
$this->value = $value;
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 }
diff --git a/RemexHtml/Tokenizer/Tokenizer.php 
b/RemexHtml/Tokenizer/Tokenizer.php
index 3567dab..b998f8b 100644
--- a/RemexHtml/Tokenizer/Tokenizer.php
+++ b/RemexHtml/Tokenizer/Tokenizer.php
@@ -11,6 +11,8 @@
  * https://www.w3.org/TR/2016/REC-html51-20161101/
  */
 class Tokenizer {
+   use PropGuard;
+
// States
const STATE_START = 1;
const STATE_DATA = 2;
@@ -111,10 +113,6 @@
$this->ignoreCharRefs = !empty( $options['ignoreCharRefs'] );
$this->ignoreNulls = !empty( $options['ignoreNulls'] );
$this->skipPreprocess = !empty( $options['skipPreprocess'] );
-   }
-
-   public function __set( $name, $value ) {
-   PropGuard::set( $this, $name, $value );
}
 
public function setEnableCdataCallback( $cb ) {
diff --git a/RemexHtml/TreeBuilder/Element.php 
b/RemexHtml/TreeBuilder/Element.php
index 18e2166..59029eb 100644
--- a/RemexHtml/TreeBuilder/Element.php
+++ b/RemexHtml/TreeBuilder/Element.php
@@ -14,6 +14,8 @@
  * downstrea