Ferramentas de texto e do dia a dia · Kit de ferramentas de texto
Por que as listas classificadas diferem entre computadores: explicação da classificação com reconhecimento de localidade
· Por que é importante
ferramentas de texto classificação localidades
Explica a diferença entre ordem de ponto de código e agrupamento de localidade, por que ä, é e letras maiúsculas aparecem em lugares diferentes em máquinas diferentes e como comcomcompartilhar uma lista classificada sem surpresas.
A mesma lista, duas ordens – o tipo de um colega coloca Ångström em outro lugar, e nenhum de vocês está errado
Um líder de equipe pode enviar a mesma lista de nomes de participantes para colegas em dois países e receber duas ordens alfabéticas plausíveis. Nomes contendo letras acentuadas são o ponto usual de discordância, porque a colocação alfabética não é determinada apenas pela letra base visível. O ambiente do navegador participa da comparação.
Nenhum dos colegas precisa ter cometido um erro manual. O problema prático é que “classificar alfabeticamente” não identifica uma sequência universal para texto multilíngue. Antes de analisar adições ou remoções, defina qual pedido concluído é oficial; caso contrário, uma comparação linha por linha mostrará o movimento causado apenas por decisões de classificação separadas.
Ordem de pontos de código - por que uma classificação ingênua coloca todas as letras maiúsculas antes de cada letra minúscula e empurra as letras acentuadas para o final
O esboço descreve uma classificação ingênua de ponto de código que coloca letras maiúsculas antes de letras minúsculas e letras acentuadas no final, mas não é isso que o Text Toolkit implementa. Sua função `sortLines` copia as linhas e compara cada par com `localeCompare`, para que as regras de agrupamento do navegador sejam consultadas em vez dos números de caracteres brutos.
O tratamento de casos também está explícito nas opções de função. A classificação que diferencia maiúsculas de minúsculas solicita sensibilidade `variant`, enquanto o modo padrão que não diferencia maiúsculas de minúsculas solicita sensibilidade `base`. Isso pode fazer com que formas com maiúsculas ou minúsculas diferentes sejam comparadas como equivalentes, deixando seu posicionamento relativo dependente da ordem estável fornecida ao classificador, em vez de forçar as letras maiúsculas em um bloco separado.
ToolAcre não usa ordem ingênua de ponto de código: ele chama localeCompare para cada linha
A comparação passa `undefined` como o código do idioma, que solicita ao tempo de execução que use seu comportamento de código do idioma padrão. A fonte não promete sueco, alemão, inglês ou qualquer outro agrupamento nomeado, e a interface representada por esta função não possui argumento de localidade. A publicação aqui de ordens nacionais exactas iria, portanto, além das provas de implementação.
Este limite explica por que os resultados podem diferir sem provar exatamente qual configuração causou uma diferença específica. Registre o navegador e o ambiente quando a reprodutibilidade for importante, mas não infira uma localidade a partir da posição de um nome acentuado. O fato confiável é que o kit de ferramentas delega a ordem para `localeCompare` com o tempo de execução padrão, em vez de fixar um idioma compartilhado.
O navegador fornece o código de idioma padrão, mas o kit de ferramentas não oferece seletor de código de idioma
As execuções de dígitos também recebem tratamento especial. A função padroniza `numeric` como true e encaminha essa opção para `localeCompare`. Conseqüentemente, uma lista contendo `item2` e `item10` destina-se a colocar a execução numérica menor primeiro em ordem crescente, em vez de comparar o caractere `1` em dez com o caractere `2` em dois.
O preenchimento de zeros permanece útil quando os dados devem passar por outro classificador cujo comportamento é desconhecido, mas não é necessário obter aqui uma ordenação com reconhecimento numérico. Se, em vez disso, for desejada uma ordem lexical exata, a função subjacente suporta a desativação da comparação numérica. A lição importante é documentar a opção escolhida em vez de assumir que cada comando alfabético trata os dígitos incorporados da mesma forma.
Os dígitos são classificados numericamente por padrão, então o item2 vem antes do item10
Para um exemplo revisável, coloque `Ångström`, `Ana`, `Émile`, `item2` e `item10` em linhas separadas e classifique uma vez no navegador escolhido pela equipe. Salve essa saída como referência. Este artigo deliberadamente não publica a ordem de nomes acentuados esperada de um segundo navegador porque o repositório não contém nenhum dispositivo de localidade fixado que a estabeleça.
Se um colega tiver outro pedido, compare os dois textos preenchidos com a comparação baseada em linhas. A implementação diff alinha linhas exatamente iguais por meio de uma tabela de subsequência comum mais longa e rotula linhas sem correspondência como adicionadas ou removidas. Ele relata fielmente o movimento estrutural, mas não explica qual comparação de localidade colocou um nome em qualquer posição.
Exemplo resolvido: compare um pedido produzido pelo navegador em vez de inventar dois resultados de localidade
A regra de colaboração mais simples é classificar uma vez e comcomcompartilhar as linhas resultantes, não apenas a entrada não classificada mais uma instrução para pressionar Classificar. Um resultado em texto simples preserva a decisão que foi realmente revisada. Os destinatários podem pesquisar, anotar ou diferenciar esse artefato sem solicitar que seus próprios navegadores recriem uma ordem dependente do ambiente.
Mantenha a lista original também quando a proveniência for importante. A cópia classificada é uma apresentação para revisão, enquanto o original pode conter uma ordem significativa de chegada ou origem. Nomear o arquivo de referência e registrar se a classificação foi crescente, sensível a maiúsculas e minúsculas e numérica transforma uma operação alfabética vaga em uma transferência de equipe repetível.
O que isso não cobre — opções de classificação numérica, ordem inversa e classificação por uma coluna específica
O esboço original diz que as opções de classificação numérica e ordem inversa não são abordadas, mas a fonte contradiz essa limitação. `sortLines` aceita uma opção numérica e uma direção ascendente ou descendente, enquanto `reverseLines` pode reverter a sequência de linhas atual. Essas capacidades não devem ser descritas como ausentes da lógica de texto do kit de ferramentas.
A classificação por uma coluna específica está genuinamente fora desta função. Cada linha completa é o valor de comparação, portanto, uma linha como `Paris, Ana` é classificada desde o início, e não pelo nome após a vírgula. Analise linhas estruturadas com uma ferramenta de dados adequada quando os campos forem importantes; a classificação de linhas não deve fingir que entende colunas.
O kit de ferramentas cobre a classificação numérica e a ordem inversa, mas não a classificação por coluna
A classificação com reconhecimento de localidade é útil porque os alfabetos humanos não podem ser reduzidos com segurança a uma regra bruta de número de caracteres. Isso também significa que uma localidade padrão não fixada não é um contrato de reprodutibilidade entre máquinas. O Text Toolkit usa agrupamento do navegador, o padrão é comparações que não diferenciam maiúsculas de minúsculas e reconhecem números e pode reverter a direção solicitada.
Para uma equipe que abrange ambientes, transforme a saída no contrato: escolha uma sessão do navegador, defina as opções pretendidas, classifique e distribua o texto exato. Quando outra ordem aparecer, compare os artefatos antes de debater qual alfabeto é o correto. A fonte apoia a explicação do mecanismo, enquanto o resultado salvo fornece a sequência estável que a própria implementação não garante globalmente.