Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

opción "name" del cli no debería dejar usar caracteres especiales #188

Open
asanzo opened this issue Sep 19, 2024 · 6 comments · May be fixed by #193
Open

opción "name" del cli no debería dejar usar caracteres especiales #188

asanzo opened this issue Sep 19, 2024 · 6 comments · May be fixed by #193
Assignees
Labels
bug Something isn't working componente: init Inicialización de un proyecto

Comments

@asanzo
Copy link
Contributor

asanzo commented Sep 19, 2024

Luego de hacer

wollok init -g -n 2024-o-tpiJuego

Me encuentro con código que no anda:

image

Debería:

  • Tirarme un error si uso un name equivocado, o bien
  • Sanitizar donde corresponda.
@PalumboN PalumboN added bug Something isn't working componente: init Inicialización de un proyecto labels Sep 22, 2024
@nmigueles
Copy link
Contributor

Creo que el problema no es el caracter especial - si no que arranca con un numero.

Probe esto y funciono

wollok init Juego2024-TP-1 -g -n Juego2024-TP-1
image

@nmigueles
Copy link
Contributor

No estoy seguro, pero parece un problema del parser a la hora de interpretar el import

@nmigueles nmigueles linked a pull request Sep 30, 2024 that will close this issue
@asanzo
Copy link
Contributor Author

asanzo commented Sep 30, 2024

Buen dato!!

De todas formas, el name termina estando en nombres de archivos y en imports:

wollok init -g -n falopa

tira:

2024-09-29_21-34

Entonces,

  • Todo name debe ser un filename válido
  • Todo name debe ser un nombre de módulo válido

Cada una de esas cosas tiene requisitos distintos.

Por ejemplo, un filename válido puede empezar con número, o tener un punto, pero como vos decís un módulo no.

Y no sé si un módulo admite caracteres como / , ? y otros, que podrían valer para un módulo, pero seguro no valen para un filename.

Entonces, no tengo que poder crear un proyecto con un name que no respete ambas restricciones (y no sé cuáles más)

Acá:

const exampleName = name ?? 'example'

Me imagino algo así como:

const exampleName = sanitize(name ?? 'example')

/** Sanitizes project name to allow it to be used as a filename and as a module name.
* If it doesn't start with a lowercase letter or a '_', it adds '_' at the beggining.
* Replaces every symbol not allowed with a '_'.
*/
const sanitize = name => name[0].replace(/([^a-z_])/g,'_$1') + name.slice(1).replace(/[^a-zA-z1-9_-]/g, '_')

@nmigueles
Copy link
Contributor

Sii, tuve en cuenta eso en la implementación del pr que subi hace un rato.
Lo único que no sanitiza, solo hace un camel case, no estaría mal agregar una sanitización como la que propones para dejarlo mas robusto

@nmigueles
Copy link
Contributor

nmigueles commented Sep 30, 2024

@asanzo Cuando tengas un ratito fijate que te parece la implementación #193 que le agregue algo muy parecido a lo que proponias como fn de sanitización

@asanzo
Copy link
Contributor Author

asanzo commented Sep 30, 2024

Jajajaja essssaa!!!! ¿Falra chequear longitud mínima quizás? De 1 caracter.... No?

Del resto, me gustaría chusmearlo mejor en la pc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working componente: init Inicialización de un proyecto
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants