html-diff 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/bin/html-diff +7 -0
  2. data/lib/html_diff.rb +123 -0
  3. metadata +47 -0
data/bin/html-diff ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'html_diff'
4
+
5
+ differ = HtmlDiff.new(args=ARGV)
6
+ differ.make_diff
7
+
data/lib/html_diff.rb ADDED
@@ -0,0 +1,123 @@
1
+ class HtmlDiff
2
+ attr_accessor :wd, :argv
3
+
4
+ def initialize(argv=[])
5
+ @wd = `pwd`.gsub("\n", "")
6
+ @argv = argv
7
+ end
8
+
9
+ def stats_line
10
+ stats=`git diff --stat #{@argv.join(" ")}`
11
+ stats.scan(/\d+ files? changed, \d+ insertions?\(\+\), \d+ deletions?\(\-\)/).last
12
+ end
13
+
14
+ def branch
15
+ status=`git status`
16
+ status.scan(/# On branch (.*)\n/).last.last
17
+ end
18
+
19
+ def html_diff
20
+ diff=`git diff #{@argv.join(" ")}`
21
+ diff.gsub!(/^diff \-\-git a\/([^\s]*).*\n.*$/) { "<div class='diff-file'>"+$1+"</div>" }
22
+ diff.gsub!(/^(\-\-\-\s)(a.*)$/) { "<div class='code'><span class='delete'>"+$1+"&nbsp;"+$2+"</span>" }
23
+ diff.gsub!(/(\n\<div class\=\'diff-file\'\>)/) { "</div>"+$1}
24
+ diff.gsub!(/^(\@\@.*)$/) { "<br><span class='at-linenums'>"+$1+"</span>"}
25
+
26
+ diff.gsub!(/^(\++)(.*)$/) { "<span class='add'>"+$1+"&nbsp;"+$2+"</span>" }
27
+ diff.gsub!(/^(\-+)(.*)$/) { "<span class='delete'>"+$1+"&nbsp;"+$2+"</span>" }
28
+ diff
29
+ end
30
+
31
+ def initial_content
32
+ '''
33
+ <!DOCTYPE html>
34
+
35
+ <html>
36
+ <head>
37
+ <title></title>
38
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
39
+ <style>
40
+ body {
41
+ font-family: "Lucida Console", Monaco, monospace;
42
+ font-size: 13px;
43
+ padding-bottom: 50px;
44
+ }
45
+ h2 {
46
+ text-align: center;
47
+ font-size: 1.4em;
48
+ }
49
+ .diff-file {
50
+ background: -webkit-linear-gradient(#fafafa, #eaeaea);
51
+ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#fafafa\',endColorstr=\'#eaeaea\')";
52
+ border: 1px solid #d8d8d8;
53
+ border-bottom: 0;
54
+ color: #555;
55
+ font: 14px sans-serif;
56
+ overflow: hidden;
57
+ padding: 12px 25px;
58
+ text-shadow: 0 1px 0 white;
59
+ width: 80%;
60
+ margin: 50px auto 0;
61
+ float: none;
62
+ }
63
+ .code .add {
64
+ background-color: #DDFFDD;
65
+ padding: 1px 2% 1px 10px;
66
+ margin-left: -25px;
67
+ display:inline-block;
68
+ width: 105%;
69
+ }
70
+ .code .delete {
71
+ background-color: #FFDDDD;
72
+ padding: 1px 2% 1px 10px;
73
+ margin-left: -25px;
74
+ display:inline-block;
75
+ width: 105%;
76
+ }
77
+ .code .at-linenums {
78
+ color: #9B9B99;
79
+ }
80
+ .tab {
81
+ width: 50px;
82
+ height: 13px;
83
+ display: inline-block;
84
+ }
85
+ .code {
86
+ border: 1px solid #cacaca;
87
+ line-height: 1.7em;
88
+ overflow: hidden;
89
+ -webkit-border-radius: 0 0 3px 3px;
90
+ -moz-border-radius: 0 0 3px 3px;
91
+ border-radius: 0 0 3px 3px;
92
+ -moz-background-clip: padding;
93
+ -webkit-background-clip: padding-box;
94
+ background-clip: padding-box;
95
+ background-color: #FAFAFB;
96
+ color: #393939;
97
+ padding: 5px 25px;
98
+ width: 80%;
99
+ margin: -18px auto;
100
+ }
101
+ </style>
102
+ </head>
103
+ <body>
104
+ '''
105
+ end
106
+
107
+ def content
108
+ content = initial_content
109
+ content += "<h2>" + branch + "<br>" + stats_line + "</h2>"
110
+ content += "<pre>"+html_diff
111
+ content += "</pre></body></html>"
112
+ end
113
+
114
+ def make_diff
115
+ File.open(@wd+"/mydiff.html", "wb+") do |f|
116
+ f.write(content)
117
+ end
118
+
119
+ `open #{@wd}/mydiff.html`
120
+ `sleep 5 && rm #{@wd}/mydiff.html`
121
+ end
122
+ end
123
+
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: html-diff
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sarah Adams
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-18 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: A pretty, html-formatted git diff
15
+ email: sadams.codes@gmail.com
16
+ executables:
17
+ - html-diff
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/html_diff.rb
22
+ - bin/html-diff
23
+ homepage: http://rubygems.org/gems/html-diff
24
+ licenses: []
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 1.8.23
44
+ signing_key:
45
+ specification_version: 3
46
+ summary: HTML git-diff
47
+ test_files: []