[pmwiki-users] How good (and usefull) is AI at writing basic (or not so basic) PmWiki code ?
ABClf
languefrancaise at gmail.com
Tue May 13 05:56:49 PDT 2025
I was looking for something easy (I guess) which might be useful : get a
markup for extracting a line in some Group.MyPage according to regex
pattern.
I have asked ChatGPT (free version) to do the job ;
first attempt didn't work, but the scenario was credible (markup will be
like : (:ExtractLine Profil.JeanDoe "^Nom:" :))
First result given was :
<?php if (!defined('PmWiki')) exit();
Markup('ExtractLine', 'directives',
'/\\(:ExtractLine\\s+(\\S+)\\s+([\'"]).+?\\2\\s*:\\)/e',
"ExtractLineFromPage('$1', PSS('$2'))");
function ExtractLineFromPage($pagename, $pattern) {
$page = ReadPage($pagename, READPAGE_CURRENT);
if (!$page) return "Page non trouvée";
$text = $page['text'];
$lines = explode("\n", $text);
foreach ($lines as $line) {
if (preg_match($pattern, $line)) {
return Keep($line); // Keep() évite l'interprétation wiki
}
}
Saved as a cookbook and called in config, I am given an error by PmWiki
internal debugging code (message : code obsolete).
Ok. I copy the error message to ChatGPT and suggest him a link to
PmWiki/CustomMarkup.
One second later, I am given an updated code which works :
<?php if (!defined('PmWiki')) exit();
Markup('ExtractLine', 'directives',
'/\\(:ExtractLine\\s+(\\S+)\\s+([\'"])(.+?)\\2\\s*:\\)/',
'ExtractLineMarkup');
function ExtractLineMarkup($m) {
$targetPage = $m[1];
$pattern = $m[3]; // C'est le motif entre guillemets
return ExtractLineFromPage($targetPage, $pattern);
}
function ExtractLineFromPage($pagename, $pattern) {
$page = ReadPage($pagename, READPAGE_CURRENT);
if (!$page) return "Page non trouvée";
$text = $page['text'];
$lines = explode("\n", $text);
foreach ($lines as $line) {
if (@preg_match("/$pattern/", $line)) {
return Keep($line); // Empêche l'interprétation du markup
}
}
return "Aucune ligne ne correspond au motif.";
}
This code gets only the first line meeting the pattern.
Just ask if you need all the lines and wait one more second :
<?php if (!defined('PmWiki')) exit();
Markup('ExtractLine', 'directives',
'/\\(:ExtractLine\\s+(\\S+)\\s+([\'"])(.+?)\\2\\s*:\\)/',
'ExtractLineMarkup');
function ExtractLineMarkup($m) {
$targetPage = $m[1];
$pattern = $m[3]; // Motif brut sans délimiteurs
return ExtractAllMatchingLines($targetPage, $pattern);
}
function ExtractAllMatchingLines($pagename, $pattern) {
$page = ReadPage($pagename, READPAGE_CURRENT);
if (!$page) return "Page non trouvée";
$text = $page['text'];
$lines = explode("\n", $text);
$matches = [];
foreach ($lines as $line) {
if (@preg_match("/$pattern/", $line)) {
$matches[] = Keep($line); // Empêche le parsing wiki
}
}
if (count($matches) > 0) {
return implode("<br />\n", $matches);
} else {
return "Aucune ligne ne correspond au motif.";
}
}
Might be easy for smart people, but I'm still so admirative. For the result
I get so quickly, and for the easy way to get it, fluently, in 3, 4
"conversational" steps. That's not something I would have expected 1 year
ago. One more second and I believe you get the extracted line cleaned up
from PmWiki markup if you need it.
My question is two open questions :
1. is the Ai generated code well done ? Ok, it works, but is it well
written ? secure enough ? doesn't it forget something important ? efficient
enough for speed ? (I believe it is, because here it is something very
basic).
2. do you play with AI tools like ChapGPT, Deepseek, Mistral for improving
your PmWiki ? What do you do (can we do something else than markups and
recipes ?) Does it work fine for you ? Which AI do you find is the best for
this kind of work ?
Gilles.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pmichaud.com/pipermail/pmwiki-users/attachments/20250513/c10a83ba/attachment.html>
More information about the pmwiki-users
mailing list