func Parse()

in cassandra-bigtable-migration-tools/cassandra-bigtable-proxy/translator/orderedcode.go [335:366]


func Parse(encoded string, items ...interface{}) (remaining string, err error) {
	for _, item := range items {
		dir := increasing
		if d, dOK := item.(decr); dOK {
			dir, item = decreasing, d.val
		}
		switch x := item.(type) {
		case *string:
			encoded, err = parseString(x, encoded, dir)
		case *TrailingString:
			if dir == increasing {
				*x, encoded = TrailingString(encoded), ""
			} else {
				b := []byte(encoded)
				invert(b)
				*x, encoded = TrailingString(b), ""
			}
		case *float64:
			encoded, err = parseFloat64(x, encoded, dir)
		case *int64:
			encoded, err = parseInt64(x, encoded, dir)
		case *uint64:
			encoded, err = parseUint64(x, encoded, dir)
		default:
			return "", fmt.Errorf("orderedcode: cannot parse an item of type %T", item)
		}
		if err != nil {
			return "", err
		}
	}
	return encoded, nil
}