User:Jnc/wiki.e

From Wikipedia, the free encyclopedia
/* A personal favourite - convert paragraphs to very long lines, and copies the
 * result to the clipboard - very useful for doing text on Wikipedia.
 * It knows about Wikipedia syntax, so it supresses the line collection
 * wherever i) the preceding line ended with a '=' (i.e. it was a section
 * header line), or the next line starts with a '*' or '#' (i.e.* it's a list
 * element), a ':' (i.e. it's an indented section), or a '<' (i.e. it's a
 * comment).
 */

command wikify_region() on reg_tab[ALT('W')]

{	int	obuf, wbuf;
	char	c, oc, nc;

	save_spot point;
	fix_region();

	obuf = bufnum;
	wbuf = zap("-wiki-");
	oc = '\n';

	while (point < mark) {
		c = curchar();
		point++;

		if (c != '\n') {
			binsert(wbuf, c);
			if (c == '=')
				oc = '=';
			  else
				oc = '+';
			continue;
			}

		nc = curchar();
		if ((oc != '=') && (oc != '\n') &&
		    (nc != ':') && (nc != '*') && (nc != '#') && (nc != '<') &&
		    (nc != '\n')) {
			binsert(wbuf, ' ');
			oc = '-';
			continue;
			}

		binsert(wbuf, '\n');
		oc = '\n';
		}

	bufnum = wbuf;
	point = 0;
	mark = size();
	copy_to_clipboard();
	bufnum = obuf;

	say("Region Wikified.");
}