From 09413a0f0a04ad84c9869fc8e9f8fbd75317d35e Mon Sep 17 00:00:00 2001
From: Domovoy <domovoy@errlock.org>
Date: Fri, 14 Sep 2012 05:50:35 +0200
Subject: [PATCH] Better integration with the existing code

---
 library/HTML5/TreeBuilder.php | 25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/library/HTML5/TreeBuilder.php b/library/HTML5/TreeBuilder.php
index 26cd410bf3..257e73c3e0 100644
--- a/library/HTML5/TreeBuilder.php
+++ b/library/HTML5/TreeBuilder.php
@@ -127,6 +127,7 @@ class HTML5_TreeBuilder {
     const NS_XLINK  = 'http://www.w3.org/1999/xlink';
     const NS_XML    = 'http://www.w3.org/XML/1998/namespace';
     const NS_XMLNS  = 'http://www.w3.org/2000/xmlns/';
+    const NS_GOOGLE = 'http://base.google.com/ns/1.0';
 
     public function __construct() {
         $this->mode = self::INITIAL;
@@ -1430,6 +1431,14 @@ class HTML5_TreeBuilder {
                     // parse error
                 break;
 
+                /* Google */
+                case 'g:plusone':
+					/* Reconstruct the active formatting elements, if any. */
+                    $this->reconstructActiveFormattingElements();
+
+                    $this->insertForeignElement($token, self::NS_GOOGLE);
+                break;
+
                 /* A start tag token not covered by the previous entries */
                 default:
                     /* Reconstruct the active formatting elements, if any. */
@@ -3037,21 +3046,7 @@ class HTML5_TreeBuilder {
         }
 
     private function insertElement($token, $append = true) {
-		$sep_pos = strpos($token['name'],':');
-		$ns_uri = self::NS_HTML;
-		if($sep_pos !== FALSE) {
-			// This tag has a namespace
-			$ns = substr($token['name'], 0, $sep_pos);
-			switch($ns) {
-				case 'g':
-					$ns_uri = 'http://base.google.com/ns/1.0';
-					break;
-				default:
-					logger("HTML5/TreeBuilder.php: Unknown namespace '". $ns ."', tag = ". $token['name'], LOGGER_DEBUG);
-					break;
-			}
-		}
-        $el = $this->dom->createElementNS($ns_uri, $token['name']);
+        $el = $this->dom->createElementNS(self::NS_HTML, $token['name']);
 		
         if (!empty($token['attr'])) {
             foreach($token['attr'] as $attr) {
-- 
2.39.5