pretty_diff 0.8.1 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.1
1
+ 0.9.1
@@ -12,7 +12,7 @@ require 'cgi'
12
12
  # so that it doesn't interfere with the output.
13
13
  #
14
14
  class PrettyDiff::Diff
15
- CHUNK_REGEXP = /@@ .+ @@\n/
15
+ CHUNK_REGEXP = /^@@ .+ @@\n?/
16
16
 
17
17
  attr_reader :input, :options
18
18
 
@@ -7,22 +7,7 @@ class PrettyDiff::DiffGenerator
7
7
  end
8
8
 
9
9
  def generate
10
- chunks_html = diff.chunks.map{|c| c.to_html}.join(chunk_separator_html).to_s
11
- intro_html + chunks_html + outro_html
12
- end
13
-
14
- private
15
-
16
- def intro_html
17
- %Q[]
18
- end
19
-
20
- def chunk_separator_html
21
- %Q[]
22
- end
23
-
24
- def outro_html
25
- %Q[]
10
+ diff.chunks.map{|c| c.to_html}.to_s
26
11
  end
27
12
 
28
13
  end
@@ -7,7 +7,9 @@ class PrettyDiff::LineGenerator
7
7
  end
8
8
 
9
9
  def generate
10
- if line.added?
10
+ if line.modified?
11
+ modified_html(content)
12
+ elsif line.added?
11
13
  added_html(content)
12
14
  elsif line.deleted?
13
15
  deleted_html(content)
@@ -30,6 +32,10 @@ private
30
32
  end
31
33
  end
32
34
 
