Commit:    3f7e30e96a78e48a9434630a43945b6d466d6852
Author:    Stanislav Malyshev <[email protected]>         Mon, 10 Jun 2013 
18:19:40 -0700
Parents:   0c4d1244f4ad792ea5ed125268c083a582970ab1
Branches:  master

Link:       
http://git.php.net/?p=web/php.git;a=commitdiff;h=3f7e30e96a78e48a9434630a43945b6d466d6852

Log:
add script for converting NEWS into HTML

Changed paths:
  A  bin/news2html


Diff:
diff --git a/bin/news2html b/bin/news2html
new file mode 100755
index 0000000..b499010
--- /dev/null
+++ b/bin/news2html
@@ -0,0 +1,70 @@
+#!/usr/local/bin/php
+<?php
+PHP_SAPI == 'cli' or die("Please run this script using the cli sapi");
+
+// get args
+if($argc < 3) {
+       echo "Use: $argv[0] /path/to/php-5.4.16/NEWS 5.4.16\n";
+       exit(1);
+}
+// find NEWS entry
+$fp = fopen($argv[1], "r");
+if(!$fp) {
+       die("Can not open $argv[1]");
+}
+$version = $argv[2];
+$inside = false;
+$entries = array();
+while(($ln = fgets($fp)) !== false) {
+       if(preg_match("/(.. ... ....), PHP $version/", $ln, $m)) {
+               // got entry start
+               $inside = true;
+               $date = strtr($m[1], " ", "-");
+               continue;
+       }
+       if($inside) {
+               if(preg_match('/, PHP \d+.\d+.\d+/', $ln)) {
+                       // next entry - we're done
+                       break;
+               }
+               if($ln == "\n") {
+                       $module = 'Core';
+                       continue;
+               }
+               if($ln[0] == '-') {
+                       // module
+                       $module = trim(substr($ln, 1), " \t\n:");
+               } elseif(preg_match('/^\s+\.\s/',$ln)) {
+                       $entries[$module][] = trim(preg_replace('/^\s+\.\s+/', 
'', $ln));
+               } else {
+                       // continued line
+                       $c = count($entries[$module])-1;
+                       $entries[$module][$c] = trim($entries[$module][$c] )." 
".trim($ln);
+               }
+       }
+}
+echo <<<HEAD
+<a name="$version"></a><!-- {{{ $version -->
+<h3>Version $version</h3>
+<b>$date</b>
+<ul>
+HEAD;
+
+foreach($entries as $module => $items) {
+       echo "<li>$module:\n<ul>\n";
+       foreach($items as $item) {
+               // strip author
+               $item = preg_replace('/\.\s+\(.+?\)$/', '.', $item);
+               // encode HTML
+               $item = htmlspecialchars($item, ENT_NOQUOTES);
+               // convert bug numbers
+               $item = preg_replace(
+                       array('/Fixed bug #([0-9]+)/', '/Fixed PECL bug 
#([0-9]+)/', '/FR #([0-9]+)/'),
+                       array('<?php bugfix(\1); ?>', '<?php peclbugfix(\1); 
?>', 'FR <?php bugl(\1); ?>'),
+                       $item
+               );
+               echo "  <li>$item</li>\n";
+       }
+       echo "</ul></li>\n";
+}
+echo "</ul>\n<!-- }}} -->\n\n";


--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to