<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -38,27 +38,28 @@ module KVC
   VERSION = &quot;0.0.2&quot;
 
   class &lt;&lt; self
+    def [](key)
+      if setting = KVC::Settings.find_by_key(key)
+        KVC::SettingsProxy.new setting
+      elsif KVC::Settings.strict_keys?
+        raise NoMethodError, &quot;undefined method `#{key}' for KVC:Module&quot;
+      end
+    end
+
+    def []=(key, value)
+      setting = KVC::Settings.find_or_initialize_by_key(key)
+      setting.update_attributes! :value =&gt; value
+    end
+
     private
 
     # Handles the key-value magic.
     def method_missing(method, *args, &amp;block)
       key = method.to_s
-      key.sub!(/^\[\](=?)$/) { &quot;#{args.shift}#{$1}&quot; }
-    
       if key.sub!(/=$/) {} # Is it a writer method?
-        returning args.shift do |value|
-          setting = KVC::Settings.find_or_initialize_by_key(key)
-          setting.update_attributes!(:value =&gt; value)
-        end
-      elsif setting = KVC::Settings.find_by_key(key) # Is it a reader?
-        if args.present?
-          error_message = &quot;wrong number of arguments (#{args.length} for 0)&quot;
-          raise ArgumentError, error_message
-        end
-    
-        KVC::SettingsProxy.new(setting)
-      elsif args.present? || KVC::Settings.strict_keys?
-        raise NoMethodError
+        self[key] = *args
+      else
+        self[key, *args]
       end
     end
   end</diff>
      <filename>lib/kvc.rb</filename>
    </modified>
    <modified>
      <diff>@@ -43,14 +43,12 @@ class KVC::Settings &lt; ActiveRecord::Base
 
   # Deserializes value from database.
   def value
-    @value ||= YAML.load(read_attribute(:value))
+    @value ||= YAML.load read_attribute(:value)
   end
 
   # Serializes value for database.
   def value=(input)
-    returning @value = input do
-      write_attribute :value, input.to_yaml
-    end
+    write_attribute :value, (@value = input).to_yaml
   end
 
   private</diff>
      <filename>lib/kvc/settings.rb</filename>
    </modified>
    <modified>
      <diff>@@ -26,7 +26,7 @@ class KVCTest &lt; ActiveSupport::TestCase
   end
 
   test &quot;method_missing should re-raise if there are arguments&quot; do
-    assert_raise NoMethodError do
+    assert_raise ArgumentError do
       KVC.this_should(&quot;not_work&quot;)
     end
   end</diff>
      <filename>test/kvc_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>95af3c33e00a34baebaee4d420bdd8b8c10c49ca</id>
    </parent>
  </parents>
  <author>
    <name>Stephen Celis</name>
    <email>stephen@stephencelis.com</email>
  </author>
  <url>http://github.com/stephencelis/kvc/commit/504f9ef42a345823839d2d7fc0520ce90628b8a0</url>
  <id>504f9ef42a345823839d2d7fc0520ce90628b8a0</id>
  <committed-date>2009-06-26T05:57:23-07:00</committed-date>
  <authored-date>2009-06-26T05:57:23-07:00</authored-date>
  <message>Simplify and clean up.</message>
  <tree>7e1498f8d8ffe9109b787cc3d41b2d905a9295d6</tree>
  <committer>
    <name>Stephen Celis</name>
    <email>stephen@stephencelis.com</email>
  </committer>
</commit>
