Como Usar Digitações Efetivamente?

+5

No JetPunk, temos o que chamamos de digitações (type-ins). Elas usam expressões regulares para combinar o padrão do que o usuário inseriu na caixa de texto com as expressões definidas. Por exemplo, a expressão pode significar simplesmente "digite CÃO exatamente", sendo que o usuário teria que digitar a palavra "cão". 

Nesse ponto, é preciso mencionar que o JetPunk não é sensível à maiúsculas e minúsculas, o que significa que "AlFa" é considerado a mesma coisa que "aLfA". Isso é útil, pois não precisamos distinguir entre letras maiúsculas e minúsculas.

Ao criar digitações, para muitas respostas, uma digitação automática será carregada por padrão. Isso é principalmente para respostas comuns, como Países, Cidades ou Estados, embora também existam muitos outros. Se não for uma dessas respostas comuns, o JetPunk simplesmente sugerirá uma digitação baseada nas letras, como um "y" no final de uma palavra que terá a digitação "(EE|EY|IE|Y)" sugerida. Veremos o que isso significa mais tarde.

Digitações Simples

Existem várias formas simples de adicionar digitações às respostas do JetPunk. Para cada resposta, lhe são apresentadas três opções: "Auto", "Custom" ou "Exact".

  • Auto (automático) usará a digitação automática, se disponível, ou, do contrário, a digitação sugerida.
  • Custom (personalizado) lhe permitirá adicionar suas próprias digitações.
  • Exact (exato) requer a palavra exata para ser inserida, sem a aplicação de digitações sugeridas.

Já que as outras duas não possuem personalizações, apenas "Custom" vale a pena ser discutida em detalhes. Ao selecioná-la, você perceberá que 4 opções aparecem no final da caixa:

  • + Starts (Começa) - essa é a opção padrão, que te permite decidir com o que o usuário deverá iniciar as respostas para digitar. Exemplo, configurar isso para "CHINA" significa que o usuário deve começar sua resposta com o texto "china" para ser aceito como resposta.
  • + Ends (Termina) - é similar ao acima, exceto que isso requer que o final da resposta seja algo específico. Exemplo, configuar isso para "EVEREST" significa que a resposta do usuário termina com aquilo, então "everest" e "monteeverest" seriam ambas aceitas.
  • + Contains (Contém) - essa opção permite que você aceite respostas contendo uma sequência específica de caracteres. Um exemplo comum disso é "CONGO", que aceita qualquer resposta que contenha a palavra "congo" em algum lugar.
  • + Regex - permite a personalização completa, que é discutida em detalhes abaixo.

No geral, começar com digitações é bem fácil, mas fazer digitações que correspondam a muitas suposições possíveis é mais útil. Por exemplo, você nunca será capaz de adicionar todos os possíveis erros ortográficos de "Cazaquistão" usando os 3 primeiros acima, sendo que para isso precisamos de algumas ferramentas mais poderosas.

Digitações Usando RegEx

RegEx é uma abreviação para Regular Expression (Expressão Regular) e refere-se à uma ferramenta quase universal na programação que permite que você padronize a correspondência de texto com maiúsculas e minúsculas. Usaremos uma versão simplificada, pois muitos dos recursos do RegEx não são úteis ou não estão disponíveis no JetPunk. Por exemplo, existem caracteres usados ​​para correspondência de padrões em alguns símbolos, mas isso é inútil, pois a caixa de resposta no JetPunk aceita apenas entrada alfanumérica (letras e números).

Existem 4 "sinais" (tokens) diferentes que são úteis para nós:

  • Classes de Caracteres
  • Âncoras
  • Quantificadores e Alternação
  • Agrupamentos

Veremos o que cada um deles faz, com exemplos, e então combiná-los no fim.

Classes de Caracteres

As classes de caracteres definem um conjunto de caracteres a serem comparados. Estes são definidos usando colchetes [ ]. Por conta própria, eles corresponderão apenas a uma letra de cada vez dentro das letras entre colchetes, chamados de classes.

