shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [shell-script] Processamento de lista de tarefas


From: Marcio Gil
Subject: RE: [shell-script] Processamento de lista de tarefas
Date: Tue, 20 Apr 2010 22:14:11 -0300

Na verdade o que determina o nível é a endentação, ou seja, os
espaços no início da linha. Os termos "Projeto", "Tarefa" e
"sub-tarefa" são só para exemplificar, poderiam ser qualquer outra
coisa.

Desculpe se não consegui ser mais claro. Vou dar outro exemplo com
os espaços indicados por <SP> (acredito que o meu e-mail tenha
chegado sem eles :-)

1. Desenho
<SP><SP>1. Sistema de coordenadas
<SP><SP><SP><SP>1. Criar o método X()
<SP><SP><SP><SP>2. Criar o método Y()
<SP><SP>2. Primitivas gráficas
<SP><SP><SP><SP>1. Desenho de linhas
<SP><SP><SP><SP>2. Desenho de quadrados
2. Etc.

Deveria ficar:

1. Desenho
1.1. Sistema de coordenadas
1.1.1. Criar o método X()
1.1.2. Criar o método Y()
1.2. Primitivas gráficas
1.2.1. Desenho de linhas
1.2.2. Desenho de quadrados
2. Etc. 

No caso talvez eu pudesse utilizar as expressões regulares:

'^[0-9]' para o nível 0
'^  [0-9]' para o nível 1
'^    [0-9]' para o nível 2
'^      [0-9]' para o nível 3
'^        [0-9]' para o nível 4

e assim por diante. Provavelmente eu tenha mesmo que criar um laço
"for" com vários "if"s, porém vou ver se consigo alguma coisa menor
com o awk.

Abraços,

Marcio Gil.

> -----Original Message-----
> From: Helton Moraes
> 
> Cara, essa é cruel... Mas já me deparei com coisas do tipo, 
> então não vamo
> se entregar pros home!
> 
> Me parece que para isso seria necessário um script envolvendo 
> laços FOR e
> IF, expressões regulares e provavelmente o sed.
> 
> Vejamos: se pegarmos uma linha aleatória, o que realmente 
> determina o nível
> (se é um, dois ou três), ao menos no exemplo que tu mandou, é 
> a presença das
> palavras "projeto", "tarefa" e "sub-tarefa". Teria que ver 
> como funciona uma
> lista com mais níveis, uns quatro ou cinco (quero crer que o 
> todolist não
> usaria sub-sub-sub-tarefa ;oP).
> Mas só isso não basta, pois se tivermos várias sub-tarefas em 
> sequência, no
> mesmo nível, temos de saber se é a subtarefa 1, 2, 3, etc (que
ficaria
> x.x.1, x.x.2, x.x.3, etc).
> 
> Eu tentaria criar aquele primeiro campo, dos números, usando 
> uma string
> preenchida com contadores. Tu cria os contadores que vão contando
as
> ocorrências em cada linha das palavras "projeto", "tarefa" e 
> "subtarefa",
> etc.
> Se ao trocar de linha passar para um nível abaixo (de uma linha
com a
> palavra "projeto" para uma linha com a palavra "tarefa", por 
> exemplo), troca
> de contador, ou seja, pára de somar o contador do nível 1 e começa
a
> aumentar o contador do nível 2.
> Além disso, se ao trocar de linha passar para um nível ACIMA, 
> (de subtarefa
> para tarefa, por exemplo), passa a usar o contador 2 e dá um RESET
no
> contador 3.
> 
> Nâo vou ter tempo agora/hoje para continuar meditando, mas um 
> pseudocódigo a
> se pensar (com laços) seria:
> 
> prim=0; seg=0; terc=0;
> counter=prim
> for <cada linha>
>     if <linha contém> 'projeto'
>         counter++
>         seg=terc=0
>     elseif <linha contém> 'tarefa'
>         counter=seg
>         counter++
>         terc=0
>     elseif <linha contém> 'subtarefa'
>         counter=terc
>         counter++
>    endif
> endfor
> 
> Claro que esse pseudocódigo só está contando coisas, além 
> disso teria que
> ser colocado mais algum comando para prefixar uma string 
> gerada por algo do
> tipo 'while i<=level, append ".$counter" ' ao campo.
> 
> Acho que a estimativa de "pelo menos vinte linhas" que o 
> outro amigo colocou
> já está ficando bastante otimista... Mas como exercício vale! 
> (resta saber
> se essa mão toda vale a pena para usar o arquivo, mas isso é 
> com cada um).
> 
> Boa sorte
> 
> Helton Moraes
> 
> 
> Em 19 de abril de 2010 22:09, Marcio Gil 
> <address@hidden> escreveu:
> 
> >
> >
> > Pessoal, tenho o seguinte problema para resolver:
> >
> > Estou tentando processar uma lista de tarefas gerada por uma
> > ferramenta (Todolist), e o formato é o seguinte:
> >
> > 1. Projeto (risk: 6) (allocated to: Sicrano+Beltrano) (allocated
> > by: Fulano)
> > 1. Primeira tarefa (risk: 6) (allocated to: Sicrano+Beltrano)
> > (allocated by: Fulano)
> > 1. Primeira sub-tarefa (risk: 6) (allocated to: Sicrano)
> > 2. Segunda sub-tarefa (risk: 6) (allocated to: Beltrano)
> > 2. Segunda tarefa (risk: 6) (allocated to: Sicrano+Beltrano)
> > (allocated by: Fulano)
> > 1. Terceira sub-tarefa (risk: 6) (allocated to: Sicrano)
> > 2. Quarta sub-tarefa (risk: 6) (allocated to: Beltrano)
> >
> > Repare que é uma árvore de tarefas. Preciso transformar isto
numa
> > tabela simples como essa:
> >
> > 1. Projeto 6 Sicrano+Beltrano Fulano
> > 1.1. Primeira tarefa 6 Sicrano+Beltrano Fulano
> > 1.1.1. Primeira sub-tarefa 6 Sicrano
> > 1.1.2. Segunda sub-tarefa 6 Beltrano
> > 1.2. Segunda tarefa 6 Sicrano+Beltrano Fulano
> > 1.2.1. Terceira sub-tarefa 6 Sicrano
> > 1.2.2. Quarta sub-tarefa 6 Beltrano
> >
> > Ou seja, extrair os campos da lista de tarefas e transformá-las
em
> > uma tabela com linhas e colunas separadas com tab.
> >
> > A parte de extrair com campos e sapara-los com TAB eu sei fazer,
a
> > dúvida é o primeiro campo, que o Todolist não gera com o número
das
> > tarefas e sub-tarefas concatenado, porém indica o nível da
tarefa
> > por meio de endentação.
> >
> > Alguém pode me dar uma luz de como fazer isso?
> >
> >  
> >
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]