def encode(self, posns_chars): # posns_chars = [(pos, startchar, endchar), ...] codes = [] posbase = 0 charbase = 0 for pos, startchar, endchar in posns_chars: codes.append(varint(pos - posbase)) posbase = pos codes.extend((varint(startchar - charbase), varint(endchar - startchar))) charbase = endchar return pack("!I", len(posns_chars)) + "".join(codes)
def encode(self, posns_chars): # posns_chars = [(pos, startchar, endchar), ...] codes = [] posbase = 0 charbase = 0 for pos, startchar, endchar in posns_chars: codes.append(varint(pos - posbase)) posbase = pos codes.extend( (varint(startchar - charbase), varint(endchar - startchar))) charbase = endchar return pack("!I", len(posns_chars)) + "".join(codes)
def encode(self, posns_chars_boosts): # posns_chars_boosts = [(pos, startchar, endchar, boost), ...] codes = [] posbase = 0 charbase = 0 summedboost = 0 for pos, startchar, endchar, boost in posns_chars_boosts: summedboost += boost codes.append(varint(pos - posbase)) posbase = pos codes.extend((varint(startchar - charbase), varint(endchar - startchar), float_to_byte(boost))) charbase = endchar b = pack("!If", len(posns_chars_boosts), summedboost) return b + "".join(codes)
def encode(self, positions): # positions = [pos1, pos2, ...] codes = [] base = 0 for pos in positions: codes.append(varint(pos - base)) base = pos return pack("!I", len(positions)) + "".join(codes)
def encode(self, posns_boosts): # posns_boosts = [(pos, boost), ...] codes = [] base = 0 summedboost = 0 for pos, boost in posns_boosts: summedboost += boost codes.extend((varint(pos - base), float_to_byte(boost))) base = pos return pack("!If", len(posns_boosts), summedboost) + "".join(codes)
def write_varint(self, i): """Writes a variable-length integer to the wrapped file. """ self.file.write(varint(i))