[#40602] [ruby-trunk - Bug #5532][Open] Compile problem for bigdecimal on cygwin — Martin Dürst <duerst@...>

14 messages 2011/11/01

[#40617] [ruby-trunk - Feature #5534][Open] Redefine Range class and introduce RelativeNumeric and RelativeRange — Alexey Muranov <muranov@...>

17 messages 2011/11/01

[#40646] [ruby-trunk - Bug #5541][Open] Better configure error message when llvm-gcc is the default compiler — Eric Hodel <[email protected]>

10 messages 2011/11/01

[#40648] [ruby-trunk - Feature #5543][Open] rb_thread_blocking_region() API is poorly designed — Christopher Huff <cjameshuff@...>

14 messages 2011/11/01

[#40684] [ruby-trunk - Feature #5555][Open] rename #include? to #includes? — Alexey Muranov <muranov@...>

20 messages 2011/11/02

[#40688] [ruby-trunk - Bug #5556][Open] SIGHUP no longer ignored when sent to process group from a subprocess — Brian Ford <brixen@...>

12 messages 2011/11/02

[#40706] [ruby-trunk - Feature #5562][Open] Improvement of Windows IO performance — Hiroshi Shirosaki <h.shirosaki@...>

39 messages 2011/11/03

[#40737] [ruby-trunk - Bug #5570][Open] Encoding of environment variables on Windows — Nikolai Weibull <now@...>

11 messages 2011/11/04

[#40748] Proposal for sustainable branch maintenance — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

14 messages 2011/11/05

[#40770] [ruby-trunk - Feature #5578][Open] Embedded YAML for Ruby 2.0 — Thomas Sawyer <transfire@...>

17 messages 2011/11/06

[#40806] [ruby-trunk - Feature #5583][Open] Optionally typing — Yasushi ANDO <andyjpn@...>

21 messages 2011/11/07

[#40824] [ruby-trunk - Feature #5588][Open] add negation flag (v) to Regexp — Suraj Kurapati <sunaku@...>

38 messages 2011/11/08

[#40865] IO.copy_stream creates files with restrictive permissions — Eric Wong <normalperson@...>

I'm not sure if this is a bug or intended as spec.

16 messages 2011/11/09
[#41151] Re: IO.copy_stream creates files with restrictive permissions — Tanaka Akira <akr@...> 2011/11/19

2011/11/9 Eric Wong <[email protected]>:

[#41166] Re: IO.copy_stream creates files with restrictive permissions — KOSAKI Motohiro <kosaki.motohiro@...> 2011/11/20

>> I noticed when a file name argument is passed to the IO.copy_stream, the

[#41168] Re: IO.copy_stream creates files with restrictive permissions — Clifford Heath <clifford.heath@...> 2011/11/20

On 20/11/2011, at 5:09 PM, KOSAKI Motohiro wrote:

[#41176] Re: IO.copy_stream creates files with restrictive permissions — Tanaka Akira <akr@...> 2011/11/21

2011/11/20 Clifford Heath <[email protected]>:

[#41180] Re: IO.copy_stream creates files with restrictive permissions — KOSAKI Motohiro <kosaki.motohiro@...> 2011/11/21

>> I think documentation is the wrong answer. The security defects are not caused

[#40908] [ruby-trunk - Feature #5607][Open] Inconsistent reaction in Range of String — Yen-Nan Lin <redmine@...>

15 messages 2011/11/10

[#40941] [ruby-trunk - Feature #5617][Open] Allow install RubyGems into dediceted directory — Vit Ondruch <v.ondruch@...>

22 messages 2011/11/11

[#40951] [Backport93 - Backport #5621][Open] Please backport thread-safe autoloading patch — Mike Perham <mperham@...>

25 messages 2011/11/12
[#40971] [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Mike Perham <mperham@...> 2011/11/12

[#40972] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Yehuda Katz <wycats@...> 2011/11/12

Unfortunately ruby-head has a deadlock in one of my go-to scenarios for

[#40976] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Hiroshi Nakamura <nahi@...> 2011/11/13

-----BEGIN PGP SIGNED MESSAGE-----

[#41128] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Charles Oliver Nutter <headius@...> 2011/11/18

On Sat, Nov 12, 2011 at 7:24 PM, Hiroshi Nakamura <[email protected]> wrote:

[#41129] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Hiroshi Nakamura <nahi@...> 2011/11/18

-----BEGIN PGP SIGNED MESSAGE-----

[#41142] Re: [Backport93 - Backport #5621] Please backport thread-safe autoloading patch — Charles Oliver Nutter <headius@...> 2011/11/18

On Fri, Nov 18, 2011 at 12:15 AM, Hiroshi Nakamura <[email protected]> wro=

[#40982] [ruby-trunk - Bug #5625][Open] Remove profanity and pejoratives — Andrew Grimm <andrew.j.grimm@...>

30 messages 2011/11/13

[#41004] [ruby-trunk - Feature #5628][Open] Module#basename — Thomas Sawyer <transfire@...>

18 messages 2011/11/14

[#41024] [ruby-trunk - Feature #5632][Open] Attempt to open included class shades it instead. — Boris Stitnicky <boris@...>

12 messages 2011/11/14

[#41025] Proposal to add new methods: positive? negative? natural? — JosFrancisco Calvo Moreno <josefranciscocalvo@...>

Hi all!

11 messages 2011/11/14
[#41027] Re: Proposal to add new methods: positive? negative? natural? — Jeremy Evans <code@...> 2011/11/14

On 11/15 12:58, Jos? Francisco Calvo Moreno wrote:

[#41031] Re: Proposal to add new methods: positive? negative? natural? — JosFrancisco Calvo Moreno <josefranciscocalvo@...> 2011/11/14

Hi Jeremy,

[#41038] [ruby-trunk - Bug #5634][Open] yield and binding — Thomas Sawyer <transfire@...>

17 messages 2011/11/14

[#41086] [ruby-trunk - Feature #5644][Open] add Enumerable#exclude? antonym — Suraj Kurapati <sunaku@...>

14 messages 2011/11/17

[#41175] [ruby-trunk - Feature #5654][Open] Introduce global lock to avoid concurrent require — Hiroshi Nakamura <nakahiro@...>

12 messages 2011/11/21

[#41200] [ruby-trunk - Bug #5659][Open] bug releasing a gem created with rails 3.1 — Vinicius Gati <viniciusgati@...>

14 messages 2011/11/22

[#41212] [ruby-trunk - Feature #5662][Open] inject-accumulate, or Haskell's mapAccum* — Edvard Majakari <edvard.majakari@...>

12 messages 2011/11/22

[#41213] [ruby-trunk - Bug #5663][Open] Combined map/select method — Yehuda Katz <wycats@...>

62 messages 2011/11/22

[#41317] [ruby-trunk - Bug #5676][Open] miniruby linking error: undefined reference to ___stack_chk_guard — Martin Dürst <duerst@...>

10 messages 2011/11/27

[#41404] [ruby-trunk - Bug #5690][Open] Module#qualified_const_get — Yehuda Katz <wycats@...>

31 messages 2011/11/30

[ruby-core:41305] [ruby-trunk - Feature #5588] add negation flag (v) to Regexp

From: Yui NARUSE <naruse@...>
Date: 2011-11-26 12:15:12 UTC
List: ruby-core #41305
Issue #5588 has been updated by Yui NARUSE.


Suraj Kurapati wrote:
> Yui NARUSE wrote:
> > I doubt this function under the current implementation should be
> > flags because /ruby/v =~ "ruby"  is now useless example.  I think
> > people who want to use this negation flag should simply write
> > (?:(?!r).).
> 
> I respectfully disagree; for me, wholly negated regexps are more
> useful than partly negated ones.  Please see my use cases below.

Ah, you think /v is still wholly negated regexp, i see.

> > Moreover it has a bug, for example over
> > http://www.ruby-forum.com/topic/133413 If the suffix is not "dog"
> > but "tv", the regexp may be /cat((?:(?!cat).)*)tv/.  But as
> > following, it has false negative.
> >
> > irb(main):013:0> /cat((?:(?!cat).)*)tv/=~"cat foo bar catv"
> > => nil
> 
> It works if you add a word-boundary anchor at the end of "cat":
> 
> >> /cat((?:(?!cat\b).)*)tv/=~"cat foo bar catv"
> 0
> >> $&
> "cat foo bar catv"

This \b hack can only work when "t" and "v" is the same kind.
When replace "v" to "!", this won't work.

>> /cat((?:(?!cat\b).)*)t!/=~"cat foo bar cat!"
=> nil

> > The missing piece of your proposal is a use case.  All existing
> > examples are too artificial.  Design should prior to
> > implementations, and use cases should prior to designs.
> 
> Very true, thanks for this much needed criticism.
> 
> > I'm interesting in the idea negation flag.  But your proposal is
> > limited by implementation.
> 
> I only have use cases for wholly negated regexps (/.../v):
> 
> * some_enumerable.grep(/.../v)
> * some_string =~ some_regexp # where some_regexp given by user
> * case some_string; when /.../v; end
> 
> That is why I became confused when implementing partly negated
> regexps (/(?v:)/).

They seems reasonable.
If you suggested only wholly one with such use case, this discussion would be more simple.
----------------------------------------
Feature #5588: add negation flag (v) to Regexp
http://redmine.ruby-lang.org/issues/5588

Author: Suraj Kurapati
Status: Assigned
Priority: Normal
Assignee: Yui NARUSE
Category: core
Target version: 2.0.0


Please add a negation flag (v) to regexps which inverts them:

  "ruby" =~ /perl/v       #=> true   (turn on negation)
  "ruby" !~ /perl/v       #=> false  (turn on negation)
  "ruby" =~ /(?v:perl)/   #=> true   (turn on negation)
  "ruby" !~ /(?v:perl)/   #=> false  (turn on negation)
  "ruby" =~ /(?-v:perl)/  #=> false  (turn off negation)
  "ruby" !~ /(?-v:perl)/  #=> true   (turn off negation)

The flag name "v" comes from the ex(1) command of the same name.

This has beneficial applications where it is sometimes difficult
to construct what you want to match but much easier to construct
what you *do not* want to match.  Having this negation built in
the regexp itself would remove the need for us to change our 
Ruby code to process a regexp in a different way.  

For example, suppose that you are passing a regexp to the `--name`
command-line option of MiniTest.  This regexp tells MiniTest to
only run those tests whose names match.  If Ruby had a negation
flag on its regexps, then it would be suddenly trivial to make
MiniTest skip certain tests by negating the regexp we pass in.

In this manner, we get a beneficial feature without ever changing
our Ruby code (the codebase of MiniTest in this example).  :-)

Thanks for your consideration.


-- 
http://redmine.ruby-lang.org

In This Thread