<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1 +1 @@
-Subproject commit 08d709f78b8c5b0fbeb7821e37fa53e69afcf433
+Subproject commit d221938a6401d956ac6cfdc892f9b1c11b1fa31a</diff>
      <filename>rack</filename>
    </modified>
    <modified>
      <diff>@@ -33,21 +33,26 @@ module Tap
             lines &lt;&lt; case value
             when Hash, Array
               &quot;#{indent}#{key}:\n#{yamlize(value, indent + '  ')}&quot;
+            when '#'
+              next
             else
               &quot;#{indent}#{key}: #{value}&quot;
             end
           end
-          lines.join(&quot;\n&quot;)
+          lines.empty? ? &quot;#{indent}{}&quot; : lines.join(&quot;\n&quot;)
         when Array
-          lines = obj.collect do |value|
-            case value
+          lines = []
+          obj.each do |value|
+            lines &lt;&lt; case value
             when Hash, Array
               &quot;#{indent}-\n#{yamlize(value, indent + '  ')}&quot;
+            when '#'
+              next
             else
               &quot;#{indent}- #{value}&quot;
             end
           end
-          lines.join(&quot;\n&quot;)
+          lines.empty? ? &quot;#{indent}[]&quot; : lines.join(&quot;\n&quot;)
         else
           obj
         end</diff>
      <filename>tap-server/lib/tap/controller/utils.rb</filename>
    </modified>
    <modified>
      <diff>@@ -136,45 +136,24 @@ module Tap
       # Helpers
       #########################
       
-      def render_config(name, configurable, values=nil)
-        module_render &quot;_configs.erb&quot;, configurable, 
+      def render_config(resource, name=&quot;&quot;)
+        klass = resource[:class]
+        values = resource[:config] || default_config(klass.configurations)
+        
+        module_render &quot;_configs.erb&quot;, klass, 
           :locals =&gt; {
             :name =&gt; name,
-            :configs =&gt; configurable.configurations, 
-            :values =&gt; values || default_config(configurable)
+            :configs =&gt; klass.configurations, 
+            :values =&gt; values
           }
       end
       
-      def default_config(configurable)
-        configs = configurable.configurations
-        Configurable::DelegateHash.new(configs).to_hash do |hash, key, value|
-          hash[key.to_s] = value
-        end
-      end
-      
-      def scrub_nils(schema)
-        resources = schema.tasks.values +
-          schema.joins.collect {|join| join[2] } +
-          schema.middleware
-        
-        resources.each do |resource|
-          scrub(resource['config'])
-        end
+      def default_config(configs)
+        Configurable::DelegateHash.new(configs).to_hash
       end
       
-      def scrub(obj)
-        case obj
-        when Hash
-          obj.delete_if do |key, value|
-            value ? scrub(value) : true
-          end
-        when Array
-          obj.delete_if do |value| 
-            value ? scrub(value) : true
-          end
-        end
-        
-        false
+      def format_yaml(object)
+        object == nil ? &quot;~&quot; : YAML.dump(object)[4...-1].strip
       end
       
       def update_schema(id)        </diff>
      <filename>tap-server/lib/tap/controllers/schema.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,16 @@
 &lt;dl class=&quot;configs&quot;&gt;
 &lt;% configs.each_pair do |key, config| %&gt;
 &lt;%  next if config[:type] == :hidden %&gt;
+&lt;%  config_name = &quot;#{name}[#{key.inspect}]&quot; %&gt;
+&lt;%  value = values[key] %&gt;
 &lt;%  if config.is_nest? %&gt;
-&lt;%  value = values[key.to_s] %&gt;
   &lt;dt class=&quot;name&quot;&gt;&lt;%= key %&gt;&lt;/dt&gt;
   &lt;dd class=&quot;nested-configs&quot;&gt;
+&lt;%    configurations = config.default(false).delegates %&gt;
 &lt;%=   module_render(&quot;_configs.erb&quot;, obj, :locals =&gt; {
-        :name =&gt; &quot;#{name}[#{key}]&quot;,
-        :configs =&gt; config.default(false).delegates, 
-        :values =&gt; value
+        :name =&gt; config_name,
+        :configs =&gt; configurations, 
+        :values =&gt; value || default_config(configurations)
       }) %&gt;
   &lt;/dd&gt;
 &lt;%  else %&gt;
