ForHosting KIT · Texto e IA

Normalizar indentação de texto

Linhas com 2, 4 e 6 espaços são lidas como níveis 1, 2 e 3 de uma unidade de 2 espaços, e cada linha é reescrita para seguir essa unidade à risca. O que vem depois do recuo nunca é alterado. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Texto
def foo(): if True: bar() baz() return
Você obtém
Entrada
def foo(): if True: bar() baz() return
Estilo de recuo
spaces
Unidade de recuo
2
Unidade detectada
2

Espaços em branco iniciais inconsistentes estão entre as dores de cabeça mais comuns ao colar código em revisões, dumps de configuração e blocos de documentação. Um trecho pode misturar passos de dois e quatro espaços ou, pior, tabs em algumas linhas e espaços em outras, até um linter ou um colega rejeitar o arquivo. Este normalizador de indentação de texto aceita texto simples multilinha, classifica cada linha não vazia pela forma como a indentação inicial está escrita, detecta uma única unidade base — o máximo divisor comum das contagens de espaços, ou um tab — e reescreve cada linha para que a indentação seja um múltiplo exato dessa unidade.

Como funcionam a detecção da unidade base e a reescrita de níveis

O algoritmo primeiro normaliza finais de linha Windows CRLF e CR legados para uma única forma LF e depois divide o documento em linhas. Linhas totalmente em branco permanecem em branco e não contribuem com estilo de indentação. Para cada linha não vazia mede-se a sequência inicial de espaços e tabs: se ambos os caracteres aparecem nessa sequência, ou se outro espaço em branco Unicode aparece ali, a linha é tratada como mista e toda a solicitação falha com uma mensagem clara que indica o número da linha.

Se algumas linhas não vazias estão indentadas com espaços e outras com tabs, o documento não tem um único estilo claro e também é rejeitado — a conversão deve ser deliberada, não adivinhada. Quando toda linha indentada usa espaços, a unidade base é o máximo divisor comum de todas as contagens positivas de espaços iniciais; se nada está indentado, a unidade padrão para relatório é de dois espaços. Quando toda linha indentada usa tabs, a unidade base é um tab e cada tab inicial conta como um nível.

O nível de cada linha é então recalculado como contagem dividida pela unidade (exato para o MDC das contagens de espaços observadas, contagens inteiras de tabs no modo tab), e a linha é reescrita com um prefixo puro de espaços repetidos de comprimento nível vezes unidade de saída, ou de tabs repetidos de comprimento nível. O conteúdo após a indentação inicial nunca é alterado: espaços interiores, espaços finais e tokens de código permanecem idênticos byte a byte.

Limpar código e config colados antes do commit

Desenvolvedores colam trechos com passos mistos de dois e quatro espaços; a ferramenta reescreve cada linha para uma unidade base e reporta a profundidade máxima de indentação para revisão.

Como a ferramenta escolhe a unidade base de indentação?

Em linhas indentadas com espaços usa o máximo divisor comum de todas as contagens positivas de espaços iniciais (unidade de relatório padrão dois quando nada está indentado). Em linhas com tabs a unidade é um tab por nível.

O que acontece se algumas linhas usam tabs e outras espaços?

Uma mistura no documento de tabs e espaços não tem um padrão único claro; converta primeiro para um só estilo e depois normalize.

Posso converter indentação de dois espaços para quatro espaços?

Os níveis detectados são preservados e cada nível é reescrito com quatro espaços.

A normalização altera o código dentro de uma linha?

Não. Só a sequência de indentação inicial é reescrita. Espaçamento interior, espaços finais e todos os caracteres que não são indentação permanecem inalterados.

O que acontece com linhas em branco e quebras de linha do Windows?