Exemplos:

  • [ABC] - isso, apenas, corresponderá qualquer resposta que contenha um A, um B, ou um C
  • F[OEU]D - isso só corresponderá quando FOD, FED ou FUD forem digitados, já que [OEU] só corresponde com um caractere (veremos depois como aumentar isso com os Quantificadores)
  • [A-G] - você também pode usar um traço para permitir que o padrão corresponda a qualquer letra entre A e G
  • [0-7] - esse recurso também funciona com números
  • [AE][FG] - essas classes de caracteres também podem ser colocadas lado a lado, e isso corresponderá quando AF, AG, EF ou EG for inserido

Âncoras

As âncoras são usadas para definir onde devemos combinar. Existem, tecnicamente, 3 âncoras que usamos:

  • ^ - isso vai no começo de uma digitação, para indicar que queremos que nossa resposta "Comece com" o que quisermos
  • $ - já essa vai no fim de uma digitação, para indicar que queremos que nossa resposta "Termine com" o que quisermos
  • Apesar de que esta última seja um pouco confusa, é na verdade a ausência de ^ ou $, que significa que queremos que nossa resposta "Contenha" o que quisermos.

Você notará que essas três opções se alinham com as opções do JetPunk mencionadas anteriormente na seção de Digitações Simples. A desvantagem de usar tais opções é que você não pode usar nenhum outro RegEx dentro delas, apenas o sistema alfa-númerico (letras e números simples).

Exemplos:
  • ^COMIDA - isso significa que queremos que nossa resposta comece com "comida", esse é o tipo mais comum de digitação para respostas, já que simplesmente corresponde com você digitando a resposta
  • NDO$ - isso será ativado sempre que qualquer coisa digitada na caixa de texto terminar com "ndo", por exemplo "ndo", "brando", ou "olheoqueeuestoufazendo"
  • DENTRO - isso corresponderá a qualquer resposta que contenha o termo "dentro", por exemplo, "dentro" ou "oquehádentrodemim", embora no segundo caso você não conseguirá digitar "demim", pois a resposta já é confirmada com "oquehádentro"
  • ^V[AEI]R - corresponde a qualquer resposta que comece com o termo "var", "ver" ou "vir"

Acho que isso dá uma ideia de onde você pode ir. É fácil ver que usar um ^ e $ na mesma resposta seria inútil no caso do JetPunk.

Quantificadores e Alternação

Existem 3 tokens principais aqui que são úteis para o JetPunk e um adicional que é possível usar, mas não foi encontrado um uso específico para ele.

  • + - o sinal de mais corresponde a 1 ou mais do token anterior (pode ser caracteres ou outros tokens)
  • ? - o ponto de interrogação é, convenientemente, usado para corresponder a 0 ou 1 do token anterior. Particularmente usado para denotar caracteres opcionais em uma digitação
  • | - este é o caractere da linha vertical (pipe), chamado alternância. Isso funciona como uma operação ou booleana, o que significa que corresponderá à expressão antes ou depois do |. Pode atuar em um único grupo ou em toda uma expressão