@@ -19,11 +21,11 @@
         :file =&gt; config_template, 
         :locals =&gt; {
           :obj =&gt; obj,
-          :name =&gt; &quot;#{name}[#{key}]&quot;,
+          :name =&gt; config_name,
           :config =&gt; config,
           :value =&gt; value}) %&gt;
 &lt;%  else%&gt;
-  &lt;input name=&quot;&lt;%= name %&gt;&quot; type=&quot;text&quot; value=&quot;&lt;%= escape_html(value) %&gt;&quot; /&gt;
+  &lt;input name=&quot;&lt;%= config_name %&gt;&quot; type=&quot;text&quot; value=&quot;&lt;%= format_yaml(value) %&gt;&quot; /&gt;
 &lt;%  end %&gt;
   &lt;/dd&gt;
 &lt;%  end %&gt;</diff>
      <filename>tap-server/views/configurable/_configs.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,2 @@
-&lt;% value = value == true || value == &quot;true&quot; %&gt;
 &lt;input name=&quot;&lt;%= name %&gt;&quot; type=&quot;hidden&quot; value=&quot;false&quot; /&gt;
 &lt;input name=&quot;&lt;%= name %&gt;&quot; type=&quot;checkbox&quot; value=&quot;true&quot; &lt;%= value ? 'checked=&quot;true&quot;' : '' %&gt; /&gt;
\ No newline at end of file</diff>
      <filename>tap-server/views/configurable/_flag.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,6 @@
-&lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[][]&quot; value=&quot;&quot; /&gt;
+&lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[]&quot; value=&quot;#&quot; /&gt;
 &lt;select name=&quot;&lt;%= name %&gt;[]&quot; multiple=&quot;true&quot;&gt;
-&lt;% value.collect! {|val| stringify(val) } %&gt;
 &lt;% (config[:options] || []).each do |option| %&gt;
-&lt;%   option = stringify(option) %&gt;
-  &lt;option value=&quot;&lt;%= escape_html(option) %&gt;&quot; &lt;%= value.include?(option) ? &quot;selected='true' &quot; : &quot;&quot;%&gt;&gt;&lt;%= option %&gt;&lt;/option&gt;
+  &lt;option value=&quot;&lt;%= format_yaml(option) %&gt;&quot; &lt;%= value &amp;&amp; value.include?(option) ? &quot;selected='true' &quot; : &quot;&quot;%&gt;&gt;&lt;%= option %&gt;&lt;/option&gt;
 &lt;% end %&gt;
 &lt;/select&gt;
\ No newline at end of file</diff>
      <filename>tap-server/views/configurable/_list_select.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
 &lt;select name=&quot;&lt;%= name %&gt;&quot;&gt;
 &lt;% (config[:options] || []).each do |option| %&gt;
-&lt;%   option = stringify(option) %&gt;
-  &lt;option value=&quot;&lt;%= escape_html(option) %&gt;&quot; &lt;%= value == option ? &quot;selected='true' &quot; : &quot;&quot;%&gt;&gt;&lt;%= option %&gt;&lt;/option&gt;
+  &lt;option value=&quot;&lt;%= format_yaml(option) %&gt;&quot; &lt;%= value == option ? &quot;selected='true' &quot; : &quot;&quot;%&gt;&gt;&lt;%= option %&gt;&lt;/option&gt;
 &lt;% end %&gt;
 &lt;/select&gt;
\ No newline at end of file</diff>
      <filename>tap-server/views/configurable/_select.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,2 @@
-&lt;% value = value == true || value == &quot;true&quot; %&gt;
 &lt;input name=&quot;&lt;%= name %&gt;&quot; type=&quot;radio&quot; value=&quot;true&quot;  &lt;%= value  ? 'checked=&quot;true&quot; ' : '' %&gt;&gt;on&lt;/input&gt;
 &lt;input name=&quot;&lt;%= name %&gt;&quot; type=&quot;radio&quot; value=&quot;false&quot; &lt;%= !value ? 'checked=&quot;true&quot; ' : '' %&gt;&gt;off&lt;/input&gt;
\ No newline at end of file</diff>
      <filename>tap-server/views/configurable/_switch.erb</filename>
    </modified>
    <modified>
      <diff>@@ -105,19 +105,19 @@
 
 &lt;!-- configure form --&gt; 
 &lt;form id=&quot;configure_&lt;%= id %&gt;&quot; class=&quot;configure&quot; method=&quot;post&quot; action=&quot;&lt;%= uri(id) %&gt;&quot;&gt;
