From da342c1b7d0265c0599c2422a4e8e4f276b835c5 Mon Sep 17 00:00:00 2001 From: Ben S Date: Sun, 15 Feb 2015 13:43:15 +0000 Subject: [PATCH] Simplify macro-highlighting code --- rust.mm | 98 ++++++-------------------------------------------------- smoke.rs | 8 +++++ 2 files changed, 17 insertions(+), 89 deletions(-) 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 }; + }