소스 검색

use render instead of view

Matthew Wang 12 년 전
부모
커밋
a06a21094b
1개의 변경된 파일30개의 추가작업 그리고 41개의 파일을 삭제
  1. 30
    41
      src/cdiff.py

+ 30
- 41
src/cdiff.py 파일 보기

41
         self.__new_path = new_path
41
         self.__new_path = new_path
42
         self.__hunks = hunks
42
         self.__hunks = hunks
43
 
43
 
44
-    def view_traditional(self, show_color):
44
+    def render_traditional(self, show_color):
45
         out = []
45
         out = []
46
         if show_color:
46
         if show_color:
47
             color = None    # Use default
47
             color = None    # Use default
51
             end_color = 'none'
51
             end_color = 'none'
52
 
52
 
53
         for line in self.__headers:
53
         for line in self.__headers:
54
-            out.append(self._view_header(line, color, end_color))
54
+            out.append(self._render_header(line, color, end_color))
55
 
55
 
56
-        out.append(self._view_old_path(self.__old_path, color, end_color))
57
-        out.append(self._view_new_path(self.__new_path, color, end_color))
56
+        out.append(self._render_old_path(self.__old_path, color, end_color))
57
+        out.append(self._render_new_path(self.__new_path, color, end_color))
58
 
58
 
59
         for hunk in self.__hunks:
59
         for hunk in self.__hunks:
60
-            out.append(self._view_hunk_header(hunk.get_header(), color,
60
+            out.append(self._render_hunk_header(hunk.get_header(), color,
61
                 end_color))
61
                 end_color))
62
             for (attr, line) in hunk:
62
             for (attr, line) in hunk:
63
                 if attr == '-':
63
                 if attr == '-':
64
-                    out.append(self._view_old(attr+line, color, end_color))
64
+                    out.append(self._render_old(attr+line, color, end_color))
65
                 elif attr == '+':
65
                 elif attr == '+':
66
-                    out.append(self._view_new(attr+line, color, end_color))
66
+                    out.append(self._render_new(attr+line, color, end_color))
67
                 else:
67
                 else:
68
-                    out.append(self._view_common(attr+line, color, end_color))
68
+                    out.append(self._render_common(attr+line, color, end_color))
69
 
69
 
70
         return ''.join(out)
70
         return ''.join(out)
71
 
71
 
72
-    def view_side_by_side(self, show_color, show_number, width):
72
+    def render_side_by_side(self, show_color, show_number, width):
73
         """Do not really need to parse the hunks..."""
73
         """Do not really need to parse the hunks..."""
74
         return 'TODO: show_color=%s, show_number=%s, width=%d' % (show_color,
74
         return 'TODO: show_color=%s, show_number=%s, width=%d' % (show_color,
75
                 show_number, width)
75
                 show_number, width)
76
 
76
 
77
-    def _view_header(self, line, color=None, end_color=None):
77
+    def _render_header(self, line, color=None, end_color=None):
78
         if color is None:
78
         if color is None:
79
             color='cyan'
79
             color='cyan'
80
         if end_color is None:
80
         if end_color is None:
81
             end_color = 'reset'
81
             end_color = 'reset'
82
         return self.__mark_color(line, color, end_color)
82
         return self.__mark_color(line, color, end_color)
83
 
83
 
84
-    def _view_old_path(self, line, color=None, end_color=None):
84
+    def _render_old_path(self, line, color=None, end_color=None):
85
         if color is None:
85
         if color is None:
86
             color='yellow'
86
             color='yellow'
87
         if end_color is None:
87
         if end_color is None:
88
             end_color = 'reset'
88
             end_color = 'reset'
89
         return self.__mark_color(line, color, end_color)
89
         return self.__mark_color(line, color, end_color)
90
 
90
 
91
-    def _view_new_path(self, line, color=None, end_color=None):
91
+    def _render_new_path(self, line, color=None, end_color=None):
92
         if color is None:
92
         if color is None:
93
             color='yellow'
93
             color='yellow'
94
         if end_color is None:
94
         if end_color is None:
95
             end_color = 'reset'
95
             end_color = 'reset'
96
         return self.__mark_color(line, color, end_color)
96
         return self.__mark_color(line, color, end_color)
97
 
97
 
98
-    def _view_hunk_header(self, line, color=None, end_color=None):
98
+    def _render_hunk_header(self, line, color=None, end_color=None):
99
         if color is None:
99
         if color is None:
100
             color='lightblue'
100
             color='lightblue'
101
         if end_color is None:
101
         if end_color is None:
102
             end_color = 'reset'
102
             end_color = 'reset'
103
         return self.__mark_color(line, color, end_color)
103
         return self.__mark_color(line, color, end_color)
104
 
104
 
105
-    def _view_old(self, line, color=None, end_color=None):
105
+    def _render_old(self, line, color=None, end_color=None):
106
         if color is None:
106
         if color is None:
107
             color='red'
107
             color='red'
108
         if end_color is None:
108
         if end_color is None:
109
             end_color = 'reset'
109
             end_color = 'reset'
110
         return self.__mark_color(line, color, end_color)
110
         return self.__mark_color(line, color, end_color)
111
 
111
 
112
-    def _view_new(self, line, color=None, end_color=None):
112
+    def _render_new(self, line, color=None, end_color=None):
113
         if color is None:
113
         if color is None:
114
             color='green'
114
             color='green'
