Proposal: Rework internal html representation and diff logic
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Refactorización
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- tooling
Línea de trabajo
No se nombran archivos, pruebas ni puntos de entrada. Empieza localizando el código actual de representación HTML y de cálculo de diferencias, y después determina el alcance de los cambios propuestos en la estructura de nodos y en la generación de informes; el trabajo estaría terminado con un diseño acordado y la implementación y las pruebas correspondientes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I think we should use posthtml-like (bemjson-like) structure for internal representation to make diff calculation process cleaner and more flexible.
Current reports are non-informative on big projects.
Current way we comparing html documents leak on big files and don't feel quotes in attributes.
That's why we should think about core code refactoring.
Representation proposal
HtmlNode {
meta: MetaData, // Different meta data, raw string, another helpful data
tag: String,
classList: ClassesCollection, // Set of classes
attrs: Object<String, HtmlAttr>, // Map of attributes with attrs meta info like quote types
//? dataAttrs: Object<String, HtmlAttr>, // Map of data attributes
content: Array<TextNode, CommentNode, HtmlNode>
}
Samples proposal
<button class="button2" data-bem='{"button2":{}}'></button2>
→
{ meta: { diff: 'subset' }, tag: 'button', classList: ['button2'] }
Report proposal
(Something like https://github.com/chaijs/deep-eql mixed with https://github.com/debitoor/chai-subset)
/x/path
- tag: 'button'
+ tag: 'button2'
.or .selector
+ attrs.missed: 'attr'
button.or like.or__that
+ classList[2]: 'missed-class'
Futher possible features
- More accurate comparing methods where it needs (#144, #146).
- More clean diff calculation logic and testing possibilities (#139, #136, #127).
- HtmlNode can achieve additional fields to compare like
bemEntitieswith a set ofBemjsonNodesotBemEntityNames. - etc.
- Lenguaje dominante
- JavaScript
- Estrellas
- 217
- Forks
- 45
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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 bem/html-differ
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
bem/html-differ#175 ·
-
coa dependency seems broken Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
bem/html-differ#173 ·
-
Upgrade to diff version 3.5.0+ Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
bem/html-differ#171 · 1 comentario · 3 reacciones ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
bem/html-differ#170 · 2 comentarios · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
bem/html-differ#169 · 1 comentario ·
Todos los issues de bem/html-differ
Issues similares
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Improve Title Support Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
georgestephanis/p2026#40 ·
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Margaret-Petersen/food-delivery-app-clone-react-native#1981 ·