func (p *pronom) identifier() *Identifier { p.Identifier = &Identifier{ p: p, name: config.Name(), details: config.Details(), noPriority: config.NoPriority(), infos: infos(p.j.Infos()), } if p.hasPuid(config.ZipPuid()) { p.Identifier.zipDefault = true } return p.Identifier }
func (r *Recorder) Record(m core.MatcherType, res core.Result) bool { switch m { default: return false case core.ExtensionMatcher: if res.Index() >= r.eStart && res.Index() < r.eStart+len(r.ePuids) { idx := res.Index() - r.eStart r.ids = add(r.ids, r.name, r.ePuids[idx], r.infos[r.ePuids[idx]], res.Basis(), extScore) return true } else { return false } case core.MIMEMatcher: if res.Index() >= r.mStart && res.Index() < r.mStart+len(r.mPuids) { idx := res.Index() - r.mStart r.ids = add(r.ids, r.name, r.mPuids[idx], r.infos[r.mPuids[idx]], res.Basis(), mimeScore) return true } else { return false } case core.ContainerMatcher: // add zip default if res.Index() < 0 { if r.zipDefault { r.cscore += incScore r.ids = add(r.ids, r.name, config.ZipPuid(), r.infos[config.ZipPuid()], res.Basis(), r.cscore) } return false } if res.Index() >= r.cStart && res.Index() < r.cStart+len(r.cPuids) { idx := res.Index() - r.cStart r.cscore += incScore basis := res.Basis() p, t := place(idx, r.cPuids) if t > 1 { basis = basis + fmt.Sprintf(" (signature %d/%d)", p, t) } r.ids = add(r.ids, r.name, r.cPuids[idx], r.infos[r.cPuids[idx]], basis, r.cscore) return true } else { return false } case core.ByteMatcher: if res.Index() >= r.bStart && res.Index() < r.bStart+len(r.bPuids) { if r.satisfied { return true } idx := res.Index() - r.bStart r.cscore += incScore basis := res.Basis() p, t := place(idx, r.bPuids) if t > 1 { basis = basis + fmt.Sprintf(" (signature %d/%d)", p, t) } r.ids = add(r.ids, r.name, r.bPuids[idx], r.infos[r.bPuids[idx]], basis, r.cscore) return true } else { return false } case core.TextMatcher: if res.Index() == r.tStart { if r.satisfied { return true } r.ids = add(r.ids, r.name, config.TextPuid(), r.infos[config.TextPuid()], res.Basis(), textScore) return true } else { return false } } }