From 3daeffd3edfc53910ce7f40b57d7f1b5ad191d48 Mon Sep 17 00:00:00 2001 From: schodet Date: Tue, 20 Sep 2005 19:38:17 +0000 Subject: Réorganisation de /p. --- p/doc/todo.txt | 60 +++++++++++++++++++++++++ p/todo/n/avr/modules/adc.todo | 3 ++ p/todo/n/avr/modules/host.todo | 4 ++ p/todo/n/avr/modules/math.todo | 3 ++ p/todo/todo.pl | 99 ------------------------------------------ p/todo/todo.txt | 60 ------------------------- p/tools/todo.pl | 99 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 169 insertions(+), 159 deletions(-) create mode 100644 p/doc/todo.txt create mode 100644 p/todo/n/avr/modules/adc.todo create mode 100644 p/todo/n/avr/modules/host.todo create mode 100644 p/todo/n/avr/modules/math.todo delete mode 100644 p/todo/todo.pl delete mode 100644 p/todo/todo.txt create mode 100644 p/tools/todo.pl diff --git a/p/doc/todo.txt b/p/doc/todo.txt new file mode 100644 index 0000000..c515371 --- /dev/null +++ b/p/doc/todo.txt @@ -0,0 +1,60 @@ +*Title: Format des fichiers todo +*Author: Ni + +* Emplacement et organisation + +Les fichiers todo sont situés dans |p/todo|. Ils sont organisés dans une +arborescence semblable à l'arborescence racine et porte l'extension |.todo|. + +* Format + +Une entrée todo suit le format suivant : + + * un caractère montrant l'état actuel ; + * un espace ; + * le nom de la personne responsable entre parenthèses ; + * la description de la tache. + +Le caractère d'état peut-être : + + * un tiret : tâche à faire ; + * un signe plus : tâche effectuée ; + * un signe égal : tâche en cours, pour les tâches longues ; + * un x : tâche annulée. + +Le nom du responsable est optionnel si cité précédemment. Si il y a plusieurs +responsables, les séparer par une virgule. + +Les tâches sont dans l'ordre chronologique, et par ordre de priorité pour les +tâches restantes. + +Un nom de responsable peut être mis tout seul sur une ligne pour signifier +qu'il est responsable de tout les tâches suivantes. + +On peut introduire des sous tâches en donnant son nom sur une ligne. Cela a le +même effet que de placer un nouveau fichier dans un sous répertoire. + +Les lignes vides sont ignorée. Une description longue peut s'étendre sur +plusieurs lignes, il suffit de placer deux espaces en début de ligne. + +Les tâches effectuées sont conservées dans le fichier. + +Exemple : + +^<< +(hercule) ++ la capture du lion de Némée ++ l'Hydre de Lerne +x faire la vaisselle += Le sanglier d'Erymanthe +- (merlin) trouver un roi +- la biche de Cérynie + +takeovertheworld +(cortex) +- trouver une idée géniale +- la mettre à exécution pour conquérir le monde + et soumettre la race humaine à ma volonté. Elle + est longue celle-là, n'est-ce pas ? +- (minus) tout foutre par terre +^>> diff --git a/p/todo/n/avr/modules/adc.todo b/p/todo/n/avr/modules/adc.todo new file mode 100644 index 0000000..0a7536b --- /dev/null +++ b/p/todo/n/avr/modules/adc.todo @@ -0,0 +1,3 @@ +(Ni) +- créer le module +- tester sur cible diff --git a/p/todo/n/avr/modules/host.todo b/p/todo/n/avr/modules/host.todo new file mode 100644 index 0000000..14cd1c2 --- /dev/null +++ b/p/todo/n/avr/modules/host.todo @@ -0,0 +1,4 @@ +(Ni) ++ créer le module +- implémenter les variables +- simuler les IOs diff --git a/p/todo/n/avr/modules/math.todo b/p/todo/n/avr/modules/math.todo new file mode 100644 index 0000000..ceab29d --- /dev/null +++ b/p/todo/n/avr/modules/math.todo @@ -0,0 +1,3 @@ +fixed +(Ni) +- améliorer les programmes de test diff --git a/p/todo/todo.pl b/p/todo/todo.pl deleted file mode 100644 index 31e55da..0000000 --- a/p/todo/todo.pl +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/perl -w -# -# Tool to parse todo files. -# -use strict; - -# Parse a todo file and add tasks to \%todos. -sub parse_todo -{ - my ($todos, $path, $file) = @_; - my $owner; - local $_; - local *FILE; - # Check for duplicates and create task list. - die "duplicate path: $path" if exists $$todos{''}; - $$todos{''} = [ ]; - my $tasks = $$todos{''}; - # Open file. - open FILE, "<$file" or die "$file: $!"; - # Read each lines. - while () - { - chomp; - # Task line. - /^([-+=x]) (?:\(([^)]+)\) |)(.+)$/ and do { - my ($state, $owner, $text) = ($1, $2 || $owner, $3); - #$owner = $1 if $2 =~ /^\((.*)\) $/; - my @owners = split /, */, $owner; - # Read next lines. - while () - { - chomp; - # Continued task, new paragraph. - /^ $/ and $text .= "\n", next; - # Continued task. - /^ (.*)$/ and $text .= ' ' . $1, next; - last; - } - # Add task. - push @$tasks, { - state => $state, - owner => [ @owners ], - text => $text - }; - last unless defined $_; - redo; - }; - # Default owner line. - /^\(([^)]+)\)$/ and $owner = $1, next; - # Subtask line. - /^[-\w\d]+$/ and do { - my $path = $path . '/' . $_; - $$todos{$_} ||= { }; - my $todos = $$todos{$_}; - die "duplicate path: $path" if exists $$todos{''}; - $$todos{''} = [ ]; - $tasks = $$todos{''}; - next; - }; - # Empty line. - /^$/ and next; - # Else, die. - die 'Invalid format'; - } - # Close file. - close FILE; -} - -# Read dir and parse each todo files it contains. -sub parse_dir -{ - my ($todos, $path, $dir) = @_; - local $_; - local @_; - local *DIR; - # Read files list. - opendir DIR, $dir or die "$dir: $!"; - @_ = readdir DIR; - closedir DIR; - # Filter todo files & dirs lists. - my @todofiles = grep { !/^\./ && /\.todo$/ && -f "$dir/$_" } @_; - s/\.todo$// foreach @todofiles; - my @tododirs = grep { !/^\./ && -d "$dir/$_" } @_; - # Create empty hashes. - $$todos{$_} ||= { } foreach @todofiles, @tododirs; - # Process each todo files. - parse_todo ($$todos{$_}, "$path/$_", "$dir/$_.todo") foreach @todofiles; - # Recurse into each dirs. - parse_dir ($$todos{$_}, "$path/$_", "$dir/$_") foreach @tododirs; -} - -my %todos; - -parse_dir (\%todos, '', '.'); - -{ - use Data::Dumper; - print Dumper \%todos; -} diff --git a/p/todo/todo.txt b/p/todo/todo.txt deleted file mode 100644 index c515371..0000000 --- a/p/todo/todo.txt +++ /dev/null @@ -1,60 +0,0 @@ -*Title: Format des fichiers todo -*Author: Ni - -* Emplacement et organisation - -Les fichiers todo sont situés dans |p/todo|. Ils sont organisés dans une -arborescence semblable à l'arborescence racine et porte l'extension |.todo|. - -* Format - -Une entrée todo suit le format suivant : - - * un caractère montrant l'état actuel ; - * un espace ; - * le nom de la personne responsable entre parenthèses ; - * la description de la tache. - -Le caractère d'état peut-être : - - * un tiret : tâche à faire ; - * un signe plus : tâche effectuée ; - * un signe égal : tâche en cours, pour les tâches longues ; - * un x : tâche annulée. - -Le nom du responsable est optionnel si cité précédemment. Si il y a plusieurs -responsables, les séparer par une virgule. - -Les tâches sont dans l'ordre chronologique, et par ordre de priorité pour les -tâches restantes. - -Un nom de responsable peut être mis tout seul sur une ligne pour signifier -qu'il est responsable de tout les tâches suivantes. - -On peut introduire des sous tâches en donnant son nom sur une ligne. Cela a le -même effet que de placer un nouveau fichier dans un sous répertoire. - -Les lignes vides sont ignorée. Une description longue peut s'étendre sur -plusieurs lignes, il suffit de placer deux espaces en début de ligne. - -Les tâches effectuées sont conservées dans le fichier. - -Exemple : - -^<< -(hercule) -+ la capture du lion de Némée -+ l'Hydre de Lerne -x faire la vaisselle -= Le sanglier d'Erymanthe -- (merlin) trouver un roi -- la biche de Cérynie - -takeovertheworld -(cortex) -- trouver une idée géniale -- la mettre à exécution pour conquérir le monde - et soumettre la race humaine à ma volonté. Elle - est longue celle-là, n'est-ce pas ? -- (minus) tout foutre par terre -^>> diff --git a/p/tools/todo.pl b/p/tools/todo.pl new file mode 100644 index 0000000..31e55da --- /dev/null +++ b/p/tools/todo.pl @@ -0,0 +1,99 @@ +#!/usr/bin/perl -w +# +# Tool to parse todo files. +# +use strict; + +# Parse a todo file and add tasks to \%todos. +sub parse_todo +{ + my ($todos, $path, $file) = @_; + my $owner; + local $_; + local *FILE; + # Check for duplicates and create task list. + die "duplicate path: $path" if exists $$todos{''}; + $$todos{''} = [ ]; + my $tasks = $$todos{''}; + # Open file. + open FILE, "<$file" or die "$file: $!"; + # Read each lines. + while () + { + chomp; + # Task line. + /^([-+=x]) (?:\(([^)]+)\) |)(.+)$/ and do { + my ($state, $owner, $text) = ($1, $2 || $owner, $3); + #$owner = $1 if $2 =~ /^\((.*)\) $/; + my @owners = split /, */, $owner; + # Read next lines. + while () + { + chomp; + # Continued task, new paragraph. + /^ $/ and $text .= "\n", next; + # Continued task. + /^ (.*)$/ and $text .= ' ' . $1, next; + last; + } + # Add task. + push @$tasks, { + state => $state, + owner => [ @owners ], + text => $text + }; + last unless defined $_; + redo; + }; + # Default owner line. + /^\(([^)]+)\)$/ and $owner = $1, next; + # Subtask line. + /^[-\w\d]+$/ and do { + my $path = $path . '/' . $_; + $$todos{$_} ||= { }; + my $todos = $$todos{$_}; + die "duplicate path: $path" if exists $$todos{''}; + $$todos{''} = [ ]; + $tasks = $$todos{''}; + next; + }; + # Empty line. + /^$/ and next; + # Else, die. + die 'Invalid format'; + } + # Close file. + close FILE; +} + +# Read dir and parse each todo files it contains. +sub parse_dir +{ + my ($todos, $path, $dir) = @_; + local $_; + local @_; + local *DIR; + # Read files list. + opendir DIR, $dir or die "$dir: $!"; + @_ = readdir DIR; + closedir DIR; + # Filter todo files & dirs lists. + my @todofiles = grep { !/^\./ && /\.todo$/ && -f "$dir/$_" } @_; + s/\.todo$// foreach @todofiles; + my @tododirs = grep { !/^\./ && -d "$dir/$_" } @_; + # Create empty hashes. + $$todos{$_} ||= { } foreach @todofiles, @tododirs; + # Process each todo files. + parse_todo ($$todos{$_}, "$path/$_", "$dir/$_.todo") foreach @todofiles; + # Recurse into each dirs. + parse_dir ($$todos{$_}, "$path/$_", "$dir/$_") foreach @tododirs; +} + +my %todos; + +parse_dir (\%todos, '', '.'); + +{ + use Data::Dumper; + print Dumper \%todos; +} -- cgit v1.2.3