Lines Matching refs:self
76 def __init__(self, series, is_log=False): argument
77 self.skip_blank = False # True to skip a single blank line
78 self.found_test = False # Found a TEST= line
79 self.lines_after_test = 0 # Number of lines found after TEST=
80 self.linenum = 1 # Output line number we are up to
81 self.in_section = None # Name of start...END section we are in
82 self.notes = [] # Series notes
83 self.section = [] # The current section...END section
84 self.series = series # Info about the patch series
85 self.is_log = is_log # True if indent like git log
86 self.in_change = None # Name of the change list we are in
87 self.change_version = 0 # Non-zero if we are in a change list
88 self.change_lines = [] # Lines of the current change
89 self.blank_count = 0 # Number of blank lines stored up
90 self.state = STATE_MSG_HEADER # What state are we in?
91 self.commit = None # Current commit
93 self.snippets = []
94 self.cur_diff = None # Last 'diff' line seen (str)
95 self.cur_line = None # Last context (@@) line seen (str)
96 self.recent_diff = None # 'diff' line for current snippet (str)
97 self.recent_line = None # '@@' line for current snippet (str)
98 self.recent_quoted = collections.deque([], 5)
99 self.recent_unquoted = queue.Queue()
100 self.was_quoted = None
124 def _add_warn(self, warn): argument
135 if not self.commit:
137 if warn not in self.commit.warn:
138 self.commit.warn.append(warn)
140 def _add_to_series(self, line, name, value): argument
153 self.in_section = name
154 self.skip_blank = False
155 if self.is_log:
156 warn = self.series.AddTag(self.commit, line, name, value)
158 self.commit.warn.append(warn)
160 def _add_to_commit(self, name): argument
169 self.in_section = 'commit-' + name
170 self.skip_blank = False
172 def _add_commit_rtag(self, rtag_type, who): argument
180 self.commit.AddRtag(rtag_type, who)
182 def _close_commit(self): argument
184 if self.commit and self.is_log:
185 self.series.AddCommit(self.commit)
186 self.commit = None
190 if self.in_section == 'cover' and self.is_log:
191 self.series.cover = self.section
192 self.in_section = None
193 self.skip_blank = True
194 self.section = []
196 self.cur_diff = None
197 self.recent_diff = None
198 self.recent_line = None
200 def _parse_version(self, value, line): argument
217 (self.commit.hash, line))
219 def _finalise_change(self): argument
221 if not self.change_lines:
223 change = '\n'.join(self.change_lines)
225 if self.in_change == 'Series':
226 self.series.AddChange(self.change_version, self.commit, change)
227 elif self.in_change == 'Cover':
228 self.series.AddChange(self.change_version, None, change)
229 elif self.in_change == 'Commit':
230 self.commit.AddChange(self.change_version, change)
231 self.change_lines = []
233 def _finalise_snippet(self): argument
251 while self.recent_quoted:
252 quoted_lines.append(self.recent_quoted.popleft())
255 while not self.recent_unquoted.empty():
256 text = self.recent_unquoted.get()
263 if self.recent_diff:
264 lines.append('> File: %s' % self.recent_diff)
265 if self.recent_line:
266 out = '> Line: %s / %s' % self.recent_line[:2]
267 if self.recent_line[2]:
268 out += ': %s' % self.recent_line[2]
272 self.snippets.append(lines)
274 def process_line(self, line): argument
306 commit_match = RE_COMMIT.match(line) if self.is_log else None
308 if self.is_log:
322 if self.state == STATE_PATCH_HEADER:
326 if (self.state == STATE_MSG_HEADER
327 or self.state == STATE_PATCH_SUBJECT):
328 self.state += 1
332 if not self.is_log and self.state == STATE_PATCH_SUBJECT:
333 self.state += 1
335 self.state = STATE_MSG_HEADER
339 cover_match or signoff_match or self.state == STATE_MSG_HEADER:
342 if self.in_section:
343 self._add_warn("Missing 'END' in section '%s'" % self.in_section)
344 if self.in_section == 'cover':
345 self.series.cover = self.section
346 elif self.in_section == 'notes':
347 if self.is_log:
348 self.series.notes += self.section
349 elif self.in_section == 'commit-notes':
350 if self.is_log:
351 self.commit.notes += self.section
354 raise ValueError("Unknown section '%s'" % self.in_section)
355 self.in_section = None
356 self.skip_blank = True
357 self.section = []
360 if self.in_change:
361 self._add_warn("Missing 'blank line' in section '%s-changes'" %
362 self.in_change)
363 self._finalise_change()
364 self.in_change = None
365 self.change_version = 0
368 if self.in_section:
370 if self.in_section == 'cover':
371 self.series.cover = self.section
372 elif self.in_section == 'notes':
373 if self.is_log:
374 self.series.notes += self.section
375 elif self.in_section == 'commit-notes':
376 if self.is_log:
377 self.commit.notes += self.section
380 raise ValueError("Unknown section '%s'" % self.in_section)
381 self.in_section = None
382 self.skip_blank = True
383 self.section = []
385 self.section.append(line)
392 elif not is_blank and self.state == STATE_PATCH_SUBJECT:
393 self.commit.subject = line
397 self.skip_blank = True
402 self.found_test = True
403 elif self.skip_blank and is_blank:
404 self.skip_blank = False
411 self.in_section = 'cover'
412 self.skip_blank = False
414 self._add_to_series(line, 'cover-cc', value)
416 self.in_change = 'Cover'
417 self.change_version = self._parse_version(value, line)
420 elif self.in_change:
423 self._finalise_change()
424 self.in_change = None
425 self.change_version = 0
427 self._finalise_change()
428 self.in_change = None
429 self.change_version = 0
430 out = self.process_line(line)
431 elif self.is_log:
433 self._finalise_change()
434 self.change_lines.append(line)
435 self.skip_blank = False
443 self.in_change = 'Series'
444 self.change_version = self._parse_version(value, line)
446 self._add_to_series(line, name, value)
447 self.skip_blank = True
452 if self.is_log:
453 if self.commit.change_id:
456 (self.commit.hash, self.commit.change_id, value))
457 self.commit.change_id = value
458 self.skip_blank = True
465 self._add_to_commit(name)
466 self.skip_blank = True
468 self.in_change = 'Commit'
469 self.change_version = self._parse_version(value, line)
471 self._add_warn('Line %d: Ignoring Commit-%s' %
472 (self.linenum, name))
476 self._close_commit()
477 self.commit = commit.Commit(commit_match.group(1))
482 self._add_commit_rtag(rtag_type, who)
486 self._add_warn("Ignoring '%s'" % line)
488 self.commit.AddCc(who.split(','))
494 if (self.is_log or not self.commit or
495 self.commit.CheckDuplicateSignoff(signoff_match.group(1))):
503 self._add_warn('Line %d/%d has space before tab' %
504 (self.linenum, mat.start()))
508 self.linenum += 1
509 self.skip_blank = False
512 self.cur_diff = diff_match.group(1)
515 if not diff_match and self.linenum > 1 and line:
517 if not self.was_quoted:
518 self._finalise_snippet()
519 self.recent_line = None
521 self.recent_quoted.append(line)
522 self.was_quoted = True
523 self.recent_diff = self.cur_diff
525 self.recent_unquoted.put(line)
526 self.was_quoted = False
529 self.recent_line = line_match.groups()
531 if self.state == STATE_DIFFS:
537 self.state = STATE_DIFFS
541 log = self.series.MakeChangeLog(self.commit)
543 if self.commit:
544 out += self.commit.notes
546 elif self.found_test:
548 self.lines_after_test += 1
552 def finalise(self): argument
554 self._finalise_snippet()
555 self._finalise_change()
556 self._close_commit()
557 if self.lines_after_test:
558 self._add_warn('Found %d lines after TEST=' % self.lines_after_test)
560 def _write_message_id(self, outfd): argument
569 if not self.commit.change_id:
573 if self.commit.count == -1:
588 if 'prefix' in self.series:
589 parts.append(self.series['prefix'])
590 if 'version' in self.series:
591 parts.append("v%s" % self.series['version'])
593 parts.append(str(self.commit.count + 1))
596 parts.append(self.commit.change_id)
601 def process_stream(self, infd, outfd): argument
615 self._write_message_id(outfd)
621 out = self.process_line(line)
630 self.blank_count += 1
632 if self.blank_count and (line == '-- ' or match):
633 self._add_warn("Found possible blank line(s) at end of file '%s'" %
635 outfd.write('+\n' * self.blank_count)
637 self.blank_count = 0
638 self.finalise()