[svn-commits] mvanbaak: branch group/appdocsxml r129215 - /team/group/appdocsxml/contrib/sc...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Tue Jul 8 16:32:47 CDT 2008


Author: mvanbaak
Date: Tue Jul  8 16:32:46 2008
New Revision: 129215

URL: http://svn.digium.com/view/asterisk?view=rev&rev=129215
Log:
add php file to parse the documentation.xml.
This is very basic, hacked together during a visit to my 'little room'

23:26 <@      mvanbaak> bkruse: should I add the php I have in the scripts dir ?
23:27 <@        bkruse> contrib?
23:27 <@        bkruse> yes, i can work on it a little too


Added:
    team/group/appdocsxml/contrib/scripts/xmldoc.php   (with props)

Added: team/group/appdocsxml/contrib/scripts/xmldoc.php
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/contrib/scripts/xmldoc.php?view=auto&rev=129215
==============================================================================
--- team/group/appdocsxml/contrib/scripts/xmldoc.php (added)
+++ team/group/appdocsxml/contrib/scripts/xmldoc.php Tue Jul  8 16:32:46 2008
@@ -1,0 +1,102 @@
+<?php
+
+/**
+ * Configuration
+ */
+
+// Set the full path to the documentation.xml here
+// XXX: should be put here by the autoconf/make cycle
+$xmlfile = "/home/michiel/dev/personal/asterisk/appdocsxml/documentation.xml";
+
+/**
+ * Logic, no changes needed for end users
+ * XXX: finish this
+ */
+class XmlElement {
+	var $name;
+	var $attributes;
+	var $content;
+	var $children;
+};
+
+function xml_to_object($xml) {
+	$parser = xml_parser_create();
+	xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
+	xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
+	xml_parse_into_struct($parser, $xml, $tags);
+	xml_parser_free($parser);
+
+	$elements = array();  // the currently filling [child] XmlElement array
+	$stack = array();
+	foreach ($tags as $tag) {
+		$index = count($elements);
+		if ($tag["type"] == "complete" || $tag["type"] == "open") {
+			$elements[$index] = new XmlElement;
+			$elements[$index]->name = $tag["tag"];
+			$elements[$index]->attributes = $tag["attributes"];
+			$elements[$index]->content = $tag["value"];
+			if ($tag["type"] == "open") {  // push
+				$elements[$index]->children = array();
+				$stack[count($stack)] = &$elements;
+				$elements = &$elements[$index]->children;
+			}
+		}
+		if ($tag["type"] == "close") {  // pop
+			$elements = &$stack[count($stack) - 1];
+			unset($stack[count($stack) - 1]);
+		}
+	}
+	return $elements[0];  // the single top-level element
+}
+
+// buffer for output
+$buffer = array();
+
+// read xml file
+$xml = file_get_contents($xmlfile);
+
+// parse the xml into an object
+$res = xml_to_object($xml);
+
+// loop through all elements
+foreach ($res->children as $v) {
+	$nodeinfo = array();
+	//var_dump($v);
+	if ($v->attributes["language"]) {
+		$lang = $v->attributes["language"];
+	} else {
+		$lang = "en";
+	}
+	$buffer[$v->name][$lang][$v->attributes["name"]] = array();
+	foreach ($v->children as $child) {
+		//var_dump($child);
+		if ($child->name == "synopsis") {
+			$buffer[$v->name][$lang][$v->attributes["name"]]["synopsis"] = $child->content;
+		}
+		if ($child->name == "description") {
+			$buffer[$v->name][$lang][$v->attributes["name"]]["description"] = $child->content;
+		}
+		if ($child->name == "variable") {
+			$varvalues = array();
+			if (is_array($child->children)) {
+				foreach ($child->children as $childvalues) {
+					$varvalues[$childvalues->attributes["name"]] = array(
+						"description" => $childvalues->content,
+					);
+				}
+			}
+			$buffer[$v->name][$lang][$v->attributes["name"]]["variables"][$child->attributes["name"]] = array(
+				"description" => $child->content,
+				"values" => $varvalues,
+			);
+
+		}
+	}
+	//echo $v->name;
+	//echo "<br>";
+	unset($nodeinfo);
+}
+
+$output = print_r($buffer, true);
+echo "<pre>".$output."</pre>";
+?>

Propchange: team/group/appdocsxml/contrib/scripts/xmldoc.php
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/group/appdocsxml/contrib/scripts/xmldoc.php
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: team/group/appdocsxml/contrib/scripts/xmldoc.php
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the svn-commits mailing list