O extra é *, que corresponde a 0 ou mais do token anterior. O que é plausível de usar, mas como mencionei, não consigo pensar em um uso prático para isso.
Exemplos:
  • ^[CK]OS+OVO - isso significa que precisamos começar com CO ou KO, e então podemos haver qualquer número de S's no meio, exemplo, "kosovo", "cossovo" ou "kossssssssssssovo"
  • ^BI?ELOR?RUSS?IA - essa digitação permite o usuário optar por escrever ou não as letras que precedem o token do ponto de interrogação, seja o I, o R ou o S, exemplo, "bielorrussia", "belorussia" ou "belorusia"
  • ^BA(K|C)U - esse exemplo permite uma alternância de duas letras da digitação: K e C, e será correspondido se a resposta for "baku" ou "bacu"
  • ^B[EU]+NOE?SAI?RES - esse tem um "E" e um "I" opcionais, e permite uma ou mais E's ou U's, então "buenosaires", "benoesares", e "bueeueueueeuuenoesaires" serão aceitos.
  • ^P[AI]+UI - esta é uma combinação particularmente útil, pois permitirá o token "[AI]" como um todo 1+ vezes, o que significa que podemos corresponder a "PAUI", "PIUI", "PIAUI" ou mesmo "PIAIAIAIAIAIAIAIAIAIAUI"! Isso é útil quando você tem palavras difíceis de soletrar com as quais os usuários podem precisar de ajuda (veja o próximo exemplo)
  • ^(SRI|SERI)?(J[A-Z]+PURA)?(KOTTE|COTA) - a famosa digitação da capital cingalesa! Isso permite que a resposta comece ou não com "SRI" ou "SERI". Então, é seguida de um "J", depois a melhor parte - qualquer número de letras do alfabeto (pelo menos uma), um "PURA", sendo os três opcionais. E o usuário pode optar por escrever "KOTTE" ou "COTA", o que significa que podemos escrever "srijayawardenepurakotte", "serijaiavardenapuracota", ou até mesmo "entranomeuservidordajetpunklusofonaporfavorrrrrrrrkotte". CUIDADO: Essa combinação "[AZ]+" deve ser usada com parcimônia, senão ele pode acabar aceitando respostas que você não queria

Algumas combinações não são válidas, como ?+ já que isso logicamente não faz sentido, também +? é válido, mas não faz nada diferente de + de qualquer maneira.

Um exemplo daquele token de asterisco poderia ser ^MA*INE, que permite correspondências como "MINE", "MAINE, ou "MAAAAAAINE", já que todos esses contém 0 ou mais A's. De novo, isso pode ser feito no JetPunk, mas não há um exemplo prático pra isso ainda.

Agrupamentos

Por último, os agrupamentos utilizam parênteses normais ( ) para agrupar caracteres ou tokens. Isso significa que você pode aplicar todas as ferramentas anteriores para criar qualquer digitação que desejar agora.

Exemplos:

  • ^C(OU|UO)TO - usa uma alternância para corresponder com "ou" OU "uo", então "couto" e "cuoto" são ambos aceitos. Estes são usados ​​em abundância para fornecer grafias alternativas
  • ^LOUCO(CARA)?SOU - usa um opcional em um grupo de captura inteiro, o que significa que apenas respostas começando com "loucosou" e "loucocarasou" são aceitas aqui
  • ^J[AEIOU]T+PUN?K - agora fica um pouco mais complexo, já permitindo que o segundo caractere seja qualquer vogal, bem como permitindo 1+ T's depois e um N opcional. Então "jetpunk", "jutttpuk " e "jatpuk" são todos válidos para este tipo de digitação
  • ^R[AEY]+[CKQ]+[A-Z]+V(IK|IC|IQUE) - parece meio difícil, portanto vamos dividir em partes:
    • ^R[AEIY]+ - essa combinação nos diz para começar a resposta com "R", e adicionar A's, E's, I's ou Y's, uma ou mais vezes, como em "rey", "raaaaaaaa" ou até "ryaiiiaeayiyyaaaeyiaa"
    • [CKQ]+ - aqui, a resposta deve conter um ou mais C's, K's ou Q's, permitindo "k", "cccccccq" ou "ckqkckkqccqckqqqckqkqckqckqkckkkqc"
    • [A-Z]+ - de novo, a bendita "[A-Z]+". Essa poderosa ferramenta nos permite inserir quaisquer letras do alfabeto, o que nos permite ser criativos fazendo "ja", "hhbcobvewopubuwobpqbz" ou até "temandeientrarnoservidorbichovailogoqueuaindaestouesperando"
    • V(IK|IC|IQUE) - por último, esse fragmento mostra que devemos escrever o "V", e optar por "IK", "IC" ou "IQUE" logo em seguida, o que permite "vik", "vic", ou "vique"

