1 <!DOCTYPE html>
2 <html lang="zh">
3 <head>
4 <title>代码对比/归并title>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta http-equiv="Content-Language" content="zh-CN" />
7 <link rel="stylesheet" href="https://tool.oschina.net/css/basic.css?20120912" type="text/css" />
8 <script type="text/javascript" src='https://tool.oschina.net/js/jquery/jquery-1.7.2.js'>script>
9 <link rel="stylesheet" href='https://tool.oschina.net/js/bootstrap/css/bootstrap.min.css' />
10 <script type="text/javascript" src='https://tool.oschina.net/js/jquery/jquery.cookies.2.2.0.min.js'>script>
11 <script src='https://tool.oschina.net/js/bootstrap/js/bootstrap.min.js'>script>
12 head>
13 <body>
14 <script type="text/javascript" src="https://tool.oschina.net/js/mergely-2.5/lib/codemirror.min.js">script>
15 <link rel="stylesheet" type="text/css" href="https://tool.oschina.net/js/mergely-2.5/lib/mergely.css" />
16 <script type="text/javascript" src="https://tool.oschina.net/js/mergely-2.5/lib/mergely.min.js">script>
17 <link rel="stylesheet" type="text/css" href="https://tool.oschina.net/js/mergely-2.5/lib/codemirror.css" />
18 <script id="render_js" type="text/javascript" src="https://tool.oschina.net/js/CodeMirror-2.25/mode/javascript/javascript.js">script>
19 <script>
20 var l_files;
21 var r_files;
22
23 $(document).ready(function() {
24 $('#diff').mergely({
25 cmsettings: {
26 mode: "javascript",
27 readOnly: false,
28 lineWrapping: true
29 }
30 });
31 });
32
33 function leftFileSelect(files) {
34 l_files = files;
35 setLeft(l_files);
36 }
37
38 function rightFileSelect(files) {
39 r_files = files;
40 setRight(r_files);
41 }
42
43 function setRight(files) {
44 f = files[0];
45 var reader = new FileReader();
46 reader.onload = (function(file) {
47 return function(e) {
48 $('#diff').mergely("rhs", this.result);
49 };
50 })(f);
51 reader.readAsText(f, $('#r_encode').val());
52 }
53
54 function setLeft(files) {
55 f = files[0];
56 var f_name = f.name;
57 var f_type = f_name.substring(f_name.lastIndexOf("."));
58 switch (f_type) {
59 case ".js":
60 setRender("javascript/javascript.js");
61 break;
62 case ".css":
63 setRender("css/css.js");
64 break;
65 case ".go":
66 setRender("go/go.js");
67 break;
68 case ".groovy":
69 setRender("groovy/groovy.js");
70 break;
71 case ".c", ".cpp":
72 setRender("clike/clike.js");
73 break;
74 case ".php":
75 setRender("php/php.js");
76 break;
77 case ".xml":
78 setRender("xml/xml.js");
79 break;
80 case ".html":
81 setRender("htmlembedded/htmlembedded.js");
82 break;
83 case ".less":
84 setRender("less/less.js");
85 break;
86 case ".lua":
87 setRender("lua/lua.js");
88 break;
89 case ".md":
90 setRender("markdown/markdown.js");
91 break;
92 case ".vm":
93 setRender("velocity/velocity.js");
94 break;
95 case ".py":
96 setRender("python/python.js");
97 break;
98 case ".properties":
99 setRender("properties/properties.js");
100 break;
101 case ".rb":
102 setRender("ruby/ruby.js");
103 break;
104 case ".sh":
105 setRender("shell/shell.js");
106 break;
107 case ".sql":
108 setRender("plsql/plsql.js");
109 break;
110 case ".erl":
111 setRender("erlang/erlang.js");
112 break;
113 case ".coffee":
114 setRender("coffeescript/coffeescript.js");
115 break;
116 case ".pl":
117 setRender("perl/perl.js");
118 break;
119 defualt: setRender("clike/clike.js");
120 }
121 var reader = new FileReader();
122 reader.onload = (function(file) {
123 return function(e) {
124 $('#diff').mergely("lhs", this.result);
125 };
126 })(f);
127 reader.readAsText(f, $('#l_encode').val());
128 }
129
130 function setLeftCode() {
131 if (null != l_files)
132 setLeft(l_files);
133 }
134
135 function setRightCode() {
136 if (null != r_files)
137 setRight(r_files);
138 }
139
140 function setRender(type) {
141 var base_src = "/js/CodeMirror-2.25/mode/";
142 $("#render_js").attr("src", base_src + type);
143 }
144 script>
145 <div id="mainContent" class="wrapper">
146 <form class="form-inline well" style="margin:10px 0 0 0;">
147 <div style="float:left;">
148 <label>选择第一个文件:label>
149 <input type="file" id="file" onchange="leftFileSelect(this.files)" single />
150 <label>编码:label>
151 <select id="l_encode" value="UTF-8" class="span1" onchange="setLeftCode();">
152 <option value="UTF-8">UTF-8option>
153 <option value="GBK">GBKoption>
154 <option value="GB2312">GB2312option>
155 <option value="GB18030">GB18030option>
156 <option value="ISO-8859-2">ISO-8859-2option>
157 select>
158 div>
159 <div style="float:right;">
160 <label>选择第二个文件:label>
161 <input type="file" id="file" onchange="rightFileSelect(this.files)" single />
162 <label>编码:label>
163 <select id="r_encode" value="UTF-8" class="span1" onchange="setRightCode();">
164 <option value="UTF-8">UTF-8option>
165 <option value="GBK">GBKoption>
166 <option value="GB2312">GB2312option>
167 <option value="GB18030">GB18030option>
168 <option value="ISO-8859-2">ISO-8859-2option>
169 select>
170 div>
171 form>
172 div>
173 <div id="diff" class="toolUsing">div>
174 body>
175 html>
![]()