## ## Copyright (c) 2006 Jason Dillon ## ## Licensed under the Apache License, Version 2.0 (the "License"); ## you may not use this file except in compliance with the License. ## You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## ## ## $Id: //guest/jason_dillon/p4spam/main/pylib/perforce/commands/review.py#3 $ $Date: 2006/04/12 $ ## import re from perforce import P4Field, P4Code, P4Exception from perforce.commands import ResultSupport, StreamedResultCommand COMMAND_NAME = "review" ## ## ReviewCommand ## class ReviewCommand(StreamedResultCommand): def __init__(this, p4): StreamedResultCommand.__init__(this, COMMAND_NAME, p4) def createResult(this, entry): return ReviewInfo(entry) class ReviewInfo(ResultSupport): # Change 25080 jdillon (Jason Dillon) DATA_RE = re.compile(r'^Change (\S+) (\S+) <(\S+)> \((.+)\)$') def __init__(this, entry): assert entry[P4Field.CODE] in (P4Code.INFO, P4Code.STAT) if entry[P4Field.CODE] == P4Code.INFO: (changenumber, this.user, this.email, this.fullname) = \ this.DATA_RE.match(entry[P4Field.DATA]).groups() this.changenumber = int(changenumber) elif entry[P4Field.CODE] == P4Code.STAT: this.changenumber = int(entry['change']) this.user = entry['user'] this.fullname = entry['name'] this.email = entry['email'] def toString(this): return "@%s %s <%s> (%s)" % (this.changenumber, this.user, this.email, this.fullname) def __str__(this): return this.toString() def __repr__(this): return this.toString() ## ## perforce.commands factory interface ## def create(p4): return ReviewCommand(p4)