![]() | singsurf.org - Geometry and the imagination |
Produces a skeleton templatedata document for a given template.
It retrieves the source from the wiki page and scans for all instances of {{{name
these are used as a guess for the parameters used by a template.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TemplateData Skeleton</title>
</head>
<body>
<?php
$root = "../";
$page = "TemplateData Skeleton";
include("../header.php");
?>
<h1>TemplateData Skeleton</h1>
<p>Produces a skeleton templatedata document for a given template.
It retrieves the source from the wiki page and scans for all instances of <code>{{{name</code>
these are used as a guess for the parameters used by a template.
</p>
<?php
$page='Template:';
$site='en.wikipedia.org';
if(isset($_GET['PageName'])) {
$page=$_GET['PageName'];
}
if(isset($_GET['SiteName'])) {
$site=$_GET['SiteName'];
}
?>
<form name="LoadPage">
Wikipedia site <input name="SiteName" type="text" size="60" value="<?php echo $site; ?>"/><br/>
Template name <input name="PageName" type="text" size="60" value="<?php echo $page; ?>"/><br/>
<input type="submit" />
</form>
<?php
/**
* Send a GET requst using cURL
* @param string $url to request
* @param array $get values to send
* @param array $options for cURL
* @return string
* Taken from a comment on the php curl doc
*/
function curl_get($url, array $get = array(), array $options = array())
{
$defaults = array(
CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get),
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_TIMEOUT => 4
);
$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
if( ! $result = curl_exec($ch))
{
trigger_error(curl_error($ch));
}
curl_close($ch);
return $result;
}
function println($str) {
echo($str . "\n");
}
if(isset($_GET['PageName']))
{
//$url = 'http://www.example.com';
//$url = 'http://en.wikipedia.org/w/index.php?title=Template:Taxobox+name&action=raw';
$url = 'http://' . $_GET['SiteName'] . '/w/index.php?title=' . urlencode($_GET['PageName']) ;
$rawurl = $url . '&action=raw';
println('<p>');
println('Template <a href="' . $url . '">' . $_GET['PageName'] . '</a><br/>');
println('Template doc <a href="' . $url . '/doc">' . $_GET['PageName'] . '/doc</a><br/>');
println('Template raw <a href="' . $rawurl . '">' . $rawurl . '</a><br/>');
println('</p>');
$res = curl_get($rawurl );
println('<h2>Source code</h2>');
println('<pre>');
println( htmlentities($res) );
println('</pre>');
println('<h2>TemplateData</h2>');
preg_match_all ("/\{\{\{[^\|\}]+/",$res,$matches);
//array_shift($matches);
$params = array();
//foreach ($matches as $k => $v) {
$count = count($matches[0]);
for ($i = 0; $i < $count; $i++) {
$v = substr($matches[0][$i],3);
// println('<li>' . $v . '</li>');
++$params[$v];
}
println('<pre>');
println('<templatedata>');
println('{');
println(' "description": "insert description here",');
println(' "params": {');
$n = count($params);
$i=0;
foreach($params as $key => $val) {
//println( $key );
println(' "' . $key . '": {');
println(' "label": "' . $key . '",');
println(' "description": "",');
println(' "type": "string",');
println(' "required": false');
echo(' }');
if(++$i < $n ) echo ',';
echo "\n";
}
println(' }');
println('}');
println('</templatedata>');
println('</pre>');
}
?>
<p><a href="TemplateData.php?Source=true">Source code</a></p>
<?php
if(isset($_GET['Source'])) {
println('<h2>Source code</h2>');
println('<pre>');
$handle = fopen('TemplateData.php','r');
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo htmlentities($buffer);
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
println('</pre>');
}
include("../footer.php");
?>
</body>
</html>