This problem has previously been encountered. And my last solution was
not satisfactory.
It seems like there were 2 regex lines, one targeting `//` and another
targeting `/* */`.
Originally they were basically meant to perform this:
Search for
```c
;<COMMENT>;\n
```
and replacing it with
```c
;<COMMENT>
```
In e00ba2e62f I provided a patch to add
another `;` for `//` as it would eat the first `;` after the `<COMMENT>`
After thinking for some time, I came to the conclusion that the lines of
REGEX serve no purpose and should be removed.
For future reference:
e00ba2e62f was targeting this problem:
```c
printf("why is the last ; missing?"); // foo \n int a=42;
```
which generated something along the lines of
```c
printf("why is the last ; missing?");
// foo
int a = 42return 0;
```
Where it would strip a `;` from the first line after a `//` comment
And this commit additionally targeted:
```c
printf("foo\n");
//printf("bar\n");
printf("baz\n");
// only happens if the line ends with ; eg:
printf("hello\n");
// deny with ;
printf("world\n");
```
output:
foo
hello
expected:
foo
baz
hello
world
where it generated the code:
```c
printf("foo\n");
//printf("bar\n" );printf("baz\n" );
// only happens if the line ends with ; eg:
printf("hello\n");
// deny with ;printf("world\n" );
```
Thus this should fix#62 and the original problem
For some reason, various IRC networks do not propagate banlist metadata
such as owner and timestamp when a server rejoins. This causes the
server's banlist entries to contain "set by server" instead of the
original individual who set it and "set on now" instead of when it was
originally set.
This commit modifies PBot's banlist monitoring to only update PBot's
internal banlist metadata when the ban doesn't exist or when the ban is
being updated by an actual individual instead of the server. Now PBot
will remember the original setter and the original timestamp
regardless of whether the IRC server can.
If ProcessManager::execute_process() returns undef,
then the loop in Interpreter::interpret() thinks that
the command didn't get handled, and so goes on to look
for other commands. This is now corrected.
Text::Levenshtein::XS is much, much, much, much faster and more
efficient.
Existing PBot users: Please run `cpanm Text::Levenshtein::XS` to install this
module.
Bot output now appears in `recall` and can be `grab`bed.
Moved truncate_result() a bit further down to truncate after target nick
is prefixed to output.
The `factoid` commands interprets its arguments as an anonymous factoid.
Useful for testing factoid actions without creating and deleting them.
E.g.:
<pragma> !factoid /say $args[1:2] --args 'testing hello world args'
<PBot> hello world