Linhas totalmente em branco continuam em branco e não contam na hora de detectar o estilo de indentação. Quebras de linha do Windows e de formatos antigos viram um único padrão antes da medição, então nunca causam divergência.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/text/text-indentation-normalize

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/text/text-indentation-normalize \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"def foo():\n  if True:\n      bar()\n    baz()"}'
{
  "text": "def foo():\n  if True:\n      bar()\n    baz()"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.text_indentation_normalize",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_tokens20000
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Quando a mesma linha ou o documento inteiro mistura tabs e espaços sem um padrão claro, a tarefa falha com invalid_input em vez de adivinhar em silêncio. O target_unit opcional permite redimensionar níveis baseados em espaços (por exemplo de dois para quatro) sem alterar a árvore lógica de profundidade.

Como funcionam a detecção da unidade base e a reescrita de níveis

O target_unit opcional aplica-se apenas a documentos com estilo de espaços: os níveis são preservados e a saída usa essa quantidade de espaços por nível, que é como você converte uma árvore de dois espaços em uma de quatro em uma única chamada. Entrada com estilo de tabs ignora target_unit para não expandir tabs em silêncio.

Contrato de entrada, campos de resposta e comportamento de erro

Prefira enviar o corpo multilinha bruto em vez de colapsar quebras de linha de antemão quando quiser semântica real de indentação por linha; uma única linha longa tem apenas uma indentação a normalizar. Envie por POST um corpo JSON com um campo de string obrigatório text (aliases input, value, string, s, content e body). O valor deve ser uma string não vazia após o trim global de espaços em branco e não deve exceder cem mil caracteres, para que uma única colagem não esgote a memória do Worker ou do navegador. O target_unit opcional é um inteiro positivo de um a trinta e dois; não inteiros e valores fora da faixa falham na validação. Em caso de sucesso a resposta devolve input como a string original, text como o resultado multilinha reescrito unido com LF, indent_style como spaces, tabs ou none, indent_unit como o tamanho efetivo da unidade de saída, detected_unit como a unidade inferida antes de qualquer override de destino, line_count como o número de linhas incluindo as em branco, indented_lines como quantas linhas tinham nível positivo, max_level como o nível de indentação mais profundo, levels como o array de profundidade inteira por linha alinhado com lines, lines como o array ordenado de strings de linha reescritas, e message como um resumo breve de estilo, unidade, contagem de linhas e nível máximo. Validação falha — text ausente, valores que não são string, conteúdo vazio, payload excessivo, target_unit inválido, mistura de tab e espaço na mesma linha, ou mistura de estilos no documento — devolve invalid_input e nunca é cobrada. O preço é um fixo de US$ 0,002 por solicitação bem-sucedida com unidade item. Ao integrar, faça assert em text ou lines para o conteúdo limpo, compare opcionalmente levels e indent_unit em regressões, e trate invalid_input como conflito de estilo do cliente em colagens mistas, não como evento de faturamento.

Quando usar esta ferramenta e como ela difere de buscas relacionadas

Use esta capacidade quando a intenção de busca for normalizar níveis de indentação de texto, corrigir indentação inconsistente online, converter uma colagem irregular de dois e quatro espaços em uma única unidade, ou detectar estilo de indentação por tab versus espaço antes de um commit. Leve em conta espaços finais e colunas de alinhamento interiores — esta ferramenta só reescreve a sequência de indentação inicial, não espaços de alinhamento dentro da linha. Não é um formatador de código completo, nem um pretty printer ciente da linguagem, nem um apagador de linhas em branco, nem um String.trim global que destruiria a estrutura intencional. Verificações de ida e volta em testes são simples: envie um bloco de três linhas com zero, dois e quatro espaços iniciais e espere indent_unit dois com levels zero, um e dois; envie blocos aninhados indentados só com tabs e espere indent_style tabs com níveis inteiros que batem com a contagem de tabs; envie de propósito uma linha que começa com tab e depois espaços, ou uma linha com tab ao lado de outra com espaços, e confirme invalid_input mencionando a mistura de tabs e espaços. Prefira str.trim_lines quando só precisar remover espaços no início e no fim de cada linha sem preservar uma árvore de profundidade; prefira data.json_format quando o payload for JSON que deve ser pretty-printed com indentação fixa; prefira esta capacidade quando humanos já escreveram texto hierárquico simples ou blocos semelhantes a código e você precisa de uma unidade base consistente. Tarefas com falha que devolvem invalid_input não consomem saldo pré-pago, o que mantém barata a validação de formulários e testes negativos de CI.

Preprocessadores de CI e linters

Pipelines rejeitam cedo tabs e espaços mistos com invalid_input, ou normalizam árvores só de espaços para um target_unit do projeto antes das checagens de estilo.

Documentação, tutoriais e fixtures de exercícios

Autores e professores geram exemplos multilinha indentados de referência e casos de erro de estilo misto para editores, ferramentas LMS e testes golden.

Quanto custa normalizar a indentação de texto?

A ferramenta no navegador é gratuita. Solicitações de API usam saldo KIT pré-pago a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →