mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
19 lines
691 B
19 lines
691 B
package mahonia |
|
|
|
// FallbackDecoder combines a series of Decoders into one. |
|
// If the first Decoder returns a status of INVALID_CHAR, the others are tried as well. |
|
// |
|
// Note: if the text to be decoded ends with a sequence of bytes that is not a valid character in the first charset, |
|
// but it could be the beginning of a valid character, the FallbackDecoder will give a status of NO_ROOM instead of |
|
// falling back to the other Decoders. |
|
func FallbackDecoder(decoders ...Decoder) Decoder { |
|
return func(p []byte) (c rune, size int, status Status) { |
|
for _, d := range decoders { |
|
c, size, status = d(p) |
|
if status != INVALID_CHAR { |
|
return |
|
} |
|
} |
|
return 0, 1, INVALID_CHAR |
|
} |
|
}
|
|
|