From e87e3db200e5b711237da8bcdc873044a984ad90 Mon Sep 17 00:00:00 2001 From: Bernerd Schaefer Date: Sat, 17 Jul 2010 16:45:19 -0500 Subject: XmlMini.rename_key emits valid xml with dasherize This resolves issues for libraries which use '_' prefixed keys in their attributes hash, such as Mongoid. A key like "_id" or "_type" will no longer be converted to "<-id>" and "<-type>". Signed-off-by: wycats --- activesupport/lib/active_support/xml_mini.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'activesupport/lib/active_support') diff --git a/activesupport/lib/active_support/xml_mini.rb b/activesupport/lib/active_support/xml_mini.rb index 38e20d32da..352172027b 100644 --- a/activesupport/lib/active_support/xml_mini.rb +++ b/activesupport/lib/active_support/xml_mini.rb @@ -129,12 +129,16 @@ module ActiveSupport camelize = options.has_key?(:camelize) && options[:camelize] dasherize = !options.has_key?(:dasherize) || options[:dasherize] key = key.camelize if camelize - key = key.dasherize if dasherize + key = _dasherize(key) if dasherize key end protected + def _dasherize(key) + key.gsub(/(?!^[_]*)_(?![_]*$)/, '-') + end + # TODO: Add support for other encodings def _parse_binary(bin, entity) #:nodoc: case entity['encoding'] -- cgit v1.2.3