Analizador de contenido
Crea una función que reciba una cadena y devuelva un objeto. El objeto devuelto tendrá una propiedad común para todos los tipos de contenido detectados llamada contentType; los valores posibles para esta propiedad son "HTML", "CSS", "TEXT".
- Tu función debe poder detectar HTML y CSS; de lo contrario, será simplemente TEXT.
- Si detectas HTML, el objeto devuelto tendrá una propiedad especial llamada "tags". "tags" es un objeto con los nombres de todas las etiquetas del contenido y cuántas veces aparecen esas etiquetas en el contenido (consulta el ejemplo #3).
- Si detectas CSS, el objeto devuelto tendrá una propiedad especial llamada
cssTargets.cssTargetses un objeto con los nombres de todos los objetivos del contenido y cuántas veces aparecen esas etiquetas en el contenido (consulta el ejemplo #2). - Si no detectas HTML ni CSS, el contenido se detecta como TEXT y el objeto tendrá una propiedad especial llamada
lineNumber(consulta el ejemplo #1).
Ejemplos
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 } }Notas
- Si se ha detectado contenido HTML, el objeto devuelto no puede tener las propiedades
cssTargetsnilineNumber, y lo mismo se aplica a cada tipo de detección. Solo la propiedad comúncontentTypepermanece dentro del objeto. <!DOCTYPE html>y los comentarios no deben detectarse.- El contenido puede estar minificado o no, según sea necesario.