-  &lt;input type=&quot;hidden&quot; name=&quot;_method&quot; value=&quot;configure&quot; /&gt;
+  &lt;input type=&quot;hidden&quot; name=&quot;_method&quot; value=&quot;save&quot; /&gt;
   
   &lt;h2&gt;Configure:&lt;/h2&gt;
   
   &lt;h3&gt;Tasks&lt;/h3&gt;
   &lt;ul class=&quot;tasks&quot;&gt;
 &lt;% schema.tasks.each_pair do |key, task| %&gt;
-&lt;%  name = &quot;schema[tasks][#{key}]&quot; %&gt;
+&lt;%  name = &quot;schema[:tasks][#{key}]&quot; %&gt;
     &lt;li id=&quot;task_&lt;%= key %&gt;&quot;&gt;
       &lt;h3&gt;&lt;a href=&quot;#add_&lt;%= id %&gt;&quot;&gt;&lt;%= key %&gt;&lt;/a&gt;&lt;/h3&gt;
       
-      &lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[id]&quot; value=&quot;&lt;%= task['id'] %&gt;&quot;&gt;
-&lt;%=   render_config(&quot;#{name}[config]&quot;, task['class'], task['config']) %&gt;
+      &lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[:id]&quot; value=&quot;&lt;%= task[:id] %&gt;&quot;&gt;
+&lt;%=   render_config(task, &quot;#{name}[:config]&quot;) %&gt;
     &lt;/li&gt;
 &lt;% end %&gt;
   &lt;/ul&gt;
@@ -125,7 +125,7 @@
   &lt;h3&gt;Joins&lt;/h3&gt;
   &lt;ul class=&quot;joins&quot;&gt;
 &lt;% schema.joins.each_with_index do |(inputs, outputs, join), index| %&gt;
-&lt;%  name = &quot;schema[joins][]&quot; %&gt;
+&lt;%  name = &quot;schema[:joins][]&quot; %&gt;
     &lt;li id=&quot;join_&lt;%= index %&gt;&quot;&gt;
       &lt;h3&gt;&lt;a href=&quot;#add_&lt;%= id %&gt;&quot;&gt;&lt;%= index %&gt;&lt;/a&gt;&lt;/h3&gt;
 &lt;%    inputs.each do |input| %&gt;
@@ -134,8 +134,8 @@
 &lt;%    outputs.each do |output| %&gt;
       &lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[1][]&quot; value=&quot;&lt;%= output %&gt;&quot;&gt;
 &lt;%    end %&gt;
-      &lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[2][id]&quot; value=&quot;&lt;%= join['id'] || 'join' %&gt;&quot;&gt;
-&lt;%=   render_config(&quot;#{name}[2][config]&quot;, join['class'], join['config']) %&gt;
+      &lt;input type=&quot;hidden&quot; name=&quot;&lt;%= name %&gt;[2][:id]&quot; value=&quot;&lt;%= join[:id] || 'join' %&gt;&quot;&gt;
+&lt;%=   render_config(join, &quot;#{name}[2][:config]&quot;) %&gt;
     &lt;/li&gt;
 &lt;% end %&gt;
   &lt;/ul&gt;</diff>
      <filename>tap-server/views/tap/controllers/schema/entry.erb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f6349573397463fc9e68bbee68fc0c14d8bf183b</id>
    </parent>
  </parents>
  <author>
    <name>Simon Chiang</name>
    <email>simon.a.chiang@gmail.com</email>
  </author>
  <url>http://github.com/bahuvrihi/tap/commit/e9f4b75e47b6b9df86f4dc0affd18fb3f17bdf75</url>
  <id>e9f4b75e47b6b9df86f4dc0affd18fb3f17bdf75</id>
  <committed-date>2009-06-12T00:06:08-07:00</committed-date>
  <authored-date>2009-06-12T00:06:08-07:00</authored-date>
  <message>updated server for latest schema</message>
  <tree>b948bbf8967009a679b1d99effe49a1b4c4aac9e</tree>
  <committer>
    <name>Simon Chiang</name>
    <email>simon.a.chiang@gmail.com</email>
  </committer>
</commit>
