<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,5 @@
 ScrewUnit.configure do
-  port 8080
+  port 8181
   code_under_test_path &quot;javascript/lib&quot;
   specs_path &quot;javascript/spec&quot;
-end
\ No newline at end of file
+end</diff>
      <filename>.screwrc</filename>
    </modified>
    <modified>
      <diff>@@ -2,9 +2,9 @@ Disco = function() {
   this.doc = [];
 };
 
-$.extend(Disco, {
+Screw.$.extend(Disco, {
   inherit: function(layout, template) {
-    var merged_template = $.extend(true, {}, layout, template);
+    var merged_template = Screw.$.extend(true, {}, layout, template);
     
     merged_template.methods = merged_template.methods || {};
     
@@ -68,7 +68,7 @@ $.extend(Disco, {
   }
 });
 
-$.extend(Disco.prototype, {
+Screw.$.extend(Disco.prototype, {
   tag: function() {
     if(arguments.length &gt; 3) {
       throw(&quot;XmlBulider#tag does not accept more than three arguments&quot;);
@@ -165,7 +165,7 @@ $.extend(Disco.prototype, {
   to_view: function(template, initial_attributes) {
     var string = this.to_string();
     if (string == &quot;&quot;) return &quot;&quot;;
-    var post_processor = new Disco.PostProcessor($(string));
+    var post_processor = new Disco.PostProcessor(Screw.Screw.$(string));
     for(var i=0; i &lt; this.doc.length; i++) {
       var element = this.doc[i];
       element.post_process(post_processor);
@@ -182,7 +182,7 @@ Disco.OpenTag = function(tag_name, attributes) {
   this.attributes = attributes;
 }
 
-$.extend(Disco.OpenTag.prototype, {
+Screw.$.extend(Disco.OpenTag.prototype, {
   to_string: function() {
     var serialized_attributes = [];
     for(var attributeName in this.attributes) {
@@ -205,7 +205,7 @@ Disco.CloseTag = function(tag_name) {
   this.tag_name = tag_name;
 }
 
-$.extend(Disco.CloseTag.prototype, {
+Screw.$.extend(Disco.CloseTag.prototype, {
   to_string: function() {
     return &quot;&lt;/&quot; + this.tag_name + &quot;&gt;&quot;;
   },
@@ -219,7 +219,7 @@ Disco.Text = function(value) {
   this.value = value;
 }
 
-$.extend(Disco.Text.prototype, {
+Screw.$.extend(Disco.Text.prototype, {
   to_string: function() {
     return this.value;
   },
@@ -232,7 +232,7 @@ Disco.PostProcessorInstruction = function(function_name, arguments) {
   this.arguments = arguments;
 }
 
-$.extend(Disco.PostProcessorInstruction.prototype, {
+Screw.$.extend(Disco.PostProcessorInstruction.prototype, {
   to_string: function() {
     return &quot;&quot;;
   },
@@ -248,7 +248,7 @@ Disco.PostProcessor = function(root_view) {
   this.selector_stack = [0];
 }
 
-$.extend(Disco.PostProcessor.prototype, {
+Screw.$.extend(Disco.PostProcessor.prototype, {
   push: function() {
     this.add_child();
     this.selector_stack.push(0);
@@ -282,13 +282,13 @@ $.extend(Disco.PostProcessor.prototype, {
   close_view: function(template, initial_attributes) {
     var current_view = this.current_view();
     if (template &amp;&amp; template.methods) {
-      $.extend(current_view, template.methods);
+      Screw.Screw.$.extend(current_view, template.methods);
     }
     if (template &amp;&amp; template.configuration) {
       current_view.configuration = template.configuration;
     }
     if (initial_attributes) {
-      $.extend(current_view, initial_attributes);
+      Screw.Screw.$.extend(current_view, initial_attributes);
     }
     if (current_view.after_initialize) {
       current_view.after_initialize();</diff>
      <filename>javascript/lib/disco.js</filename>
    </modified>
    <modified>
      <diff>@@ -31,9 +31,9 @@ module(&quot;Screw&quot;, function(c) { with(c) {
   });
 }});
 
-$(function() {
+Screw.$(function() {
   Screw.Interface.load_preferences();
   var runner = Disco.build(Screw.Interface.Runner, {root: Screw.root_description()})
-  $('body').html(runner);
+  Screw.$('body').html(runner);
   runner.run();
 });
\ No newline at end of file</diff>
      <filename>javascript/lib/screw/interface.js</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,8 @@ module(&quot;Screw&quot;, function(c) { with(c) {
         if(actual == undefined) return false;
 
         if (expected instanceof Array) {
-          if (!(actual instanceof Array)) return false;
+          //if (!(actual instanceof Array) &amp;&amp; actual.length == null) return false;
+          if (actual.length == null) return false;
           for (var i = 0; i &lt; actual.length; i++)
             if (!Screw.Matchers.equal.match(expected[i], actual[i])) return false;
           return actual.length == expected.length;
@@ -78,6 +79,48 @@ module(&quot;Screw&quot;, function(c) { with(c) {
       }
     });
 
+    def('match_html', {
+      munge: function(mungee) {
+        if (mungee instanceof jQuery) {
+          mungee = mungee.html();
+        } else if (typeof(mungee) == &quot;string&quot;) {
+          var span = document.createElement(&quot;span&quot;);
+          span.innerHTML = mungee;
+          mungee = span.innerHTML;
+        }
+
+        var regEx = /\sjQuery\d+=['&quot;]\d+['&quot;]/g;
+        mungee = mungee.replace(regEx, &quot;&quot;);
+
+        return mungee;
+      },
+
+      match: function(expected, actual) {
+        var trimmedExpected = this.munge(expected);
+        var trimmedActual = this.munge(actual);
+        return trimmedActual.indexOf(trimmedExpected) &gt; -1;
+      },
+
+      failure_message: function(expected, actual, not) {
+        var trimmedExpected = this.munge(expected);
+        var trimmedActual = this.munge(actual);
+        return 'expected ' + $.print(trimmedActual, { max_string: 300 }) +
+               (not ? ' to not contain ' : ' to contain ') + $.print(trimmedExpected, { max_string: 300 });
+      }
+    });
+
+    def('be_blank', {
+      match: function(expected, actual) {
+        if (actual == undefined) return true;
+        if (typeof(actual) == &quot;string&quot;) actual = actual.replace(/^\s*(.*?)\s*$/, &quot;$1&quot;);
+        return Screw.Matchers.be_empty.match(expected, actual);
+      },
+
+      failure_message: function(expected, actual, not) {
+        return 'expected ' + $.print(actual) + (not ? ' to not be blank' : ' to be blank');
+      }
+    });
+
     def('be_empty', {
       match: function(expected, actual) {
         if (actual.length == undefined) throw(new Error(actual.toString() + &quot; does not respond to length&quot;));</diff>
      <filename>javascript/lib/screw/matchers.js</filename>
    </modified>
    <modified>
      <diff>@@ -52,6 +52,10 @@ Screw.Unit(function(c) { with(c) {
         });
       });
 
+      describe('when actual is an iterable Object', function() {
+        
+      });
+
       describe(&quot;when actual is a String&quot;, function() {
         it(&quot;does not match an Array with the same characters&quot;, function() {
           expect(&quot;123&quot;).to_not(equal, [&quot;1&quot;, &quot;2&quot;, &quot;3&quot;]);</diff>
      <filename>javascript/spec/matchers_spec.js</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,15 @@ module ScrewUnit
   module Resources
     class Dir &lt; File
       def locate(name)
+
+        # could refactor to its own method
+#        Configuration.custom_resources_locators.each do |custom_resource_locator|
+#          locator = custom_resource_locator.new(relative_path, absolute_path)
+#          if resource = locator.locate(name)
+#            return resource
+#          end
+#        end
+
         relative_child_path = &quot;#{relative_path}/#{name}&quot;.gsub(&quot;//&quot;, &quot;/&quot;)
         absolute_child_path = &quot;#{absolute_path}/#{name}&quot;.gsub(&quot;//&quot;, &quot;/&quot;)
 </diff>
      <filename>lib/screw_unit/resources/dir.rb</filename>
    </modified>
    <modified>
      <diff>@@ -47,6 +47,7 @@ module ScrewUnit
           &quot;/screw_unit_core/jquery-1.2.6.js&quot;,
           &quot;/screw_unit_core/jquery.print.js&quot;,
           &quot;/screw_unit_core/foundation.js&quot;,
+          &quot;/screw_unit_core/screw/jquery_mapper.js&quot;,  
           &quot;/screw_unit_core/screw/require.js&quot;,
           &quot;/screw_unit_core/screw/matchers.js&quot;,
           &quot;/screw_unit_core/screw.js&quot;,</diff>
      <filename>lib/screw_unit/resources/spec_suite.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,4 @@
-[ ] - change mock_function to take an optional function_name as its first argument (it should be able to take both a name and a function to call)
\ No newline at end of file
+[ ] - change mock_function to take an optional function_name as its first argument (it should be able to take both a name and a function to call)
+[ ] - add specs for jquery_mapper
+[ ] - add specs for match_html
+[ ] - screw specs no longer run... wtf
\ No newline at end of file</diff>
      <filename>todo</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>68b3eec08d2e83f673f3a1b1c02c84b9e39ec4ae</id>
    </parent>
  </parents>
  <author>
    <name>Bob Remeika</name>
    <email>grockit@grockit-03.(none)</email>
  </author>
  <url>http://github.com/nathansobo/screw-unit/commit/1d4576dd27d472801b93f6826559cf3d24c26558</url>
  <id>1d4576dd27d472801b93f6826559cf3d24c26558</id>
  <committed-date>2009-04-10T11:33:05-07:00</committed-date>
  <authored-date>2009-04-10T11:33:05-07:00</authored-date>
  <message>Added Screw.$ namespace for screw unit's jQuery instance;  Tentatively updated disco to use this new namespace within screw; Updated interface to use new Screw.$ jquery instance; Added be_blank and match_html matchers; Added rough sketch for plugin system</message>
  <tree>44a9d7d30fe3f51d37e9f9be0f08478dcec1b672</tree>
  <committer>
    <name>Bob Remeika</name>
    <email>grockit@grockit-03.(none)</email>
  </committer>
</commit>
