Commits

Kaspar Schiess committed e680161

Turning results into other things

Comments (0)

Files changed (2)

lib/par/result.rb

     def maybe
       self
     end
+    def as obj
+      Result.new(obj)
+    end
 
     def new obj
       self.class.new obj
     def to_s
       obj.to_s
     end
+    def inspect
+      "result(#{obj.inspect})"
+    end
 
     def <=> other
-      return obj <=> other.to_str if other.respond_to? :to_str
+      obj <=> other
     end
     include Comparable
 
       def bottom?
         true
       end
+      def as obj
+        self
+      end
     end
 
     class Top
       def bottom?
         false
       end
+      def as obj
+        Result.new(obj)
+      end
     end
   end
 end

spec/lib/par/result_spec.rb

     it 'converts to a string (by delegating to obj)' do 
       ('a' + r).should == 'ar'
     end
+    it "allows replacing contents using .as(obj)" do
+      r.as(nil).should == nil
+    end 
   end
   context 'given 2 results' do
     let(:a) { result 'foo' }
     it "can be tested for bottom?" do 
       bottom.should be_bottom
     end
+    it "swallows .as(obj)" do
+      bottom.as('something').should == bottom
+    end 
   end
   context '.top' do
     let(:any) { result('any') }
     it 'should not be bottom' do 
       top.should_not be_bottom
     end
+    it 'allows turning into an object' do
+      top.as('something').should == 'something'
+    end
   end
 end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.