Replace CSSOM so new CSS features are supported
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Refactorización
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- css, javascript
Línea de trabajo
Comienza con el ejemplo de parseHTML del issue e inspecciona cómo linkedom integra CSSOM; no se menciona ningún archivo fuente ni ninguna prueba. Compara el comportamiento actual de CSSOM con los parsers candidatos del benchmark enlazado. Se considera terminado cuando el CSS anidado y otras reglas CSS modernas se procesan sin excepciones, mientras la funcionalidad CSS necesaria y el rendimiento siguen siendo aceptables.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi,
I noticed that currently linkedom fails to parse styles with nested CSS rules. Here's a sample code:
import {parseHTML} from "linkedom";
const doc = parseHTML(`
<style>
.parent { .child { color: red; }}
</style>
`).document;
console.log(doc.children[0].sheet);
Looking into it, it seems like this is an issue with CSSOM, which makes sense considering that project stopped receiving updates 5 years ago and is marked as unmaintained. Although I didn't check, I assume other kinds of 'modern' CSS rules will also raise an exception when parsed.
I would like to know if there is interest in replacing it with an up-to-date CSS parser implementation.
Looking online, I found a benchmark that shows that a few other CSS parsers more or less match the performance of CSSOM, which I know is an important factor for this project.
If this is desired I can take a look into changing the backing implementation, probably trying the projects in the order they appear in that benchmark (I don't know which of those provides the functionalities linkedom requires).
- Lenguaje dominante
- HTML
- Estrellas
- 2.1k
- Forks
- 108
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de WebReflection/linkedom
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
WebReflection/linkedom#329 · 5 comentarios ·
-
`el.style.property = ''` and `e.style.setProperty('property', '')` should delete the propertyAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
WebReflection/linkedom#327 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
WebReflection/linkedom#326 · 5 comentarios ·
-
Build Apps For AI Agent.Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
WebReflection/linkedom#321 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
WebReflection/linkedom#317 · 2 reacciones ·
Todos los issues de WebReflection/linkedom
Issues similares
-
accepted bug small
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
refined-github/refined-github#10133 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
coder/xum#4739 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
lichess-org/lila#21826 ·
Los mantenedores suelen responder en 1 día
-
dfm.ruAbiertoN: AdGuard for Mac P4: Low T: Social Widget
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
AdguardTeam/AdguardFilters#242670 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día