David Barrett wrote:

-----Original Message-----
From: Joel
Subject: Re: [Spirit-general] RE: [Spirit-devel] More Quickbook updates

David Barrett wrote:

Yes, it's a nasty problem. Here is the regular expression I use for

bold:

'/(?<=^|^\W|\s\W|\s|<b>|<i>|<code>)\*(([^*\s]+\s+)*[^*\s]+)\*(?=<\/b>|<\/i

|<\/code>|\s|\W\s|\W$|$)/i'


Now, before giving me a headache (I always get one when reading regexes-- certainly one of the reasons why I wrote Spirit), how do you translate that in simple english?


So, you want *me* to get the headache while translating... :)

Yes :-)

Even better than English, I'll try to convert to pseudo-Spirit

String bold;
Rule<> sol = start of line;
Rule<> nonwordchar = ~(chset_p[a-zA-Z0-9_]);
Rule<> prefix = ( sol | (sol >> nonword) | (+space_p >> nonword) | space_p |
"<b>" | "<i>" | "<code>" )
Rule<> wordchar = ~( '*' | space_p );
Rule<> boldtext = (( +wordchar >> +space_p ) >> +wordchar)[ assign_a(bold)]
Rule<> postfix = ( "</b>" | "</i>" | "</code>" | space_p | nonword >> space_p | nonword >> eol_p | eol_p );


Rule<> match = prefix >> '*' >> boldtext >> '*' >> postfix;

Or something like that.  Basically, so long as it's surrounded by:
1) Bold, italics, or code HTML tags
2) Whitespace
3) Start/end of line
4) Exactly one non-word character, surrounded by space
5) Exactly one non-word character, surrounded by start/end of line

The reason for rules 4, and 5 is to allow shorthand notations to combine.
So, for example, you can do /*bold italics*/ or /#italics code#/ and so
forth.  The reason for rule 1 is to accommodate previous passes of the
pattern (it can be applied multiple times).

Cool. That's very helpful.

I hope that made sense.  I'm not sure how well it translates into a one-pass
parser.

That'll be a challenge! I think I am close. If not, I can always do a second pass for this nasty formatting rules. Not-elegant, but hey...

Thanks,
--
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net


------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php _______________________________________________ Boost-docs mailing list [EMAIL PROTECTED] Unsubscribe and other administrative requests: https://lists.sourceforge.net/lists/listinfo/boost-docs

Reply via email to