[3686] MacRuby/branches/icu/re.cpp
Revision: 3686 http://trac.macosforge.org/projects/ruby/changeset/3686 Author: lsansonetti@apple.com Date: 2010-03-03 14:37:48 -0800 (Wed, 03 Mar 2010) Log Message: ----------- fixed #to_s and #inspect to now display regexp flags Modified Paths: -------------- MacRuby/branches/icu/re.cpp Modified: MacRuby/branches/icu/re.cpp =================================================================== --- MacRuby/branches/icu/re.cpp 2010-03-03 22:16:51 UTC (rev 3685) +++ MacRuby/branches/icu/re.cpp 2010-03-03 22:37:48 UTC (rev 3686) @@ -269,8 +269,6 @@ return rb_reg_quote(reg_operand(pat, true)); } - - /* * call-seq: * Regexp.union(pat1, pat2, ...) => new_regexp @@ -808,7 +806,22 @@ VALUE str = rb_str_new2("/"); rb_str_concat(str, regexp_source(rcv, 0)); rb_str_cat2(str, "/"); - // TODO: add options there. + + const uint32_t options = rb_reg_options(rcv); + const bool mode_m = options & REGEXP_OPT_MULTILINE; + const bool mode_i = options & REGEXP_OPT_IGNORECASE; + const bool mode_x = options & REGEXP_OPT_EXTENDED; + + if (mode_m) { + rb_str_cat2(str, "m"); + } + if (mode_i) { + rb_str_cat2(str, "i"); + } + if (mode_x) { + rb_str_cat2(str, "x"); + } + return str; } @@ -835,10 +848,40 @@ static VALUE regexp_to_s(VALUE rcv, SEL sel) { - VALUE str = rb_str_new2("(?:"); - // TODO: add options there. + VALUE str = rb_str_new2("(?"); + + const uint32_t options = rb_reg_options(rcv); + const bool mode_m = options & REGEXP_OPT_MULTILINE; + const bool mode_i = options & REGEXP_OPT_IGNORECASE; + const bool mode_x = options & REGEXP_OPT_EXTENDED; + + if (mode_m) { + rb_str_cat2(str, "m"); + } + if (mode_i) { + rb_str_cat2(str, "i"); + } + if (mode_x) { + rb_str_cat2(str, "x"); + } + + if (!mode_m || !mode_i || !mode_x) { + rb_str_cat2(str, "-"); + if (!mode_m) { + rb_str_cat2(str, "m"); + } + if (!mode_i) { + rb_str_cat2(str, "i"); + } + if (!mode_x) { + rb_str_cat2(str, "x"); + } + } + + rb_str_cat2(str, ":"); rb_str_concat(str, regexp_source(rcv, 0)); rb_str_cat2(str, ")"); + return str; }
participants (1)
-
source_changes@macosforge.org