Analisador de conteúdo
Crie uma função que receba uma string e retorne um objeto. O objeto retornado terá uma propriedade comum a todos os tipos de conteúdo detectados chamada contentType; os valores possíveis para essa propriedade são "HTML", "CSS", "TEXT".
- Sua função deve ser capaz de detectar HTML e CSS; caso contrário, será simplesmente TEXT.
- Se você detectar HTML, o objeto retornado terá uma propriedade especial chamada "tags". "tags" é um objeto com os nomes de todas as tags do conteúdo e quantas vezes essas tags aparecem no conteúdo (veja o exemplo #3).
- Se você detectar CSS, o objeto retornado terá uma propriedade especial chamada
cssTargets.cssTargetsé um objeto com os nomes de todos os alvos do conteúdo e quantas vezes essas tags aparecem no conteúdo (veja o exemplo #2). - Se você não detectar HTML nem CSS, o conteúdo será detectado como TEXT e o objeto terá uma propriedade especial chamada
lineNumber(veja o exemplo #1).
Exemplos
analyzeContent("this is a test\nSeems to work")
➞ { contentType: "TEXT", lineNumber: 2 }
analyzeContent("body{blabla} a{color:#fff} a{ padding:0}")
➞ { contentType: "CSS", cssTargets: { body: 1, a: 2 } }
analyzeContent("<html><div></div><div></div></html>")
➞ { contentType: "HTML", tags: { html: 1, div: 2 } }Observações
- Se o conteúdo HTML for detectado, o objeto retornado não poderá ter as propriedades
cssTargetselineNumber, e o mesmo se aplica a cada tipo de detecção. Somente a propriedade comumcontentTypepermanecerá dentro do objeto. <!DOCTYPE html>e comentários não devem ser detectados.- O conteúdo pode ser minificado ou não, conforme necessário.