meta: Rename metadata body parsing function from NewXxx to ParseXxx.

This commit is contained in:
mewmew 2013-11-04 09:22:42 +01:00
parent f1f8853583
commit 1f8a934c8e
7 changed files with 51 additions and 51 deletions

View file

@ -58,7 +58,7 @@ type Application struct {
Data []byte
}
// NewApplication parses and returns a new Application metadata block. The
// ParseApplication parses and returns a new Application metadata block. The
// provided io.Reader should limit the amount of data that can be read to
// header.Length bytes.
//
@ -70,7 +70,7 @@ type Application struct {
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_application
func NewApplication(r io.Reader) (app *Application, err error) {
func ParseApplication(r io.Reader) (app *Application, err error) {
// Application ID (size: 4 bytes).
buf, err := readBytes(r, 4)
if err != nil {
@ -79,7 +79,7 @@ func NewApplication(r io.Reader) (app *Application, err error) {
app = &Application{ID: ID(buf)}
_, ok := registeredApplications[app.ID]
if !ok {
return nil, fmt.Errorf("meta.NewApplication: unregistered application ID %q", string(app.ID))
return nil, fmt.Errorf("meta.ParseApplication: unregistered application ID %q", string(app.ID))
}
// Data.

View file

@ -93,7 +93,7 @@ type CueSheetTrackIndex struct {
IndexPointNum uint8
}
// NewCueSheet parses and returns a new CueSheet metadata block. The provided
// ParseCueSheet parses and returns a new CueSheet metadata block. The provided
// io.Reader should limit the amount of data that can be read to header.Length
// bytes.
//
@ -128,8 +128,8 @@ type CueSheetTrackIndex struct {
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_cuesheet
func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
errReservedNotZero := errors.New("meta.NewCueSheet: all reserved bits must be 0")
func ParseCueSheet(r io.Reader) (cs *CueSheet, err error) {
errReservedNotZero := errors.New("meta.ParseCueSheet: all reserved bits must be 0")
// Media catalog number (size: 128 bytes).
buf, err := readBytes(r, 128)
@ -140,7 +140,7 @@ func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
cs.MCN = getStringFromSZ(buf)
for _, r := range cs.MCN {
if r < 0x20 || r > 0x7E {
return nil, fmt.Errorf("meta.NewCueSheet: invalid character in media catalog number; expected >= 0x20 and <= 0x7E, got 0x%02X", r)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid character in media catalog number; expected >= 0x20 and <= 0x7E, got 0x%02X", r)
}
}
@ -178,7 +178,7 @@ func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
// Handle error checking of LeadInSampleCount here, since IsCompactDisc is
// required.
if !cs.IsCompactDisc && cs.LeadInSampleCount != 0 {
return nil, fmt.Errorf("meta.NewCueSheet: invalid lead-in sample count for non CD-DA; expected 0, got %d", cs.LeadInSampleCount)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid lead-in sample count for non CD-DA; expected 0, got %d", cs.LeadInSampleCount)
}
// Track count.
@ -187,10 +187,10 @@ func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
return nil, err
}
if cs.TrackCount < 1 {
return nil, errors.New("meta.NewCueSheet: at least one track (the lead-out track) is required")
return nil, errors.New("meta.ParseCueSheet: at least one track (the lead-out track) is required")
}
if cs.IsCompactDisc && cs.TrackCount > 100 {
return nil, fmt.Errorf("meta.NewCueSheet: too many tracks for CD-DA cue sheet; expected <= 100, got %d", cs.TrackCount)
return nil, fmt.Errorf("meta.ParseCueSheet: too many tracks for CD-DA cue sheet; expected <= 100, got %d", cs.TrackCount)
}
// Tracks.
@ -203,7 +203,7 @@ func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
return nil, err
}
if cs.IsCompactDisc && track.Offset%588 != 0 {
return nil, fmt.Errorf("meta.NewCueSheet: invalid track offset (%d) for CD-DA; must be evenly divisible by 588", track.Offset)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid track offset (%d) for CD-DA; must be evenly divisible by 588", track.Offset)
}
// Track number.
@ -214,21 +214,21 @@ func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
if track.TrackNum == 0 {
// A track number of 0 is not allowed to avoid conflicting with the
// CD-DA spec, which reserves this for the lead-in.
return nil, errors.New("meta.NewCueSheet: track number 0 not allowed")
return nil, errors.New("meta.ParseCueSheet: track number 0 not allowed")
}
if cs.IsCompactDisc {
if i == len(cs.Tracks)-1 {
if track.TrackNum != 170 {
// The lead-out track number must be 170 for CD-DA.
return nil, fmt.Errorf("meta.NewCueSheet: invalid lead-out track number for CD-DA; expected 170, got %d", track.TrackNum)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid lead-out track number for CD-DA; expected 170, got %d", track.TrackNum)
}
} else if track.TrackNum > 99 {
return nil, fmt.Errorf("meta.NewCueSheet: invalid track number for CD-DA; expected <= 99, got %d", track.TrackNum)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid track number for CD-DA; expected <= 99, got %d", track.TrackNum)
}
} else {
if i == len(cs.Tracks)-1 && track.TrackNum != 255 {
// The lead-out track number must be 255 for non-CD-DA.
return nil, fmt.Errorf("meta.NewCueSheet: invalid lead-out track number for non CD-DA; expected 255, got %d", track.TrackNum)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid lead-out track number for non CD-DA; expected 255, got %d", track.TrackNum)
}
}
@ -280,16 +280,16 @@ func NewCueSheet(r io.Reader) (cs *CueSheet, err error) {
if i == len(cs.Tracks)-1 {
// Lead-out must have zero track index points.
if track.TrackIndexCount != 0 {
return nil, fmt.Errorf("meta.NewCueSheet: invalid number of track points for the lead-out track; expected 0, got %d", track.TrackIndexCount)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid number of track points for the lead-out track; expected 0, got %d", track.TrackIndexCount)
}
} else {
if track.TrackIndexCount < 1 {
// Every track, except for the lead-out track, must have at least
// one track index point.
return nil, fmt.Errorf("meta.NewCueSheet: invalid number of track points; expected >= 1, got %d", track.TrackIndexCount)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid number of track points; expected >= 1, got %d", track.TrackIndexCount)
}
if cs.IsCompactDisc && track.TrackIndexCount > 100 {
return nil, fmt.Errorf("meta.NewCueSheet: invalid number of track points for CD-DA; expected <= 100, got %d", track.TrackIndexCount)
return nil, fmt.Errorf("meta.ParseCueSheet: invalid number of track points for CD-DA; expected <= 100, got %d", track.TrackIndexCount)
}
}

View file

@ -43,7 +43,7 @@ func ParseBlock(r io.ReadSeeker) (block *Block, err error) {
func NewBlock(r io.ReadSeeker) (block *Block, err error) {
// Read metadata block header.
block = &Block{r: r}
block.Header, err = NewBlockHeader(r)
block.Header, err = ParseBlockHeader(r)
if err != nil {
return nil, err
}
@ -57,21 +57,21 @@ func (block *Block) Parse() (err error) {
lr := io.LimitReader(block.r, int64(block.Header.Length))
switch block.Header.BlockType {
case TypeStreamInfo:
block.Body, err = NewStreamInfo(lr)
block.Body, err = ParseStreamInfo(lr)
case TypePadding:
err = VerifyPadding(lr)
case TypeApplication:
block.Body, err = NewApplication(lr)
block.Body, err = ParseApplication(lr)
case TypeSeekTable:
block.Body, err = NewSeekTable(lr)
block.Body, err = ParseSeekTable(lr)
case TypeVorbisComment:
block.Body, err = NewVorbisComment(lr)
block.Body, err = ParseVorbisComment(lr)
case TypeCueSheet:
block.Body, err = NewCueSheet(lr)
block.Body, err = ParseCueSheet(lr)
case TypePicture:
block.Body, err = NewPicture(lr)
block.Body, err = ParsePicture(lr)
default:
return fmt.Errorf("meta.NewBlock: block type '%d' not yet supported", block.Header.BlockType)
return fmt.Errorf("Block.ParseBlock: block type '%d' not yet supported", block.Header.BlockType)
}
if err != nil {
return err
@ -134,7 +134,7 @@ type BlockHeader struct {
Length int
}
// NewBlockHeader parses and returns a new metadata block header.
// ParseBlockHeader parses and returns a new metadata block header.
//
// Block header format (pseudo code):
//
@ -145,7 +145,7 @@ type BlockHeader struct {
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_header
func NewBlockHeader(r io.Reader) (h *BlockHeader, err error) {
func ParseBlockHeader(r io.Reader) (h *BlockHeader, err error) {
br := bit.NewReader(r)
// field 0: is_last (1 bit)
// field 1: block_type (7 bits)
@ -190,10 +190,10 @@ func NewBlockHeader(r io.Reader) (h *BlockHeader, err error) {
default:
if blockType >= 7 && blockType <= 126 {
// block type 7-126: reserved.
return nil, errors.New("meta.NewBlockHeader: reserved block type")
return nil, errors.New("meta.ParseBlockHeader: reserved block type")
} else if blockType == 127 {
// block type 127: invalid.
return nil, errors.New("meta.NewBlockHeader: invalid block type")
return nil, errors.New("meta.ParseBlockHeader: invalid block type")
}
}

View file

@ -56,7 +56,7 @@ type Picture struct {
Data []byte
}
// NewPicture parses and returns a new Picture metadata block. The provided
// ParsePicture parses and returns a new Picture metadata block. The provided
// io.Reader should limit the amount of data that can be read to header.Length
// bytes.
//
@ -77,7 +77,7 @@ type Picture struct {
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_picture
func NewPicture(r io.Reader) (pic *Picture, err error) {
func ParsePicture(r io.Reader) (pic *Picture, err error) {
// Type.
pic = new(Picture)
err = binary.Read(r, binary.BigEndian, &pic.Type)
@ -85,7 +85,7 @@ func NewPicture(r io.Reader) (pic *Picture, err error) {
return nil, err
}
if pic.Type > 20 {
return nil, fmt.Errorf("meta.NewPicture: reserved picture type: %d", pic.Type)
return nil, fmt.Errorf("meta.ParsePicture: reserved picture type: %d", pic.Type)
}
// Mime length.
@ -103,7 +103,7 @@ func NewPicture(r io.Reader) (pic *Picture, err error) {
pic.MIME = getStringFromSZ(buf)
for _, r := range pic.MIME {
if r < 0x20 || r > 0x7E {
return nil, fmt.Errorf("meta.NewPicture: invalid character in MIME type; expected >= 0x20 and <= 0x7E, got 0x%02X", r)
return nil, fmt.Errorf("meta.ParsePicture: invalid character in MIME type; expected >= 0x20 and <= 0x7E, got 0x%02X", r)
}
}
@ -158,7 +158,7 @@ func NewPicture(r io.Reader) (pic *Picture, err error) {
return nil, err
}
if len(pic.Data) != int(dataLen) {
return nil, fmt.Errorf("meta.NewPicture: invalid data length; expected %d, got %d", dataLen, len(pic.Data))
return nil, fmt.Errorf("meta.ParsePicture: invalid data length; expected %d, got %d", dataLen, len(pic.Data))
}
return pic, nil

View file

@ -39,9 +39,9 @@ type SeekPoint struct {
// structure are undefined.
const PlaceholderPoint = 0xFFFFFFFFFFFFFFFF
// NewSeekTable parses and returns a new SeekTable metadata block. The provided
// io.Reader should limit the amount of data that can be read to header.Length
// bytes.
// ParseSeekTable parses and returns a new SeekTable metadata block. The
// provided io.Reader should limit the amount of data that can be read to
// header.Length bytes.
//
// Seek table format (pseudo code):
//
@ -58,7 +58,7 @@ const PlaceholderPoint = 0xFFFFFFFFFFFFFFFF
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_seektable
func NewSeekTable(r io.Reader) (st *SeekTable, err error) {
func ParseSeekTable(r io.Reader) (st *SeekTable, err error) {
st = new(SeekTable)
var hasPrev bool
var prevSampleNum uint64
@ -80,9 +80,9 @@ func NewSeekTable(r io.Reader) (st *SeekTable, err error) {
// placeholder points, but they must all occur at the end of the
// table.
if prevSampleNum == point.SampleNum {
return nil, fmt.Errorf("meta.NewSeekTable: invalid seek point; sample number (%d) is not unique", point.SampleNum)
return nil, fmt.Errorf("meta.ParseSeekTable: invalid seek point; sample number (%d) is not unique", point.SampleNum)
} else if prevSampleNum > point.SampleNum {
return nil, fmt.Errorf("meta.NewSeekTable: invalid seek point; sample number (%d) is not in ascending order", point.SampleNum)
return nil, fmt.Errorf("meta.ParseSeekTable: invalid seek point; sample number (%d) is not in ascending order", point.SampleNum)
}
}
prevSampleNum = point.SampleNum

View file

@ -41,7 +41,7 @@ type StreamInfo struct {
MD5sum [16]byte
}
// NewStreamInfo parses and returns a new StreamInfo metadata block. The
// ParseStreamInfo parses and returns a new StreamInfo metadata block. The
// provided io.Reader should limit the amount of data that can be read to
// header.Length bytes.
//
@ -60,7 +60,7 @@ type StreamInfo struct {
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_streaminfo
func NewStreamInfo(r io.Reader) (si *StreamInfo, err error) {
func ParseStreamInfo(r io.Reader) (si *StreamInfo, err error) {
br := bit.NewReader(r)
// field 0: block_size_min (16 bits)
// field 1: block_size_max (16 bits)
@ -79,13 +79,13 @@ func NewStreamInfo(r io.Reader) (si *StreamInfo, err error) {
si = new(StreamInfo)
si.BlockSizeMin = uint16(fields[0])
if si.BlockSizeMin < 16 {
return nil, fmt.Errorf("meta.NewStreamInfo: invalid min block size; expected >= 16, got %d", si.BlockSizeMin)
return nil, fmt.Errorf("meta.ParseStreamInfo: invalid min block size; expected >= 16, got %d", si.BlockSizeMin)
}
// Maximum block size.
si.BlockSizeMax = uint16(fields[1])
if si.BlockSizeMax < 16 || si.BlockSizeMax > 65535 {
return nil, fmt.Errorf("meta.NewStreamInfo: invalid min block size; expected >= 16 and <= 65535, got %d", si.BlockSizeMax)
return nil, fmt.Errorf("meta.ParseStreamInfo: invalid min block size; expected >= 16 and <= 65535, got %d", si.BlockSizeMax)
}
// Minimum frame size.
@ -97,7 +97,7 @@ func NewStreamInfo(r io.Reader) (si *StreamInfo, err error) {
// Sample rate.
si.SampleRate = uint32(fields[4])
if si.SampleRate > 655350 || si.SampleRate == 0 {
return nil, fmt.Errorf("meta.NewStreamInfo: invalid sample rate; expected > 0 and <= 655350, got %d", si.SampleRate)
return nil, fmt.Errorf("meta.ParseStreamInfo: invalid sample rate; expected > 0 and <= 655350, got %d", si.SampleRate)
}
// According to the specification 1 should be added to both ChannelCount and
@ -108,13 +108,13 @@ func NewStreamInfo(r io.Reader) (si *StreamInfo, err error) {
// Channel count.
si.ChannelCount = uint8(fields[5]) + 1
if si.ChannelCount < 1 || si.ChannelCount > 8 {
return nil, fmt.Errorf("meta.NewStreamInfo: invalid number of channels; expected >= 1 and <= 8, got %d", si.ChannelCount)
return nil, fmt.Errorf("meta.ParseStreamInfo: invalid number of channels; expected >= 1 and <= 8, got %d", si.ChannelCount)
}
// Bits per sample.
si.BitsPerSample = uint8(fields[6]) + 1
if si.BitsPerSample < 4 || si.BitsPerSample > 32 {
return nil, fmt.Errorf("meta.NewStreamInfo: invalid number of bits per sample; expected >= 4 and <= 32, got %d", si.BitsPerSample)
return nil, fmt.Errorf("meta.ParseStreamInfo: invalid number of bits per sample; expected >= 4 and <= 32, got %d", si.BitsPerSample)
}
// Sample count.

View file

@ -24,7 +24,7 @@ type VorbisEntry struct {
Value string
}
// NewVorbisComment parses and returns a new VorbisComment metadata block. The
// ParseVorbisComment parses and returns a new VorbisComment metadata block. The
// provided io.Reader should limit the amount of data that can be read to
// header.Length bytes.
//
@ -44,7 +44,7 @@ type VorbisEntry struct {
// }
//
// ref: http://flac.sourceforge.net/format.html#metadata_block_vorbis_comment
func NewVorbisComment(r io.Reader) (vc *VorbisComment, err error) {
func ParseVorbisComment(r io.Reader) (vc *VorbisComment, err error) {
// Vendor length.
var vendorLen uint32
err = binary.Read(r, binary.LittleEndian, &vendorLen)
@ -86,7 +86,7 @@ func NewVorbisComment(r io.Reader) (vc *VorbisComment, err error) {
vector := string(buf)
pos := strings.Index(vector, "=")
if pos == -1 {
return nil, fmt.Errorf("meta.NewVorbisComment: invalid comment vector; no '=' present in: %q", vector)
return nil, fmt.Errorf("meta.ParseVorbisComment: invalid comment vector; no '=' present in: %q", vector)
}
// Comment.