void adjust_Declaration(editor e)
{
str copiaLinha;
str ajustadeclaracao;
int maiorEpaco;
int contamaiorLinha;
int contaPosCaracter;
int quantEspVazio;
int verifmaiorLinha;
int posInicial = e.selectionStartLine();
int posFinal = e.selectionEndLine();
int nivel;
int maiorLinha;
container linhas;
;
//Esse laço percorre todas as linhas selecionadas e insere as linhas no container
for (contamaiorLinha = posInicial; contamaiorLinha <= posFinal; contamaiorLinha++)
{
e.gotoLine(contamaiorLinha);
verifmaiorLinha = 0;
nivel = 1;
copiaLinha = ""; //variavel auxiliar para tratar os dados inseridos no container
//Esse laço percorre toda a linha para verificar qual é o maior tipo de variavel para
//ajustar as melhores práticas nas outras linhas
for (contaPosCaracter = 1; contaPosCaracter <= strlen(e.currentLine()); contaPosCaracter++)
{
if (substr(e.currentLine(),contaPosCaracter,1) != " " && (nivel == 1 || nivel == 2))
{
verifmaiorLinha++;
nivel = 2;
}
else if (nivel == 2 && substr(e.currentLine(),contaPosCaracter,1) == " ")
{
nivel = 3;
}
if (nivel != 1)
{
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
}
}
//seta o maior tipo de variavel
if (verifmaiorLinha > maiorEpaco)
{
maiorEpaco = verifmaiorLinha;
maiorLinha = contamaiorLinha;
}
linhas = conins(linhas, contamaiorLinha, copiaLinha);
}
copiaLinha = "";
nivel =1;
e.gotoLine(maiorLinha);
//esse laço trata o a maior tipo de variavel inserindo a quantidade de espaços em branco
//entre o tipo e o nome da variavel
for (contaPosCaracter = 1; contaPosCaracter <= strlen(e.currentLine()); contaPosCaracter++)
{
if (substr(e.currentLine(),contaPosCaracter,1) != " " && (nivel == 1 || nivel == 2))
{
nivel = 2;
}
if (nivel == 2 && substr(e.currentLine(),contaPosCaracter,1) == " ")
{
nivel = 3;
do
{
maiorEpaco++;
if(substr(e.currentLine(),contaPosCaracter,1)== " ")
{
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
contaPosCaracter++;
}
else
{
if((strlen(copiaLinha) mod 4) != 0)
{
copiaLinha += " ";
}
}
verifmaiorLinha++;
}
while ((strlen(copiaLinha) mod 4) != 0);
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
}
else if (nivel != 1)
{
copiaLinha += substr(e.currentLine(),contaPosCaracter,1);
}
}
//apaga a linha que tem o maior tipo do container
linhas = condel(linhas, maiorLinha - (posInicial - 1), 1);
//insere a linha que tem o maior tipo no container com a linha tratada
linhas = conins(linhas, maiorLinha - (posInicial - 1), copiaLinha);
//esse laço apaga todas a linhas selecionadas do codigo
for ( contamaiorLinha = posFinal; contamaiorLinha >= posInicial; contamaiorLinha--)
{
e.gotoLine(contamaiorLinha);
e.deleteLines(contamaiorLinha);
}
e.gotoLine(PosInicial);
e.gotoCol(1);
e.insertLines("\n");
//Esse laço trata as linhas e insere as linhas no codigo.
for ( contamaiorLinha = posInicial; contamaiorLinha <= posFinal; contamaiorLinha++)
{
ajustadeclaracao = " ";
if(contamaiorLinha != maiorLinha)
{
nivel = 1;
for (contaPosCaracter = 1; contaPosCaracter <= strlen(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1)))); contaPosCaracter++)
{
if (substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, 1) == " " && nivel == 1)
{
copiaLinha = "";
for (quantEspVazio = 0; quantEspVazio < (maiorEpaco + 4) - strlen(ajustadeclaracao); quantEspVazio++)
{
copiaLinha += " ";
}
while (substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, 1) == " ")
{
contaPosCaracter++;
}
quantEspVazio = strlen(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))));
ajustadeclaracao = ajustadeclaracao + copiaLinha + substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, quantEspVazio);
nivel = 2;
contaPosCaracter = strlen(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1)))) + 1;
}
else
{
ajustadeclaracao = ajustadeclaracao + substr(any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))), contaPosCaracter, 1);
}
}
if (contamaiorLinha != posFinal)
{
ajustadeclaracao += "\n";
}
e.gotoLine(contamaiorLinha);
e.insertLines(ajustadeclaracao);
ajustadeclaracao = " ";
}
else
{
if (contamaiorLinha != posFinal)
{
ajustadeclaracao = "\n";
}
e.insertLines(" " + any2str(conpeek(linhas, contamaiorLinha - (posInicial - 1))) + ajustadeclaracao);
}
}
Abaixo um exemplo de como funciona o adjust_Declaration Script.
Observar a Identação do Código.
Observar a Identação do Código.
PARABÉMS!!
ResponderExcluiruhauhauha