Add some stuff to the String class to allow easy transformation to Regexp and in-place interpolation.
Interpolate any ’#{…}’ placeholders in the string within the given scope (a Binding object).
# File /Users/ged/source/ruby/Arrow/lib/arrow/monkeypatches.rb, line 61 61: def interpolate( scope ) 62: unless scope.is_a?( Binding ) 63: raise TypeError, "Argument to interpolate must be a Binding, not "\ 64: "a #{scope.class.name}" 65: end 66: 67: # $stderr.puts ">>> Interpolating '#{self}'..." 68: 69: copy = self.gsub( /"/, %q:\": ) 70: eval( '"' + copy + '"', scope ) 71: rescue Exception => err 72: nicetrace = err.backtrace.find_all {|frame| 73: /in `(interpolate|eval)'/i !~ frame 74: } 75: Kernel.raise( err, err.message, nicetrace ) 76: end
--- SEC00088
--- ""
--- - methods: - visibility: public aref: M000184 name: interpolate sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/monkeypatches.rb, line 61</span>\n\ 61: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">interpolate</span>( <span class=\"ruby-identifier\">scope</span> )\n\ 62: <span class=\"ruby-keyword kw\">unless</span> <span class=\"ruby-identifier\">scope</span>.<span class=\"ruby-identifier\">is_a?</span>( <span class=\"ruby-constant\">Binding</span> )\n\ 63: <span class=\"ruby-identifier\">raise</span> <span class=\"ruby-constant\">TypeError</span>, <span class=\"ruby-value str\">"Argument to interpolate must be a Binding, not "</span>\\\n\ 64: <span class=\"ruby-node\">"a #{scope.class.name}"</span>\n\ 65: <span class=\"ruby-keyword kw\">end</span>\n\ 66: \n\ 67: <span class=\"ruby-comment cmt\"># $stderr.puts ">>> Interpolating '#{self}'..."</span>\n\ 68: \n\ 69: <span class=\"ruby-identifier\">copy</span> = <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">gsub</span>( <span class=\"ruby-regexp re\">/"/</span>, <span class=\"ruby-value str\">%q:\\":</span> )\n\ 70: <span class=\"ruby-identifier\">eval</span>( <span class=\"ruby-value str\">'"'</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-identifier\">copy</span> <span class=\"ruby-operator\">+</span> <span class=\"ruby-value str\">'"'</span>, <span class=\"ruby-identifier\">scope</span> )\n\ 71: <span class=\"ruby-keyword kw\">rescue</span> <span class=\"ruby-constant\">Exception</span> =<span class=\"ruby-operator\">></span> <span class=\"ruby-identifier\">err</span>\n\ 72: <span class=\"ruby-identifier\">nicetrace</span> = <span class=\"ruby-identifier\">err</span>.<span class=\"ruby-identifier\">backtrace</span>.<span class=\"ruby-identifier\">find_all</span> {<span class=\"ruby-operator\">|</span><span class=\"ruby-identifier\">frame</span><span class=\"ruby-operator\">|</span>\n\ 73: <span class=\"ruby-regexp re\">/in `(interpolate|eval)'/i</span> <span class=\"ruby-operator\">!~</span> <span class=\"ruby-identifier\">frame</span>\n\ 74: }\n\ 75: <span class=\"ruby-constant\">Kernel</span>.<span class=\"ruby-identifier\">raise</span>( <span class=\"ruby-identifier\">err</span>, <span class=\"ruby-identifier\">err</span>.<span class=\"ruby-identifier\">message</span>, <span class=\"ruby-identifier\">nicetrace</span> )\n\ 76: <span class=\"ruby-keyword kw\">end</span>" m_desc: |- <p> Interpolate any ’#{…}’ placeholders in the string within the given <tt>scope</tt> (a Binding object). </p> params: ( scope ) - visibility: public aref: M000183 name: to_re sourcecode: " <span class=\"ruby-comment cmt\"># File /Users/ged/source/ruby/Arrow/lib/arrow/monkeypatches.rb, line 51</span>\n\ 51: <span class=\"ruby-keyword kw\">def</span> <span class=\"ruby-identifier\">to_re</span>( <span class=\"ruby-identifier\">casefold</span>=<span class=\"ruby-keyword kw\">false</span>, <span class=\"ruby-identifier\">extended</span>=<span class=\"ruby-keyword kw\">false</span> )\n\ 52: <span class=\"ruby-keyword kw\">return</span> <span class=\"ruby-constant\">Regexp</span>.<span class=\"ruby-identifier\">new</span>( <span class=\"ruby-keyword kw\">self</span>.<span class=\"ruby-identifier\">dup</span> )\n\ 53: <span class=\"ruby-keyword kw\">end</span>" m_desc: |- <p> Return the receiving String as a Regexp. </p> params: ( casefold=false, extended=false ) category: Instance type: Public
---
Generated with the Darkfish Rdoc Generator.