Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Some smallish updates #9

Open
wants to merge 12 commits into from

2 participants

@d-Pixie

Hi.

I'm not sure if you want updates in the official repo or if you'd rather people run with it. But the changes I made are really quite generic and you might like them. It's all in the commits ofc but here is the short list:

  • Changed formatters to use call instead of format so one can use procs and lambdas as formatters.
  • Removed use of global $; in favor of a Differ.separator class constant.
  • Updated Readme to reflect that you can use regex as separator (including the difference between including a capture group and not).
  • Removed rspec config block (since it was empty and used the deprecated syntax).
  • Revamped the readme and converted it to markdown.

If you like it please merge. I will add some new features in the coming weeks and would be happy to restructure the code a bit more, if you want.

All the best!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Jun 3, 2013
  1. Converted README to markdown and added explicit syntax highlighting h…

    Jonas Schubert Erlandsson authored
    …ints for code blocks
  2. Removed empty config block to silence rspec deprication warning

    Jonas Schubert Erlandsson authored
  3. Converted README to markdown and added explicit syntax highlighting h…

    Jonas Schubert Erlandsson authored
    …ints for code blocks
  4. Changes use of global $; to class var Differ.separator

    Jonas Schubert Erlandsson authored
  5. Fixes block quote in readme

    Jonas Schubert Erlandsson authored
  6. Fixes a headline and code comments in readme

    Jonas Schubert Erlandsson authored
  7. Adds bundler instructions to install in readme

    Jonas Schubert Erlandsson authored
  8. Adds usage example of regexp separator and edits format of readme

    Jonas Schubert Erlandsson authored
  9. Slimms down the code examples in the readme

    Jonas Schubert Erlandsson authored
  10. Added capture group example to regex in readme

    Jonas Schubert Erlandsson authored
  11. Changed formatters to use call instead of format so you can use procs…

    Jonas Schubert Erlandsson authored
    … and lambdas as formatters
Commits on Jun 4, 2013
  1. Updates gemspec, fixes typo in readme, changes versioning handling an…

    Jonas Schubert Erlandsson authored
    …d removes Rakefile