Possíveis correspondências para esse último são "reykjavik", "reiquiavique" ou "raeiycckqqqqqentrouounãocarambaquechaticevic".

Como você pode ver, em combinação, essas podem ser ferramentas muito poderosas que podem fornecer digitações muito úteis para criadores e jogadores de quizzes.

Qual é o ponto?

O objetivo das digitações é fornecer uma maneira mais fácil de combinar às possíveis respostas do usuário. Sim, é possível apenas digitar todas as grafias possíveis que alguém pode inserir como resposta, mas e se você errar o jeito de alguém escrever errado? E por que fazer isso quando podemos simplificá-los?

Se voltarmos ao nosso exemplo de Sri Jayawardenapura Kotte:

^(SRI|SERI)?(J[A-Z]+PURA)?(KOTTE|COTA)

Esse tipo de digitação faz maravilhas, já que quase todo mundo escreve esse nome incorretamente de uma maneira diferente em algum momento. Essa digitação foi feita reduzindo-a ao que deveria ser a palavra Sri Jayawardenapura Kotte, até um ponto que apenas "kotte" pôde ser aceito. 

Por fim, muitos usuários apreciam quando o criador se esforça nas digitações, pois isso torna o questionário mais agradável de responder, especialmente quando algumas das respostas vêm de outros idiomas ou podem ser simplesmente estranhas na ortografia ou na formação.

Além disso, se você quiser explorar o RegEx além do JetPunk para praticar ou não, o RegExr (inglês) é uma excelente ferramenta para se familiarizar com toda a terminologia e recursos. Também é útil para testar as digitações mais complicadas!

Uma nota do editor

A chance de você ler isso e ser brasileiro, português, angolano, que seja, é baixa. Espero mais comentários estrangeiros apoiando a criação de um blog informativo em português do que nativos agradecendo por alguma informação nova aprendida. Isso é desanimador, já que o idioma português é um dos dez com mais falantes por todo o mundo.

Então, tomei a liberdade de criar um servidor lusófono no Discord, com o intuito de trazer essa seção à tona. Esse blog também foi criado pra atrair usuários iniciantes nessa parte do site, que é um plano meu de traduzir algumas páginas anglófonas para o português, sendo esse o caso desse belíssimo blog do nosso querido Stewart.

Se você leu até aqui, obrigado. Seria uma honra ter seu trabalho compartilhado aqui, sobretudo se aceitar o convite ao servidor.

ok poirot give me peace now smh

+2
Nível 32
5 de Abr de 2023
^(ENTR(A|E|EM)NO(MEU)?SERV[EI]+DOR(CARAMBA)?
+1
Nível 18
5 de Abr de 2023
em fim!!!
+1
Nível 18
5 de Abr de 2023
Ha coisas que eu nao sabia
+2
Nível 32
5 de Abr de 2023
Mas vem tudo do blog de digitações do Stewart. Só mudei as digitações para se encaixarem mais com o português kkkkk
+1
Nível 18
5 de Abr de 2023
kkkk, eu nao sabia ni esso
+1
Nível 32
5 de Abr de 2023
eu disse no fim mas ok kkkkkk
+1
Nível 18
5 de Abr de 2023
😬
+1
Nível 1
5 de Abr de 2023
good tips!
+1
Nível 32
5 de Abr de 2023
Thank you!
+3
Nível 31
5 de Abr de 2023
The ad I got on this page is accurate: "It's finally here"
+3
Nível 10
6 de Abr de 2023
I give you peace... or at least for this year. 👀
+1
Nível 1
8 de Abr de 2023
Wait general question do you feel safe in Brazil
+1
Nível 32
4 de Mai de 2023
I’m sorry for the late reply. I was kidnapped on a favela in Rio de Janeiro by a motorcycle taxi. Glad to be back.
+1
Nível 14
12 de Abr de 2023
Jot Pun

According to the type in, that's right!

*Angry Stewart noises*