115
         if end_color is None:
115
         if end_color is None:
116
             end_color = 'reset'
116
             end_color = 'reset'
117
         return self.__mark_color(line, color, end_color)
117
         return self.__mark_color(line, color, end_color)
118
 
118
 
119
-    def _view_common(self, line, color=None, end_color=None):
119
+    def _render_common(self, line, color=None, end_color=None):
120
         if color is None:
120
         if color is None:
121
             color='none'
121
             color='none'
122
         if end_color is None:
122
         if end_color is None:
297
         return out_diffs
297
         return out_diffs
298
 
298
 
299
 
299
 
300
-class DiffViewer(object):
300
+class DiffRender(object):
301
 
301
 
302
     def __init__(self, stream):
302
     def __init__(self, stream):
303
         self.__diffs = DiffParser(stream).get_diffs()
303
         self.__diffs = DiffParser(stream).get_diffs()
304
 
304
 
305
-    def view(self, show_color=True, show_number=False, width=0,
305
+    def render(self, show_color=True, show_number=False, width=0,
306
             traditional=False):
306
             traditional=False):
307
         if traditional:
307
         if traditional:
308
-            return self.__view_traditional(show_color)
308
+            return self.__render_traditional(show_color)
309
         else:
309
         else:
310
-            return self.__view_side_by_side(show_color, show_number, width)
310
+            return self.__render_side_by_side(show_color, show_number, width)
311
 
311
 
312
-    def __view_traditional(self, show_color):
312
+    def __render_traditional(self, show_color):
313
         out = []
313
         out = []
314
         for diff in self.__diffs:
314
         for diff in self.__diffs:
315
-            out.append(diff.view_traditional(show_color))
315
+            out.append(diff.render_traditional(show_color))
316
         return out
316
         return out
317
 
317
 
318
-    def __view_side_by_side(self, show_color, show_number, width):
318
+    def __render_side_by_side(self, show_color, show_number, width):
319
         """width of 0 or negative means auto detect terminal width"""
319
         """width of 0 or negative means auto detect terminal width"""
320
         out = []
320
         out = []
321
         for diff in self.__diffs:
321
         for diff in self.__diffs:
322
-            out.append(diff.view_side_by_side(show_color, show_number, width))
322
+            out.append(diff.render_side_by_side(show_color, show_number, width))
323
         return out
323
         return out
324
 
324
 
325
 
325
 
334
             {'prog': os.path.basename(sys.argv[0])}
334
             {'prog': os.path.basename(sys.argv[0])}
335
 
335
 
336
     parser = optparse.OptionParser(usage)
336
     parser = optparse.OptionParser(usage)
337
-    parser.add_option('-c', '--color', metavar='on|off|auto', default='auto',
338
-            help='enforce color' 'on|off|auto, default is auto')
339
     parser.add_option('-n', '--number', action='store_true',
337
     parser.add_option('-n', '--number', action='store_true',
340
             help='show line number')
338
             help='show line number')
341
     parser.add_option('-w', '--width', type='int', default=0,
339
     parser.add_option('-w', '--width', type='int', default=0,
345
                   'mode (omit -n, -w)'))
343
                   'mode (omit -n, -w)'))
346
     opts, args = parser.parse_args()
344
     opts, args = parser.parse_args()
347
 
345
 
348
-    if opts.color == 'yes':
349
-        show_color = True
350
-    elif opts.color == 'no':
351
-        show_color = False
352
-    elif opts.color == 'auto':
353
-        show_color = sys.stdout.isatty()
354
-    else:
355
-        sys.stderr.write('Invalid color mode, try --help option for usage\n')
356
-        sys.exit(1)
346
+    show_color = sys.stdout.isatty()
357
 
347
 
358
     if opts.width < 0:
348
     if opts.width < 0:
359
         opts.width = 0
349
         opts.width = 0
370
     if diff_hdl is not sys.stdin:
360
     if diff_hdl is not sys.stdin:
371
         diff_hdl.close()
361
         diff_hdl.close()
372
 
362
 
373
-    diffviewer = DiffViewer(stream)
374
-    view = diffviewer.view(show_color=show_color, show_number=opts.number,
363
+    render = DiffRender(stream)
364
+    color_diff = render.render(show_color=show_color, show_number=opts.number,
375
             width=opts.width, traditional=opts.traditional)
365
             width=opts.width, traditional=opts.traditional)
376
 
366
 
377
     if sys.stdout.isatty():
367
     if sys.stdout.isatty():
378
-        # args stolen fron git source, see less(1)
379
-        # https://github.com/git/git/blob/master/pager.c
368
+        # args stolen fron git source: github.com/git/git/blob/master/pager.c
380
         pager = subprocess.Popen(['less', '-FRSXK'],
369
         pager = subprocess.Popen(['less', '-FRSXK'],
381
                 stdin=subprocess.PIPE, stdout=sys.stdout)
370
                 stdin=subprocess.PIPE, stdout=sys.stdout)
382
-        pager.stdin.write(''.join(view))
371
+        pager.stdin.write(''.join(color_diff))
383
         pager.stdin.close()
372
         pager.stdin.close()
384
         pager.wait()
373
         pager.wait()
385
     else:
374
     else:
386
-        sys.stdout.write(''.join(view))
375
+        sys.stdout.write(''.join(color_diff))
387
 
376
 
388
     sys.exit(0)
377
     sys.exit(0)
389
 
378