Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
More Jobs
Recent
Cheap ruby block templating
Bindings on caller
Initial script execution very slow and skewing results
suppress ERB newlines
Keeping the database clean
Arrays, loops, strings...
Similar virtual attributes and their getters/setter
Check type is XML Serializable
Serena Collage slideshow
Shortest regular expression for matching a subdomain.
Popular
Caching Methods
How to find max, min of three numbers?
Similar virtual attributes and their getters/setter
Shortest regular expression for matching a subdomain.
Arrays, loops, strings...
Cheap ruby block templating
Check type is XML Serializable
Bindings on caller
Apache log file sorting
Tab-Switching in jQuery
Pastable version of
String#to_proc (by Reginald Braithwaite)
<div style="overflow:auto;border:solid 1px #ccc;background:#000;color:#F8F8F8"> <div class="section"> <pre style="float:left;margin:0 10px;border-right:0;color:#666;">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67</pre> <pre class="sunburst"><span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> String#to_proc</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span></span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> See http://weblog.raganwald.com/2007/10/stringtoproc.html ( Subscribe in a reader)</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span></span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> Ported from the String Lambdas in Oliver Steele's Functional Javascript</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> http://osteele.com/sources/javascript/functional/</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span></span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> This work is licensed under the MIT License:</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span></span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> (c) 2007 Reginald Braithwaite</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> Portions Copyright (c) 2006 Oliver Steele</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> </span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> Permission is hereby granted, free of charge, to any person obtaining</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> a copy of this software and associated documentation files (the</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> "Software"), to deal in the Software without restriction, including</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> without limitation the rights to use, copy, modify, merge, publish,</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> distribute, sublicense, and/or sell copies of the Software, and to</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> permit persons to whom the Software is furnished to do so, subject to</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> the following conditions:</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> </span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> The above copyright notice and this permission notice shall be</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> included in all copies or substantial portions of the Software.</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> </span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">#</span> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</span> <span style="color:#E28964;">class</span> <span style="text-decoration:underline;">String</span> <span style="color:#E28964;">unless</span> <span style="color:#65B042;"><span style="color:#65B042;">'</span><span style="color:#65B042;">'</span></span>.<span style="color:#89BDFF;">respond_to?</span>(<span style="color:#3387CC;"><span style="color:#3387CC;">:</span>to_proc</span>) <span style="color:#E28964;">def</span> <span style="color:#89BDFF;">to_proc</span> <span style="color:#E28964;">&</span>block params <span style="color:#E28964;">=</span> [] expr <span style="color:#E28964;">=</span> <span style="color:#3E87E3;">self</span> sections <span style="color:#E28964;">=</span> expr.<span style="color:#89BDFF;">split</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#CF7D34;">\s</span>*-><span style="color:#CF7D34;">\s</span>*</span><span style="color:#E9C062;"><span style="color:#E9C062;">/m</span></span>) <span style="color:#E28964;">if</span> sections.<span style="color:#89BDFF;">length</span> <span style="color:#E28964;">></span> <span style="color:#3387CC;">1</span> <span style="color:#E28964;">then</span> eval sections.<span style="color:#89BDFF;">reverse!</span>.<span style="color:#89BDFF;">inject</span> { |<span style="color:#3E87E3;">e</span>, <span style="color:#3E87E3;">p</span>| <span style="color:#65B042;"><span style="color:#65B042;">"</span>(Proc.new { |<span style="color:#DAEFA3;"><span style="color:#DAEFA3;">#{</span>p<span style="color:#DAEFA3;"><span style="color:#DAEFA3;">.</span><span style="color:#89BDFF;">split</span></span><span style="color:#DAEFA3;">(</span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#CF7D34;">\s</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#DAEFA3;">)</span><span style="color:#DAEFA3;"><span style="color:#DAEFA3;">.</span><span style="color:#89BDFF;">join</span></span><span style="color:#DAEFA3;">(</span><span style="color:#65B042;"><span style="color:#65B042;">'</span>, <span style="color:#65B042;">'</span></span><span style="color:#DAEFA3;">)</span><span style="color:#DAEFA3;">}</span></span>| <span style="color:#DAEFA3;"><span style="color:#DAEFA3;">#{</span>e<span style="color:#DAEFA3;">}</span></span> })<span style="color:#65B042;">"</span></span> }, block <span style="color:#E28964;">&&</span> block.<span style="color:#89BDFF;">binding</span> <span style="color:#E28964;">elsif</span> expr.<span style="color:#89BDFF;">match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#CF7D34;">\b</span>_<span style="color:#CF7D34;">\b</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>) eval <span style="color:#65B042;"><span style="color:#65B042;">"</span>Proc.new { |_| <span style="color:#DAEFA3;"><span style="color:#DAEFA3;">#{</span>expr<span style="color:#DAEFA3;">}</span></span> }<span style="color:#65B042;">"</span></span>, block <span style="color:#E28964;">&&</span> block.<span style="color:#89BDFF;">binding</span> <span style="color:#E28964;">else</span> leftSection <span style="color:#E28964;">=</span> expr.<span style="color:#89BDFF;">match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;">^<span style="color:#CF7D34;">\s</span>*<span style="color:#E9C062;"><span style="color:#E9C062;">(</span>?:<span style="color:#E9C062;"><span style="color:#E9C062;">[</span>+*<span style="color:#CF7D34;">\/</span>%&|<span style="color:#CF7D34;">\^</span><span style="color:#CF7D34;">\.</span>=<><span style="color:#CF7D34;">\[</span><span style="color:#E9C062;">]</span></span>|!=<span style="color:#E9C062;">)</span></span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/m</span></span>) rightSection <span style="color:#E28964;">=</span> expr.<span style="color:#89BDFF;">match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>+<span style="color:#CF7D34;">\-</span>*<span style="color:#CF7D34;">\/</span>%&|<span style="color:#CF7D34;">\^</span><span style="color:#CF7D34;">\.</span>=<>!<span style="color:#E9C062;">]</span></span><span style="color:#CF7D34;">\s</span>*$</span><span style="color:#E9C062;"><span style="color:#E9C062;">/m</span></span>) <span style="color:#E28964;">if</span> leftSection <span style="color:#E28964;">||</span> rightSection <span style="color:#E28964;">then</span> <span style="color:#E28964;">if</span> (leftSection) <span style="color:#E28964;">then</span> params.<span style="color:#89BDFF;">push</span>(<span style="color:#65B042;"><span style="color:#65B042;">'</span>$left<span style="color:#65B042;">'</span></span>) expr <span style="color:#E28964;">=</span> <span style="color:#65B042;"><span style="color:#65B042;">'</span>$left<span style="color:#65B042;">'</span></span> <span style="color:#E28964;">+</span> expr <span style="color:#E28964;">end</span> <span style="color:#E28964;">if</span> (rightSection) <span style="color:#E28964;">then</span> params.<span style="color:#89BDFF;">push</span>(<span style="color:#65B042;"><span style="color:#65B042;">'</span>$right<span style="color:#65B042;">'</span></span>) expr <span style="color:#E28964;">=</span> expr <span style="color:#E28964;">+</span> <span style="color:#65B042;"><span style="color:#65B042;">'</span>$right<span style="color:#65B042;">'</span></span> <span style="color:#E28964;">end</span> <span style="color:#E28964;">else</span> <span style="color:#3E87E3;">self</span>.<span style="color:#89BDFF;">gsub</span>( <span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#E9C062;"><span style="color:#E9C062;">(</span>?:<span style="color:#CF7D34;">\b</span><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>A-Z<span style="color:#E9C062;">]</span></span>|<span style="color:#CF7D34;">\.</span><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>a-zA-Z_$<span style="color:#E9C062;">]</span></span><span style="color:#E9C062;">)</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>a-zA-Z_$<span style="color:#CF7D34;">\d</span><span style="color:#E9C062;">]</span></span>*|<span style="color:#E9C062;"><span style="color:#E9C062;">[</span>a-zA-Z_$<span style="color:#E9C062;">]</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>a-zA-Z_$<span style="color:#CF7D34;">\d</span><span style="color:#E9C062;">]</span></span>*:|self|arguments|'<span style="color:#E9C062;"><span style="color:#E9C062;">(</span>?:<span style="color:#E9C062;"><span style="color:#E9C062;">[</span>^'<span style="color:#CF7D34;">\\</span><span style="color:#E9C062;">]</span></span>|<span style="color:#CF7D34;">\\</span>.<span style="color:#E9C062;">)</span></span>*'|"<span style="color:#E9C062;"><span style="color:#E9C062;">(</span>?:<span style="color:#E9C062;"><span style="color:#E9C062;">[</span>^"<span style="color:#CF7D34;">\\</span><span style="color:#E9C062;">]</span></span>|<span style="color:#CF7D34;">\\</span>.<span style="color:#E9C062;">)</span></span>*"</span><span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span>, <span style="color:#65B042;"><span style="color:#65B042;">'</span><span style="color:#65B042;">'</span></span> ).<span style="color:#89BDFF;">scan</span>( <span style="color:#E9C062;"><span style="color:#E9C062;">/</span></span><span style="color:#E9C062;"><span style="color:#E9C062;"><span style="color:#E9C062;">(</span><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>a-z_$<span style="color:#E9C062;">]</span></span><span style="color:#E9C062;"><span style="color:#E9C062;">[</span>a-z_$<span style="color:#CF7D34;">\d</span><span style="color:#E9C062;">]</span></span>*<span style="color:#E9C062;">)</span></span></span><span style="color:#E9C062;"><span style="color:#E9C062;">/i</span></span> ) <span style="color:#E28964;">do </span>|<span style="color:#3E87E3;">v</span>| params.<span style="color:#89BDFF;">push</span>(v) <span style="color:#E28964;">unless</span> params.<span style="color:#89BDFF;">include?</span>(v) <span style="color:#E28964;">end</span> <span style="color:#E28964;">end</span> eval <span style="color:#65B042;"><span style="color:#65B042;">"</span>Proc.new { |<span style="color:#DAEFA3;"><span style="color:#DAEFA3;">#{</span>params<span style="color:#DAEFA3;"><span style="color:#DAEFA3;">.</span><span style="color:#89BDFF;">join</span></span><span style="color:#DAEFA3;">(</span><span style="color:#65B042;"><span style="color:#65B042;">'</span>, <span style="color:#65B042;">'</span></span><span style="color:#DAEFA3;">)</span><span style="color:#DAEFA3;">}</span></span>| <span style="color:#DAEFA3;"><span style="color:#DAEFA3;">#{</span>expr<span style="color:#DAEFA3;">}</span></span> }<span style="color:#65B042;">"</span></span>, block <span style="color:#E28964;">&&</span> block.<span style="color:#89BDFF;">binding</span> <span style="color:#E28964;">end</span> <span style="color:#E28964;">end</span> <span style="color:#E28964;">end</span> <span style="color:#E28964;">end</span> </pre> </div> </div> <a href="http://refactormycode.com/codes/114-string-to_proc-by-reginald-braithwaite" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://refactormycode.com/images/small_logo.gif" style="border:0" /></a>