lib/bcdatabase.rb in bcdatabase-1.2.0 vs lib/bcdatabase.rb in bcdatabase-1.2.1

- old
+ new

@@ -109,22 +109,32 @@ end ## # The set of groups and entries returned by one call to {Bcdatabase.load}. class DatabaseConfigurations + ## + # @return [#call] a transform that copies a prefixed key's value + # to the name without the prefix. E.g., the built-in + # `:datamapper` transform is `prefix_remove_copy_transform('datamapper_')`. + def self.prefix_remove_copy_transform(prefix) + lambda { |entry, name, group| + entry.merge( + entry.keys.select { |k| k =~ /^#{prefix}/ }.inject({}) { |additions, k| + additions[k.sub(/^#{prefix}/, '')] = entry[k]; additions + } + ) + } + end + BUILT_IN_TRANSFORMS = { :key_defaults => lambda { |entry, name, group| { 'username' => name, 'database' => name }.merge(entry) }, :decrypt => lambda { |entry, name, group| entry.merge({ 'password' => Bcdatabase.decrypt(entry['epassword']) }) if entry['epassword'] }, - :datamapper => lambda { |entry, name, group| - entry.merge('adapter' => entry['datamapper_adapter']) if entry['datamapper_adapter'] - }, - :jruby => lambda { |entry, name, group| - entry.merge('adapter' => entry['jruby_adapter']) if entry['jruby_adapter'] - } + :datamapper => prefix_remove_copy_transform('datamapper_'), + :jruby => prefix_remove_copy_transform('jruby_') } def self.automatic_transforms @automatic_transforms ||= [ :key_defaults,