diff --git a/rust.mm b/rust.mm index 5c47aac..2f34727 100644 --- a/rust.mm +++ b/rust.mm @@ -667,98 +667,18 @@ OSErr calculateRuns(BBLMParamBlock ¶ms, const BBLMCallbackBlock *callbacks) iter--; } } - else if (ch == 'a') + else if (ch == 'a' && iter.strcmp("cro_rules!", 10) == 0) { - // I am ashamed of how nested this code is. + iter += 10; ch = iter.GetNextChar(); - if (ch == 'c') + if (isspace(ch)) { - ch = iter.GetNextChar(); - if (ch == 'r') - { - ch = iter.GetNextChar(); - if (ch == 'o') - { - ch = iter.GetNextChar(); - if (ch == '_') - { - ch = iter.GetNextChar(); - if (ch == 'r') - { - ch = iter.GetNextChar(); - if (ch == 'u') - { - ch = iter.GetNextChar(); - if (ch == 'l') - { - ch = iter.GetNextChar(); - if (ch == 'e') - { - ch = iter.GetNextChar(); - if (ch == 's') - { - ch = iter.GetNextChar(); - if (ch == '!') - { - ch = iter.GetNextChar(); - if (isspace(ch)) - { - if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; - runStart = iter.Offset(); - runLen = skipWhitespace(iter); - runLen += skipWord(iter); - if (!addRun(functionColour, runStart, runLen, *callbacks)) return noErr; - runStart = iter.Offset(); - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } - } - else if (ch) - { - iter--; - } + if (!makeCodeRun(iter, runStart, *callbacks)) return noErr; + runStart = iter.Offset(); + runLen = skipWhitespace(iter); + runLen += skipWord(iter); + if (!addRun(functionColour, runStart, runLen, *callbacks)) return noErr; + runStart = iter.Offset(); } else if (ch) { diff --git a/smoke.rs b/smoke.rs index f135274..cda4df5 100644 --- a/smoke.rs +++ b/smoke.rs @@ -106,7 +106,15 @@ // ---------- #[attribute] + #[derive(This, That, Other)] #![top_level_attribute] #not_an_attribute #[macro_use] use this_is_not_an_attribute; + +// Macros +// ------ + + macro_rules! parse { + ($thing: expr) => { $thing }; + }