35
+ def modified_html(text)
36
+ wrapper_html { %Q[<span class="gm">#{text}</span>] }
37
+ end
38
+
33
39
  def added_html(text)
34
40
  wrapper_html { %Q[<span class="gi">#{text}</span>] }
35
41
  end
@@ -30,8 +30,7 @@ private
30
30
 
31
31
  def column_html(text)
32
32
  %Q[<div class="code-lines"><pre>
33
- #{text}
34
- </pre></div>]
33
+ #{text}</pre></div>]
35
34
  end
36
35
 
37
36
  end
@@ -3,6 +3,11 @@
3
3
  #
4
4
  class PrettyDiff::Line #:nodoc:
5
5
 
6
+ INLINE_INSERT_START = /\{\+/
7
+ INLINE_INSERT_END = /\+\}/
8
+ INLINE_DELETE_START = /\[-/
9
+ INLINE_DELETE_END = /-\]/
10
+
6
11
  attr_reader :diff, :input
7
12
 
8
13
  def initialize(diff, input)
@@ -16,10 +21,12 @@ class PrettyDiff::Line #:nodoc:
16
21
  end
17
22
 
18
23
  # Prepare Line contents for injection into HTML structure.
19
- # Currently used for replacing Tab symbols with spaces.
20
- # Return a string.
21
24
  def format
22
- input.gsub("\t", ' ')
25
+ input.gsub(INLINE_INSERT_START, '<ins>') \
26
+ .gsub(INLINE_INSERT_END, '</ins>') \
27
+ .gsub(INLINE_DELETE_START, '<del>') \
28
+ .gsub(INLINE_DELETE_END, '</del>') \
29
+ .gsub("\t", ' ')
23
30
  end
24
31
 
25
32
  # Unified Diff sometimes emit a special line at the end of the file
@@ -29,9 +36,11 @@ class PrettyDiff::Line #:nodoc:
29
36
  input =~ /\/
30
37
  end
31
38
 
32
- # Return status of the Line. Can be :added, :deleted or :not_modified.
39
+ # Return status of the Line. Can be :modified (for per-word diffing), :added, :deleted or :not_modified.
33
40
  def status
34
41
  case input
42
+ when /(#{ INLINE_DELETE_START }|#{ INLINE_INSERT_START })/
43
+ :modified
35
44
  when /^\+/
36
45
  :added
37
46
  when /^\-/
@@ -41,6 +50,10 @@ class PrettyDiff::Line #:nodoc:
41
50
  end
42
51
  end
43
52
 
53
+ def modified?
54
+ status == :modified
55
+ end
56
+
44
57
  def added?
45
58
  status == :added
46
59
  end
@@ -1,59 +1,57 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{pretty_diff}
8
- s.version = "0.8.1"
8
+ s.version = "0.9.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ilya Sabanin"]
12
- s.date = %q{2011-01-27}
12
+ s.date = %q{2012-04-18}
13
13
  s.description = %q{PrettyDiff is a highly customizable library for creating fully featured HTML
14
14
  listings out of unified diff format strings.
15
15
  Include copy/paste-safe line numbers and built-in syntax highlighting.}
16
16
  s.email = %q{ilya.sabanin@gmail.com}
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.rdoc"
19
+ "README.rdoc"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "lib/pretty_diff.rb",
29
- "lib/pretty_diff/chunk.rb",
30
- "lib/pretty_diff/diff.rb",
31
- "lib/pretty_diff/html_generators/chunk_generator.rb",
32
- "lib/pretty_diff/html_generators/diff_generator.rb",
33
- "lib/pretty_diff/html_generators/line_generator.rb",
34
- "lib/pretty_diff/html_generators/line_numbers_generator.rb",
35
- "lib/pretty_diff/line.rb",
36
- "lib/pretty_diff/line_numbers.rb",
37
- "pretty_diff.gemspec",
38
- "test/chunk_test.rb",
39
- "test/data/first.diff",
40
- "test/data/second.diff",
41
- "test/diff_test.rb",
42
- "test/helper.rb",
43
- "test/html_generator_test.rb",
44
- "test/line_test.rb"
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/pretty_diff.rb",
28
+ "lib/pretty_diff/chunk.rb",
29
+ "lib/pretty_diff/diff.rb",
30
+ "lib/pretty_diff/html_generators/chunk_generator.rb",
31
+ "lib/pretty_diff/html_generators/diff_generator.rb",
32
+ "lib/pretty_diff/html_generators/line_generator.rb",
33
+ "lib/pretty_diff/html_generators/line_numbers_generator.rb",
34
+ "lib/pretty_diff/line.rb",
35
+ "lib/pretty_diff/line_numbers.rb",
36
+ "pretty_diff.gemspec",
37
+ "test/chunk_test.rb",
38
+ "test/data/first.diff",
39
+ "test/data/second.diff",
40
+ "test/diff_test.rb",
41
+ "test/helper.rb",
42
+ "test/html_generator_test.rb",
43
+ "test/line_test.rb"
45
44
  ]
46
45
  s.homepage = %q{http://github.com/isabanin/pretty_diff}
47
- s.rdoc_options = ["--charset=UTF-8"]
48
46
  s.require_paths = ["lib"]
49
47
  s.rubygems_version = %q{1.3.7}
50
48
  s.summary = %q{Library for converting unified diff format into HTML listings.}
51
49
  s.test_files = [
52
50
  "test/chunk_test.rb",
53
- "test/diff_test.rb",
54
- "test/helper.rb",
55
- "test/html_generator_test.rb",
56
- "test/line_test.rb"
51
+ "test/diff_test.rb",
52
+ "test/helper.rb",
53
+ "test/html_generator_test.rb",
54
+ "test/line_test.rb"
57
55
  ]
58
56
 
59
57
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pretty_diff
3
3
  version: !ruby/object:Gem::Version
4
- hash: 61
4
+ hash: 57
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 8
8
+ - 9
9
9
  - 1
10
- version: 0.8.1
10
+ version: 0.9.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ilya Sabanin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-27 00:00:00 +07:00
18
+ date: 2012-04-18 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -46,7 +46,6 @@ extra_rdoc_files:
46
46
  - README.rdoc
47
47
  files:
48
48
  - .document
49
- - .gitignore
50
49
  - LICENSE
51
50
  - README.rdoc
52
51
  - Rakefile
@@ -73,8 +72,8 @@ homepage: http://github.com/isabanin/pretty_diff
73
72
  licenses: []
74
73
 
75
74
  post_install_message:
76
- rdoc_options:
77
- - --charset=UTF-8
75
+ rdoc_options: []
76
+
78
77
  require_paths:
79
78
  - lib
80
79
  required_ruby_version: !ruby/object:Gem::Requirement
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC