ruby-changes:40550
From: shugo <ko1@a...>
Date: Wed, 18 Nov 2015 10:08:25 +0900 (JST)
Subject: [ruby-changes:40550] shugo:r52629 (trunk): * doc/syntax/refinements.rdoc: update documentation to reflect
shugo 2015-11-18 10:08:19 +0900 (Wed, 18 Nov 2015) New Revision: 52629 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=52629 Log: * doc/syntax/refinements.rdoc: update documentation to reflect recent changes. [ci skip] [ruby-core:71466] [Misc #11681] Patch by James Adam Modified files: trunk/ChangeLog trunk/doc/syntax/refinements.rdoc Index: doc/syntax/refinements.rdoc =================================================================== --- doc/syntax/refinements.rdoc (revision 52628) +++ doc/syntax/refinements.rdoc (revision 52629) @@ -43,15 +43,21 @@ Activate the refinement with #using: https://github.com/ruby/ruby/blob/trunk/doc/syntax/refinements.rdoc#L43 == Scope -You may only activate refinements at top-level, not inside any class, module -or method scope. You may activate refinements in a string passed to -Kernel#eval that is evaluated at top-level. Refinements are active until the -end of the file or the end of the eval string, respectively. - -Refinements are lexical in scope. When control is transferred outside the -scope the refinement is deactivated. This means that if you require or load a -file or call a method that is defined outside the current scope the refinement -will be deactivated: +You may activate refinements at top-level, and inside classes and modules. +You may not activate refinements in method scope. Refinements are activated +until the end of the current class or module definition, or until the end of +the current file if used at the top-level. + +You may activate refinements in a string passed to Kernel#eval. Refinements +are active the end of the eval string. + +Refinements are lexical in scope. Refinements are only active within a scope +after the call to using. Any code before the using statement will not have the +refinement activated. + +When control is transferred outside the scope the refinement is deactivated. +This means that if you require or load a file or call a method that is defined +outside the current scope the refinement will be deactivated: class C end @@ -136,6 +142,26 @@ In a file: https://github.com/ruby/ruby/blob/trunk/doc/syntax/refinements.rdoc#L142 end # activated here +In a class: + + # not activated here + class Foo + # not activated here + def foo + # not activated here + end + using M + # activated here + def bar + # activated here + end + # activated here + end + # not activated here + +Note that the refinements in M are not activated automatically if the class +Foo is reopened later. + In eval: # not activated here @@ -182,24 +208,6 @@ called: https://github.com/ruby/ruby/blob/trunk/doc/syntax/refinements.rdoc#L208 p [{1=>2}, {3=>4}].to_json # prints "[{\"1\":2},{\"3\":4}]" -You may also activate refinements in a class or module definition, in which -case the refinements are activated from the point where using is called to -the end of the class or module definition: - - # not activated here - class Foo - # not activated here - using M - # activated here - def foo - # activated here - end - # activated here - end - # not activated here - -Note that the refinements in M are not activated automatically even if the class -Foo is reopened later. == Method Lookup Index: ChangeLog =================================================================== --- ChangeLog (revision 52628) +++ ChangeLog (revision 52629) @@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Nov 18 10:05:25 2015 Shugo Maeda <shugo@r...> + + * doc/syntax/refinements.rdoc: update documentation to reflect + recent changes. + [ci skip] [ruby-core:71466] [Misc #11681] Patch by James Adam + Wed Nov 18 09:50:21 2015 Naotoshi Seo <sonots@g...> * test/logger/test_logdevice.rb: Fix tests of logger to make it work on -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/