LimaRAF / plantR

An R Package for Managing Species Records from Biological Collections
GNU General Public License v3.0
18 stars 4 forks source link

dealing with non-ASCII characters #1

Closed saramortara closed 3 years ago

saramortara commented 4 years ago

When running devtools::check() we get this warning

Found the following files with non-ASCII characters: colNumber.R fixName.R getYear.R Portable packages must use only ASCII characters in their R code, except perhaps in comments. Use \uxxxx escapes for other characters.

We need to check all these functions to not use non ASCII and maybe use textclean package

LimaRAF commented 4 years ago

@saramortara All of these issues are in the section @examples of the functions documentation. In the last commit these warning are still there, as warnings. Will try to check if the packages you suggest can solve them.

LimaRAF commented 3 years ago

@saramortara I fixed the non-ASCII character warning from fixName(). If I am not wrong these were the last issues of this type in the package check. So, I am closing this issue for now.

LimaRAF commented 3 years ago

@saramortara @AndreaSanchezTapia

Not really solved the issued. Check results of 20/01/2021:

Found the following files with non-ASCII characters: fixLoc.R fixName.R getCult.R getInit.R getYear.R lastName.R missName.R prepCoord.R prepLoc.R prepName.R prepTDWG.R test.R validateTax.R

Any ideas on how to so;lve it internally?

AndreaSanchezTapia commented 3 years ago

If you have special characters inside your code you need to replace them with their unicode counterpart. I usually do this using package uniscape https://github.com/mvkorpel/uniscape. When you install it, it will show in the Addins menu (under Uniscape) and you can Use Escape strings, Escape selection or Escape selected strings, it will replace them.

LimaRAF commented 3 years ago

@saramortara @AndreaSanchezTapia

Consegui arrumar alguns casos passando os non-ascii que estavão em objetos de busca (grep, %in%) para o sysdata. Outros casos eram non-ascii nos exemplos ou no grep. Arrumei na mão nesses casos, substituindo pelo caractere unicode correspondente (e.g. '\xE3'). A lista diminuiu: fixName.R getInit.R getYear.R lastName.R prepLoc.R prepName.R prepTDWG.R validateTax.R

Nesse casos que sobraram, ou eu não consegui saber onde está o problema (@AndreaSanchezTapia o pacote uniscape não está disponível para a minha versão do R...). Mas em outros casos me parece que o devtools::check() está pegando os non-ascii dentro de intervalos de caracteres dentro expressões regulares de um gsub ou de um grepl (e.g. gsub("[A-ZÁ-Ý]", "", x). Sinceramente, eu não esperava que dentro das aspas, dentro dos colchetes, dentro da função, o check ia ranhetar. Nesses casos, teria que testar se colocar os equivalentes do Á e do Ý em unicode não altera o resultado esperado (nesse caso pegar maiusculas com ou sem acento).

Mas antes de sair mudando tudo, queria saber se no check de vcs, o problema dos non-ascii aparece nas mesmas funções. Vcs poderiam conferir por favor?

AndreaSanchezTapia commented 3 years ago

Fazendo pull agora. Em checks anteriores tem sido mais ou menos essa lista sim mas dou retorno. Que eu saiba não vai mudar mas vale checar localmente.

AndreaSanchezTapia commented 3 years ago

Mesma lista: fixName.R getInit.R getYear.R lastName.R prepLoc.R prepName.R prepTDWG.R validateTax.R

Porém:

Updating plantR documentation
Loading plantR
Error in parse(text = lines, n = -1, srcfile = srcfile) : 
  mixing Unicode and octal/hex escapes in a string is not allowed
LimaRAF commented 3 years ago

Okay, valeu Andrea. Vou tentar resolver daqui então. Um saco esses warnings....

On Thu, Jan 21, 2021 at 6:02 PM AndreaSanchezTapia notifications@github.com wrote:

Mesma lista: fixName.R getInit.R getYear.R lastName.R prepLoc.R prepName.R prepTDWG.R validateTax.R

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/LimaRAF/plantR/issues/1#issuecomment-764794655, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADX2Z3WPT2B4YUZYCQWN55LS3BM2RANCNFSM4J2OOXCQ .

-- Renato Lima www.renatodelima.com Lab. de Ecologia Teórica, Depto. de Ecologia, USP

AndreaSanchezTapia commented 3 years ago

@LimaRAF estou revisando aquele lance do unicode. Temos um choque de codificaçoes porque vc está tendo que usar latin1 em alguns casos, mas a função lida bem (por fora). Porém, dentro da função tem que ser tudo unicode, então estou substituindo aqui. Para não deixar perder nada, você pode me passar as opções de Júnior, Filho e Sobrinho? Como não vejo esses erros não tenho as opções na mão.

Edit: os exemplos com encoding em laint1 vão ter que sair, a gente pode checar que funcione mesmo assim mas para documentação de pacote dá problema

LimaRAF commented 3 years ago

@AndreaSanchezTapia

Revi geral a questão do códigos em unicode e resolvi os regexp para leters com e sem acentos. Rodei o chek localmente e agora não tenha mais esse warning (ver commit 02b7e12).

Ainda resta a parte dos helps. Eu coloquei todas as possibilidades de encodign do meu Rstudio para UTF-8. Mas ao gerar a documentação das funções, os problemas de encoding persistem. Inclui um @enconding UTF-8 na descrição da função e os unicode escapes, mas o help ainda aparce zuado pra mim.

Alguma idéia de como resolver?