Sep 27
Todd Huss posted his thoughts on dealing with patches to dependencies that you rely on, in response to my Tweaking on the bleeding edge: Ruby vs. Java.
Sam Ruby found an issue in Rubys XmlMarkup builder.
He put up a fix for this which is very clean.
I much prefer this to a diff’d file for patch to run. Isn’t it a lot cleaner to see? A patch is real running code.
Also, since you are able to alias :foo :saved_foo you can even do something and call that old method!
#!/usr/bin/env ruby
#--
# Portions copyright 2004 by Jim Weirich (jim.weirichhouse.org).
# Portions copyright 2005 by Sam Ruby (rubys.intertwingly.net).
# All rights reserved.
# Permission is granted for use, copying, modification, distribution,
# and distribution of modified versions of this work as long as the
# above copyright notice is included.
#++
require 'config/environment'
require 'builder'
require 'test/unit'
class Builder::XmlMarkup < Builder::XmlBase
def _escape(text, extra={})
result = text.
gsub(%r{&}, '&').
gsub(%r{<}, '<').
gsub(%r{>}, '>')
extra.each_pair {|key,value| result.gsub!(key, value)}
return result
end
# Insert the attributes (given in the hash).
def _insert_attributes(attrs, order=[])
return if attrs.nil?
q = {'"' => '"'}
order.each do |k|
v = attrs[k]
@target << %{ #{k}="#{_escape(v,q)}"} if v
end
attrs.each do |k, v|
@target << %{ #{k}="#{_escape(v,q)}"} unless order.member?(k)
end
end
end
class TestEscaping < Test::Unit::TestCase
def setup
@xml = Builder::XmlMarkup.new
end
def test_element_gt
@xml.title('2>1')
assert_equal '<title>2>1</title>', @xml.target!
end
def test_element_amp
@xml.title('AT&T')
assert_equal '<title>AT&T</title>', @xml.target!
end
def test_element_amp2
@xml.title('&')
assert_equal '<title>&</title>', @xml.target!
end
def test_attr_less
@xml.a(:title => '2>1')
assert_equal '<a title="2>1"/>', @xml.target!
end
def test_attr_amp
@xml.a(:title => 'AT&T')
assert_equal '<a title="AT&T"/>', @xml.target!
end
def test_attr_quot
@xml.a(:title => '"x"')
assert_equal '<a title=""x""/>', @xml.target!
end
end

September 30th, 2005 at 2:43 pm
I thought this comment was a good description of how to transparently over-ride behaviour for a group of developers in Ruby. Now I better understand how you can quickly and safely fork a core library:
http://www.jroller.com/comments/thuss/Blog/forking_a_dependency_with_a#comments
June 5th, 2006 at 8:01 am
i want to ruby program to modifikasi my kernel
June 5th, 2006 at 8:07 am
i have plan to making clone my computer, i want linux program,but i have problem with my VGA card pci,please help me,how to making clone with linux,please send address to program ruby to modifikasi ruby patch.thanks b4.