ConvertUseMod-Talk

Summary: Talk page for ConvertUseMod.
Maintainer: Pm
Users: (View? / Edit)

This space is for User-contributed commentary and notes. Please include your name and a date along with your comment.

Comments

  • Great work, except this doesn't seem to import UseMod pages that have spaces (underscores) in the title. Anybody interested in trying that?
  • I think I get it... the script imports the pages faithfully, but for some reason my PMWiki install refuses to "see" pages that have underscores. If I go to the shell and rename the files to something without underscores, I can see the content under the new title. Wonder how I can configure PM to "see" imported pages containing underscores?
  • OK, I'm an idiot. I found AlternateNamingScheme and used the spacewikiwords.php. Now I see everything I imported.
  • I got an error message saying that UseModStore's read method (args $pagename) is not compatible with PageStore's read method (args $pagename, $since). -- Branko Collin, 6 Nov 2020
  • I sent the following patch to the developer, but haven't heard anything back, so I am posting it here. The patch solves the following issues:
    • As of PHP 7, using the \e modifier in preg_replace() causes an error. I have replaced these calls with preg_replace_callback() calls and inline functions.
    • The PmWiki core method read() was called with one argument, but currently requires two. I have added this argument. --Branko Collin, 4 Oct 2021
--- C:/xampp/htdocs/pmwiki/cookbook/original-usemod.php.txt	Sat Nov  7 16:49:36 2020
+++ C:/xampp/htdocs/pmwiki/cookbook/usemod.php	Sat Nov  7 16:52:26 2020
@@ -39,7 +39,7 @@
   "!<h3>(.*?)</h3>!" =>  "\n!!! $1",

   # =, ==, === headers
-  "/^(=+)(.*?)\\1/me" => "str_repeat('!',strlen('$1')).PSS('$2')",
+  ## "/^(=+)(.*?)\\1/me" => "str_repeat('!',strlen('$1')).PSS('$2')",

   # <b>, <i>
   "!<b>(.*?)</b>!" => "'''$1'''",
@@ -49,13 +49,13 @@
   "!<br>!" => "\\\\\n",

   # indented text:
-  "!^(:+)!em" => "str_repeat('-', strlen('$1')).'>'",
+  ## "!^(:+)!em" => "str_repeat('-', strlen('$1')).'>'",

   # Term + definition:
-  "!^(;+)(.*?):!em" => "str_repeat(':', strlen('$1')).PSS('$2').':'",
+  ## "!^(;+)(.*?):!em" => "str_repeat(':', strlen('$1')).PSS('$2').':'",

   # [bracketed links]
-  "/\\[(http:[^$UrlExcludeChars\\s]+)\\]/e" => "Keep(PSS('[[$1 |#]]'))", 
+  ## "/\\[(http:[^$UrlExcludeChars\\s]+)\\]/e" => "Keep(PSS('[[$1 |#]]'))", 
   "/\\[(http:.*?)\\s(.*?)\\]/" => '[[$1 | $2 ]]',

   # <font>
@@ -78,7 +78,7 @@
     $pagefile = preg_replace('!-([^-/]+)$!', '/$1', $pagefile);
     return $pagefile;
   }
-  function read($pagename) {
+  function read($pagename, $since=0) {
     global $UseModConversions, $KeepToken;
     $group = FmtPageName('$Group', $pagename);
     if ($group != $this->umgroup) return false;
@@ -87,12 +87,24 @@
       while (!feof($fp)) { $text .= fgets($fp, 4096); }
       fclose($fp);
       preg_match('/\\xb3[23]text\\xb33(.*?)\\xb33/s',$text,$match);
-      $text = preg_replace('!<nowiki>(.*?)</nowiki>!se',
-                "Keep(PSS('$1'))", $match[1]);
-      $text = preg_replace(array_keys($UseModConversions),
-                array_values($UseModConversions), $text);
-      $page['text'] = preg_replace("/$KeepToken(\\d.*?)$KeepToken/e",
-                "\$GLOBALS['KPV']['$1']", $text);
+      $text = preg_replace_callback('!<nowiki>(.*?)</nowiki>!s', function ($matches) { return Keep(PSS( $matches[1] )) ; }, $match[1]);
+      
+      $text = preg_replace(array_keys($UseModConversions), array_values($UseModConversions), $text);
+
+      # =, ==, === headers
+      $text = preg_replace_callback( "/^(=+)(.*?)\\1/m", function ($matches) { return ( str_repeat('!', strlen($matches[1])) . PSS($matches[2]) ); }, $text);
+      
+      # indented text:
+      $text = preg_replace_callback( "!^(:+)!m", function ($matches) { return str_repeat('-', strlen( $matches[1] )).'>'; }, $text);
+
+      # Term + definition:
+      $text = preg_replace_callback( "!^(;+)(.*?):!m", function ($matches) { return str_repeat(':', strlen( $matches[1] )) . PSS( $matches[2] ) . ':'; }, $text );
+
+      # [bracketed links]
+      global $UrlExcludeChars;
+      $text = preg_replace_callback( "/\\[(http:[^$UrlExcludeChars\\s]+)\\]/",  function ($matches) { return Keep(PSS('[[' . $matches[1] . ' |#]]')); }, $text ); 
+
+      $page['text'] = preg_replace_callback("/$KeepToken(\\d.*?)$KeepToken/", function ($matches) {  return $GLOBALS['KPV'][$matches[1]]; }, $text);
     }
     return @$page;
   }
@@ -238,6 +250,3 @@
   echo "</form></body></html>\n";
   exit();
 }
-
-    
-?>

Talk page for the ConvertUseMod recipe (users?).