This page is out of date. Refresh to see the latest.
View
158 README.md
@@ -0,0 +1,158 @@
+# Differ
+
+> As streams of text swirled before the young man's eyes, his mind swam with thoughts of many things. They would have to wait, however, as he focussed his full concentration on the shifting patterns ahead of him. A glint of light reflecting off a piece of buried code caught his eye and any hope he had was lost. For the very moment he glanced aside, the landscape became Different.
+> The young man gave a small sigh and trudged onward in solemn resignation, fated to wander the desolate codebanks in perpetuity.
+
+Differ is a flexible, pure-Ruby diff library, suitable for use in both command
+line scripts and web applications. The flexibility comes from the fact that
+diffs can be built at completely arbitrary levels of granularity (some common
+ones are built-in), and can be output in a variety of formats.
+
+## Installation
+
+Add this to your gemfile if you use bundler
+
+```ruby
+gem 'differ'
+```
+
+and bundle to install
+
+```bash
+bundle install
+```
+
+or install it manually
+
+```bash
+sudo gem install differ
+```
+
+## How do I use this thing?
+
+There are a number of ways to use Differ, depending on your situation and needs. Lets examplify:
+
+```ruby
+require 'differ'
+
+@original = "Epic lolcat fail!"
+@current = "Epic wolfman fail!"
+```
+
+There are a number of built-in diff_by_* methods to choose from for standard use:
+
+```ruby
+Differ.diff_by_line(@current, @original)
+# => {"Epic lolcat fail!" >> "Epic wolfman fail!"}
+
+Differ.diff_by_word(@current, @original)
+# => Epic {"lolcat" >> "wolfman"} fail!
+
+Differ.diff_by_char(@current, @original)
+# => Epic {+"wo"}l{-"olcat "}f{+"m"}a{+"n fa"}il!
+```
+
+### Ok, but that doesn't quite cover my case, I have to split by "whatever".
+
+No problem, you can call diff directly and supply your own boundary string:
+
+```ruby
+Differ.diff(@current, @original) # Implicitly by line by default
+# => {"Epic lolcat fail!" >> "Epic wolfman fail!"}
+
+Differ.diff(@current, @original, 'i')
+# => Epi{"c lolcat fa" >> "c wolfman fa"}il
+```
+
+### Yeah, thats nice. But a simple string might not always cut it...
+
+Well, you can supply a regex instead of your string if you have to:
+
+```ruby
+Differ.diff(@original, @current, /[a-z]i/)
+# => E{"c wolfman f" >> "c lolcat f"}l!
+```
+
+Include a capture group if you want to keep the separator:
+
+```ruby
+Differ.diff(@original, @current, /([a-z]i)/)
+# => Epi{"c wolfman f" >> "c lolcat f"}ail!
+```
+
+### Ok, ok, but I don't like having to write "Differ" everywhere.
+
+If you would like something a little more inline you can `require 'differ/string'` to get some added inline string magic:
+
+```ruby
+@current.diff(@original) # Implicitly by line by default
+# => {"Epic lolcat fail!" >> "Epic wolfman fail!"}
+```
+
+Or a lot more inline:
+
+```ruby
+@current - @original # Implicitly by line by default
+# => {"Epic lolcat fail!" >> "Epic wolfman fail!"}
+
+Differ.separator = ' ' # Custom string
+@current - @original
+# => Epic {"lolcat" >> "wolfman"} fail!
+
+Differ.separator = /[a-z]i/ # Custom regex without capture group
+@original - @current
+# => E{"c wolfman f" >> "c lolcat f"}l!
+
+Differ.separator = /([a-z]i)/ # Custom regex with capture group
+@original - @current
+# => Epi{"c wolfman f" >> "c lolcat f"}ail!
+```
+
+So we've pretty much got you covered.
+
+## What about output formatting?
+
+Need a different output format? We've got a few of those too:
+
+```ruby
+Differ.format = :ascii # Default
+Differ.format = :color
+Differ.format = :html
+
+Differ.format = MyCustomFormatModule
+```
+
+The formatter must respond to the call method that takes an instant of the Change class as an argument and returns a string.
+
+### But I don't want to change the system-wide default for only a single diff output!
+
+Yeah, we either:
+
+```ruby
+diff = @current - @original
+diff.format_as(:color)
+```
+
+Or with your own formatter:
+
+```ruby
+diff = @current - @original
+diff.format_as(->(c){c.to_s})
+```
+
+## Copyright
+
+Copyright (c) 2009 Pieter Vande Bruggen.
+
+(The GIFT License, v1)
+
+Permission is hereby granted to use this software and/or its source code for
+whatever purpose you should choose. Seriously, go nuts. Use it for your personal
+RSS feed reader, your wildly profitable social network, or your mission to Mars.
+
+I don't care, it's yours. Change the name on it if you want -- in fact, if you
+start significantly changing what it does, I'd rather you did! Make it your own
+little work of art, complete with a stylish flowing signature in the corner. All
+I really did was give you the canvas. And my blessing.
+
+> Know always right from wrong, and let others see your good works.
View
99 README.rdoc
@@ -1,99 +0,0 @@
-= Differ
-
- As streams of text swirled before the young man's eyes, his mind swam with
- thoughts of many things. They would have to wait, however, as he focussed his
- full concentration on the shifting patterns ahead of him. A glint of light
- reflecting off a piece of buried code caught his eye and any hope he had was
- lost. For the very moment he glanced aside, the landscape became Different.
- The young man gave a small sigh and trudged onward in solemn resignation,
- fated to wander the desolate codebanks in perpetuity.
-
-Differ is a flexible, pure-Ruby diff library, suitable for use in both command
-line scripts and web applications. The flexibility comes from the fact that
-diffs can be built at completely arbitrary levels of granularity (some common
-ones are built-in), and can be output in a variety of formats.
-
-== Installation
-
- sudo gem install differ
-
-== Usage
-
-There are a number of ways to use Differ, depending on your situation and needs.
-
- @original = "Epic lolcat fail!"
- @current = "Epic wolfman fail!"
-
-You can call the Differ module directly.
-
- require 'differ'
-
-There are a number of built-in diff methods to choose from...
-
- @diff = Differ.diff_by_line(@current, @original)
- # => "{"Epic lolcat fail!" >> "Epic wolfman fail!"}"
-
- @diff = Differ.diff_by_word(@current, @original)
- # => "Epic {"lolcat" >> "wolfman"} fail!"
-
- @diff = Differ.diff_by_char(@current, @original)
- # => "Epic {+"wo"}l{-"olcat "}f{+"m"}a{+"n fa"}il!"
-
-... or call #diff directly and supply your own boundary string!
-
- @diff = Differ.diff(@current, @original) # implicitly by line!
- # => "{"Epic lolcat fail!" >> "Epic wolfman fail!"}"
-
- @diff = Differ.diff(@current, @original, 'i')
- # => "Epi{"c lolcat fa" >> "c wolfman fa"}il"
-
-If you would like something a little more inline...
-
- require 'differ/string'
-
- @diff = @current.diff(@original) # implicitly by line!
- # => "{"Epic lolcat fail!" >> "Epic wolfman fail!"}"
-
-... or a lot more inline...
-
- @diff = (@current - @original) # implicitly by line!
- # => "{"Epic lolcat fail!" >> "Epic wolfman fail!"}"
-
- $; = ' '
- @diff = (@current - @original)
- # => "Epic {"lolcat" >> "wolfman"} fail!"
-
-... we've pretty much got you covered.
-
-=== Output Formatting
-
-Need a different output format? We've got a few of those too.
-
- Differ.format = :ascii # <- Default
- Differ.format = :color
- Differ.format = :html
-
- Differ.format = MyCustomFormatModule
-
-Don't want to change the system-wide default for only a single diff output?
-Yeah, me either.
-
- @diff = (@current - @original)
- @diff.format_as(:color)
-
-== Copyright
-
-Copyright (c) 2009 Pieter Vande Bruggen.
-
-(The GIFT License, v1)
-
-Permission is hereby granted to use this software and/or its source code for
-whatever purpose you should choose. Seriously, go nuts. Use it for your personal
-RSS feed reader, your wildly profitable social network, or your mission to Mars.
-
-I don't care, it's yours. Change the name on it if you want -- in fact, if you
-start significantly changing what it does, I'd rather you did! Make it your own
-little work of art, complete with a stylish flowing signature in the corner. All
-I really did was give you the canvas. And my blessing.
-
- Know always right from wrong, and let others see your good works.
View
38 Rakefile
@@ -1,38 +0,0 @@
-require 'rake'
-
-begin
- require 'jeweler'
- Jeweler::Tasks.new do |gem|
- gem.name = "differ"
- gem.summary = "A simple gem for generating string diffs"
- gem.email = "pvande@gmail.com"
- gem.homepage = "http://github.com/pvande/differ"
- gem.authors = [ "Pieter van de Bruggen" ]
- end
-rescue LoadError
- puts "Jeweler not available. Install it with: gem install jeweler"
-end
-
-require 'rake/rdoctask'
-Rake::RDocTask.new do |rdoc|
- rdoc.rdoc_dir = 'rdoc'
- rdoc.title = 'differ'
- rdoc.options << '--line-numbers' << '--inline-source'
- rdoc.rdoc_files.include('README*')
- rdoc.rdoc_files.include('lib/**/*.rb')
-end
-
-require 'spec/rake/spectask'
-Spec::Rake::SpecTask.new(:spec) do |spec|
- spec.libs << 'lib' << 'spec'
- spec.spec_files = FileList['spec/**/*_spec.rb']
-end
-
-Spec::Rake::SpecTask.new(:rcov) do |spec|
- spec.libs << 'lib' << 'spec'
- spec.pattern = 'spec/**/*_spec.rb'
- spec.rcov = true
-end
-
-
-task :default => :spec
View
4 VERSION.yml
@@ -1,4 +0,0 @@
----
-:patch: 2
-:major: 0
-:minor: 1
View
80 differ.gemspec
@@ -1,63 +1,21 @@
-# Generated by jeweler
-# DO NOT EDIT THIS FILE DIRECTLY
-# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
-# -*- encoding: utf-8 -*-
+# coding: utf-8
+lib = File.expand_path('../lib', __FILE__)
+$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
+require 'differ/version'
-Gem::Specification.new do |s|
- s.name = %q{differ}
- s.version = "0.1.2"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
- s.authors = ["Pieter van de Bruggen"]
- s.date = %q{2011-02-17}
- s.email = %q{pvande@gmail.com}
- s.extra_rdoc_files = [
- "README.rdoc"
- ]
- s.files = [
- "README.rdoc",
- "Rakefile",
- "VERSION.yml",
- "differ.gemspec",
- "lib/differ.rb",
- "lib/differ/change.rb",
- "lib/differ/diff.rb",
- "lib/differ/format/ascii.rb",
- "lib/differ/format/color.rb",
- "lib/differ/format/html.rb",
- "lib/differ/string.rb",
- "spec/differ/change_spec.rb",
- "spec/differ/diff_spec.rb",
- "spec/differ/format/ascii_spec.rb",
- "spec/differ/format/color_spec.rb",
- "spec/differ/format/html_spec.rb",
- "spec/differ/string_spec.rb",
- "spec/differ_spec.rb",
- "spec/spec_helper.rb"
- ]
- s.homepage = %q{http://github.com/pvande/differ}
- s.require_paths = ["lib"]
- s.rubygems_version = %q{1.3.7}
- s.summary = %q{A simple gem for generating string diffs}
- s.test_files = [
- "spec/differ/change_spec.rb",
- "spec/differ/diff_spec.rb",
- "spec/differ/format/ascii_spec.rb",
- "spec/differ/format/color_spec.rb",
- "spec/differ/format/html_spec.rb",
- "spec/differ/string_spec.rb",
- "spec/differ_spec.rb",
- "spec/spec_helper.rb"
- ]
-
- if s.respond_to? :specification_version then
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
- s.specification_version = 3
-
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
- else
- end
- else
- end
-end
+Gem::Specification.new do |spec|
+ spec.name = "differ"
+ spec.version = Differ::VERSION
+ spec.authors = ["Pieter van de Bruggen", "Jonas Schubert Erlandsson"]
+ spec.date = %q{2011-02-17}
+ spec.email = ["pvande@gmail.com", "jonas.schubert.erlandsson@my-codeworks.com"]
+ spec.description = "A simple gem for generating string diffs"
+ spec.summary = "A simple gem for generating string diffs"
+ spec.homepage = "http://github.com/pvande/differ"
+ spec.license = "MIT"
+ spec.files = `git ls-files`.split($/)
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
+ spec.require_paths = ["lib"]
+end
View
38 lib/differ.rb
@@ -7,20 +7,29 @@
module Differ
class << self
- def diff(target, source, separator = "\n")
- old_sep, $; = $;, separator
+ def separator=(separator)
+ @@separator = separator
+ end
+
+ def separator
+ @@separator
+ end
+
+ def diff(target, source, new_sep = "\n")
+ old_sep = self.separator
+ self.separator = new_sep
- target = target.split(separator)
- source = source.split(separator)
+ target = target.split(new_sep)
+ source = source.split(new_sep)
- $; = '' if separator.is_a? Regexp
+ self.separator = '' if new_sep.is_a? Regexp
@diff = Diff.new
advance(target, source) until source.empty? || target.empty?
@diff.insert(*target) || @diff.delete(*source)
return @diff
ensure
- $; = old_sep
+ self.separator = old_sep
end
def diff_by_char(to, from)
@@ -44,13 +53,16 @@ def format
end
def format_for(f)
- case f
- when Module then f
- when :ascii then Format::Ascii
- when :color then Format::Color
- when :html then Format::HTML
- when nil then nil
- else raise "Unknown format type #{f.inspect}"
+ if f.respond_to? :call
+ f
+ else
+ case f
+ when :ascii then Format::Ascii
+ when :color then Format::Color
+ when :html then Format::HTML
+ when nil then nil
+ else raise "Unknown format type #{f.inspect}"
+ end
end
end
View
2  lib/differ/change.rb
@@ -19,7 +19,7 @@ def change?
end
def to_s
- Differ.format.format(self)
+ Differ.format.call(self)
end
alias :inspect :to_s
View
4 lib/differ/diff.rb
@@ -76,7 +76,7 @@ def format_as(f)
@raw.inject('') do |sum, part|
part = case part
when String then part
- when Change then f.format(part)
+ when Change then f.call(part)
end
sum << part
end
@@ -89,7 +89,7 @@ def raw_array
private
def sep
- "#{$;}"
+ "#{Differ.separator}"
end
end
end
View
2  lib/differ/format/ascii.rb
@@ -2,7 +2,7 @@ module Differ
module Format
module Ascii
class << self
- def format(change)
+ def call(change)
(change.change? && as_change(change)) ||
(change.delete? && as_delete(change)) ||
(change.insert? && as_insert(change)) ||
View
2  lib/differ/format/color.rb
@@ -2,7 +2,7 @@ module Differ
module Format
module Color
class << self
- def format(change)
+ def call(change)
(change.change? && as_change(change)) ||
(change.delete? && as_delete(change)) ||
(change.insert? && as_insert(change)) ||
View
2  lib/differ/format/html.rb
@@ -2,7 +2,7 @@ module Differ
module Format
module HTML
class << self
- def format(change)
+ def call(change)
(change.change? && as_change(change)) ||
(change.delete? && as_delete(change)) ||
(change.insert? && as_insert(change)) ||
View
2  lib/differ/string.rb
@@ -1,7 +1,7 @@
module Differ
module StringDiffer
def diff(old)
- Differ.diff(self, old, $; || "\n")
+ Differ.diff(self, old, Differ.separator || "\n")
end
alias :- :diff
end
View
3  lib/differ/version.rb
@@ -0,0 +1,3 @@
+module Differ
+ VERSION = "0.1.3"
+end
View
6 spec/differ/change_spec.rb
@@ -2,7 +2,7 @@
describe Differ::Change do
before(:each) do
- @format = Module.new { def self.format(c); end }
+ @format = Module.new { def self.call(c); end }
Differ.format = @format
end
@@ -20,7 +20,7 @@
end
it 'should stringify to ""' do
- @format.should_receive(:format).once.and_return('')
+ @format.should_receive(:call).once.and_return('')
@change.to_s.should == ''
end
end
@@ -76,7 +76,7 @@
end
it "should stringify via the current format's #format method" do
- @format.should_receive(:format).once
+ @format.should_receive(:call).once
Differ::Change.new.to_s
end
end
View
78 spec/differ/diff_spec.rb
@@ -2,7 +2,7 @@
describe Differ::Diff do
before(:each) do
- $; = nil
+ Differ.separator = nil
@diff = Differ::Diff.new
end
@@ -15,14 +15,14 @@
diff('a', 'b', 'c').to_s.should == 'abc'
end
- it 'should concatenate without regard for the $;' do
- $; = '*'
+ it 'should concatenate without regard for the Differ.separator' do
+ Differ.separator = '*'
diff('a', 'b', 'c').to_s.should == 'abc'
end
it 'should delegate insertion changes to Differ#format' do
i = +'b'
- @format.should_receive(:format).once.with(i).and_return('!')
+ @format.should_receive(:call).once.with(i).and_return('!')
diff('a', i, 'c').to_s.should == 'a!c'
end
end
@@ -30,12 +30,12 @@
describe '#format_as' do
before(:each) do
@change = +'b'
- Differ.format = Module.new { def self.format(c); raise :error; end }
- @format = Module.new { def self.format(c); end }
+ Differ.format = Module.new { def self.call(c); raise :error; end }
+ @format = Module.new { def self.call(c); end }
end
it 'should delegate change formatting to the given format' do
- @format.should_receive(:format).once.with(@change).and_return('!')
+ @format.should_receive(:call).once.with(@change).and_return('!')
diff('a', @change, 'c').format_as(@format).should == 'a!c'
end
@@ -56,8 +56,8 @@
@diff.should == diff('abcd')
end
- it 'should join its arguments with $;' do
- $; = '*'
+ it 'should join its arguments with Differ.separator' do
+ Differ.separator = '*'
@diff.same(*'a*b*c*d'.split)
@diff.should == diff('a*b*c*d')
end
@@ -72,8 +72,8 @@
@diff.should == diff('ab')
end
- it 'should join to the last result with $;' do
- $; = '*'
+ it 'should join to the last result with Differ.separator' do
+ Differ.separator = '*'
@diff.same('b')
@diff.should == diff('a*b')
end
@@ -89,15 +89,15 @@
@diff.should == diff(('z' >> 'd'), 'a')
end
- it 'should prepend $; to the result' do
- $; = '*'
+ it 'should prepend Differ.separator to the result' do
+ Differ.separator = '*'
@diff.same('a')
@diff.should == diff(('z' >> 'd'), '*a')
end
- it "should do nothing to a leading $; on the insert" do
+ it "should do nothing to a leading Differ.separator on the insert" do
@diff = diff('a', ('*-' >> '*+'))
- $; = '*'
+ Differ.separator = '*'
@diff.same('c')
@diff.should == diff('a', ('*-' >> '*+'), '*c')
end
@@ -113,15 +113,15 @@
@diff.should == diff(-'z', 'a')
end
- it 'should append $; to the previous result' do
- $; = '*'
+ it 'should append Differ.separator to the previous result' do
+ Differ.separator = '*'
@diff.same('a')
@diff.should == diff(-'z*', 'a')
end
- it "should relocate a leading $; on the delete to the previous item" do
+ it "should relocate a leading Differ.separator on the delete to the previous item" do
@diff = diff('a', -'*b')
- $; = '*'
+ Differ.separator = '*'
@diff.same('c')
@diff.should == diff('a*', -'b*', 'c')
end
@@ -137,15 +137,15 @@
@diff.should == diff(+'z', 'a')
end
- it 'should append $; to the previous result' do
- $; = '*'
+ it 'should append Differ.separator to the previous result' do
+ Differ.separator = '*'
@diff.same('a')
@diff.should == diff(+'z*', 'a')
end
- it "should relocate a leading $; on the insert to the previous item" do
+ it "should relocate a leading Differ.separator on the insert to the previous item" do
@diff = diff('a', +'*b')
- $; = '*'
+ Differ.separator = '*'
@diff.same('c')
@diff.should == diff('a*', +'b*', 'c')
end
@@ -163,8 +163,8 @@
@diff.should == diff(-'abcd')
end
- it 'should join its arguments with $;' do
- $; = '*'
+ it 'should join its arguments with Differ.separator' do
+ Differ.separator = '*'
@diff.delete(*'a*b*c*d'.split)
@diff.should == diff(-'a*b*c*d')
end
@@ -180,8 +180,8 @@
@diff.should == diff(-'ab')
end
- it 'should join to the last result with $;' do
- $; = '*'
+ it 'should join to the last result with Differ.separator' do
+ Differ.separator = '*'
@diff.delete('b')
@diff.should == diff(-'a*b')
end
@@ -197,9 +197,9 @@
@diff.should == diff('b' >> 'a')
end
- it "should relocate a leading $; on the insert to the previous item" do
+ it "should relocate a leading Differ.separator on the insert to the previous item" do
@diff = diff('a', +'*b')
- $; = '*'
+ Differ.separator = '*'
@diff.delete('z')
@diff.should == diff('a*', ('z' >> 'b'))
end
@@ -216,8 +216,8 @@
@diff.should == diff('a', -'b')
end
- it 'should prepend $; to the result' do
- $; = '*'
+ it 'should prepend Differ.separator to the result' do
+ Differ.separator = '*'
@diff.delete('b')
@diff.should == diff('a', -'*b')
end
@@ -235,8 +235,8 @@
@diff.should == diff(+'abcd')
end
- it 'should join its arguments with $;' do
- $; = '*'
+ it 'should join its arguments with Differ.separator' do
+ Differ.separator = '*'
@diff.insert(*'a*b*c*d'.split)
@diff.should == diff(+'a*b*c*d')
end
@@ -252,9 +252,9 @@
@diff.should == diff('b' >> 'a')
end
- it "should relocate a leading $; on the delete to the previous item" do
+ it "should relocate a leading Differ.separator on the delete to the previous item" do
@diff = diff('a', -'*b')
- $; = '*'
+ Differ.separator = '*'
@diff.insert('z')
@diff.should == diff('a*', ('b' >> 'z'))
end
@@ -270,8 +270,8 @@
@diff.should == diff(+'ab')
end
- it 'should join to the last result with $;' do
- $; = '*'
+ it 'should join to the last result with Differ.separator' do
+ Differ.separator = '*'
@diff.insert('b')
@diff.should == diff(+'a*b')
end
@@ -288,8 +288,8 @@
@diff.should == diff('a', +'b')
end
- it 'should prepend $; to the result' do
- $; = '*'
+ it 'should prepend Differ.separator to the result' do
+ Differ.separator = '*'
@diff.insert('b')
@diff.should == diff('a', +'*b')
end
View
6 spec/differ/format/ascii_spec.rb
@@ -3,16 +3,16 @@
describe Differ::Format::Ascii do
it 'should format inserts well' do
@expected = '{+"SAMPLE"}'
- Differ::Format::Ascii.format(+'SAMPLE').should == @expected
+ Differ::Format::Ascii.call(+'SAMPLE').should == @expected
end
it 'should format deletes well' do
@expected = '{-"SAMPLE"}'
- Differ::Format::Ascii.format(-'SAMPLE').should == @expected
+ Differ::Format::Ascii.call(-'SAMPLE').should == @expected
end
it 'should format changes well' do
@expected = '{"THEN" >> "NOW"}'
- Differ::Format::Ascii.format('THEN' >> 'NOW').should == @expected
+ Differ::Format::Ascii.call('THEN' >> 'NOW').should == @expected
end
end
View
6 spec/differ/format/color_spec.rb
@@ -3,16 +3,16 @@
describe Differ::Format::Color do
it 'should format inserts well' do
@expected = "\033[32mSAMPLE\033[0m"
- Differ::Format::Color.format(+'SAMPLE').should == @expected
+ Differ::Format::Color.call(+'SAMPLE').should == @expected
end
it 'should format deletes well' do
@expected = "\033[31mSAMPLE\033[0m"
- Differ::Format::Color.format(-'SAMPLE').should == @expected
+ Differ::Format::Color.call(-'SAMPLE').should == @expected
end
it 'should format changes well' do
@expected = "\033[31mTHEN\033[0m\033[32mNOW\033[0m"
- Differ::Format::Color.format('THEN' >> 'NOW').should == @expected
+ Differ::Format::Color.call('THEN' >> 'NOW').should == @expected
end
end
View
6 spec/differ/format/html_spec.rb
@@ -3,16 +3,16 @@
describe Differ::Format::HTML do
it 'should format inserts well' do
@expected = '<ins class="differ">SAMPLE</ins>'
- Differ::Format::HTML.format(+'SAMPLE').should == @expected
+ Differ::Format::HTML.call(+'SAMPLE').should == @expected
end
it 'should format deletes well' do
@expected = '<del class="differ">SAMPLE</del>'
- Differ::Format::HTML.format(-'SAMPLE').should == @expected
+ Differ::Format::HTML.call(-'SAMPLE').should == @expected
end
it 'should format changes well' do
@expected = '<del class="differ">THEN</del><ins class="differ">NOW</ins>'
- Differ::Format::HTML.format('THEN' >> 'NOW').should == @expected
+ Differ::Format::HTML.call('THEN' >> 'NOW').should == @expected
end
end
View
14 spec/differ/string_spec.rb
@@ -7,7 +7,7 @@
end
before(:each) do
- $; = nil
+ Differ.separator = nil
end
describe '#diff' do
@@ -16,9 +16,9 @@
'TO'.diff('FROM')
end
- it 'should call Differ#diff with $;' do
- $; = 'x'
- Differ.should_receive(:diff).with('TO', 'FROM', $;).once
+ it 'should call Differ#diff with Differ.separator' do
+ Differ.separator = 'x'
+ Differ.should_receive(:diff).with('TO', 'FROM', Differ.separator).once
'TO'.diff('FROM')
end
end
@@ -29,9 +29,9 @@
'TO' - 'FROM'
end
- it 'should call Differ#diff with $;' do
- $; = 'x'
- Differ.should_receive(:diff).with('TO', 'FROM', $;).once
+ it 'should call Differ#diff with Differ.separator' do
+ Differ.separator = 'x'
+ Differ.should_receive(:diff).with('TO', 'FROM', Differ.separator).once
'TO' - 'FROM'
end
end
View
4 spec/differ_spec.rb
@@ -30,8 +30,8 @@
describe '#format_for' do
before(:each) { Differ.format = nil }
- it 'should store any module passed to it' do
- formatter = Module.new
+ it 'should store any callable passed to it' do
+ formatter = ->(c){ c.to_s }
Differ.format_for(formatter).should == formatter
end
View
4 spec/spec_helper.rb
@@ -4,10 +4,6 @@
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
require 'differ'
-Spec::Runner.configure do |config|
-
-end
-
def diff(*parts)
x = Differ::Diff.new
x.instance_variable_set(:@raw, parts)
Something went wrong with that request. Please try again.