Skip to content

Chore/sync upstream v0.3.7#3

Open
diegocostares wants to merge 18 commits into
masterfrom
chore/sync-upstream-v0.3.7
Open

Chore/sync upstream v0.3.7#3
diegocostares wants to merge 18 commits into
masterfrom
chore/sync-upstream-v0.3.7

Conversation

@diegocostares

Copy link
Copy Markdown

Qué se hizo

Se realizó una sincronización de la gema con el repositorio upstream original (planio-gmbh/plaintext) para incorporar las correcciones y mejoras liberadas hasta la versión v0.3.7. El número de versión se ha actualizado a 0.3.7-buk.1.

Resolución de Conflictos y Conservación de Reglas Propias (Buk)

El repositorio de Buk mantiene modificaciones (hard fork) implementadas en 2020 para adaptar la extracción de texto a las necesidades del parseo de CVs locales. Durante el merge de la versión 0.3.7 se presentaron conflictos que fueron resueltos preservando estrictamente la lógica de Buk:

  1. Gestión de Saltos de Línea en Archivos Zipped XML (DOCX/ODT):

    • Conflicto: El upstream actualizó el método Resolver#text para aplicar gsub!(/\s+/m, ' ') y strip!, forzando a que todo el texto quede en una sola línea separada por espacios.
    • Solución: Se descartó el cambio del upstream y se conservó la lógica original de Buk, protegiendo el comportamiento introducido en el commit 8ef2b206 (que utiliza \n en lugar de espacios vacíos). Esto es crítico para mantener la estructura vertical y legibilidad de los currículums.
  2. Gestión de Encoding:

    • Contexto: Se mantuvo intacto el comportamiento introducido en el commit 872944b5, el cual desactiva la conversión forzada de codificación en ExternalCommandHandler. Esto previene la destrucción de caracteres especiales y tildes en documentos en español.
  3. Adaptación de Tests (Specs):

    • Para que la suite de pruebas del upstream original pasara exitosamente bajo la lógica de saltos de línea de Buk, se modificaron los tests unitarios (opendocument_handler_spec.rb, docx_handler_spec.rb, etc.). Se reemplazaron los espacios literales en las aserciones por el patrón \s+ (cualquier espacio en blanco, incluyendo saltos de línea), logrando que los 27 tests pasen exitosamente sin alterar el comportamiento de extracción de la aplicación.

Beneficios de esta sincronización

  • Añade soporte oficial para el formato de archivos text/markdown.
  • Incluye parches de seguridad y estabilidad del upstream, previniendo excepciones de tipo FrozenError y manejos seguros de respuestas nil en el resolver.

jkraemer and others added 18 commits April 21, 2021 13:20
- this seems to have changed with newer unrtf versions
- missing the header we fail to strip away the other leading comments
- removed 2.6 from the list of tested ruby versions, added more recent
  ones.
- fixes errors with AS 7.1 as described in
  rails/rails#49495
- as per
  https://guides.rubyonrails.org/active_support_core_extensions.html#cherry-picking-a-definition,
  active_support itself should always be required.
Using "quiet" at end of the command will suppress the messages regarding
image resolution and empty pages.
When calling an external command and reading the output, `io.read`
returns `""` when no output is available, but `io.read(max_size)`
returns `nil` instead of `""`.

This return value is then converted to a string with `to_s`, and since
ruby 2.7, `nil.to_s` returns a frozen empty string. Then the
`Plaintext::Resolver` calling `gsub!` and `strip!` on this string lead
to a `FrozenError: can't modify frozen String`.

This is fixed by duplicating the string if it is frozen.
This avoids a "NoMethodError: undefined method '+@' for nil".
Resolver returns nil if the handler returns nil
- Se actualizaron los regex en los specs del upstream para soportar los saltos de línea de Buk.
- Se relajó la dependencia de desarrollo de bundler (de 1.17.2 a genérica) para permitir correr la suite de tests en versiones modernas de Ruby (3.3+).
@diegocostares diegocostares force-pushed the chore/sync-upstream-v0.3.7 branch from f9375bf to fac8a3b Compare June 30, 2026 21:33
@diegocostares diegocostares self-assigned this Jul 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants