#!/usr/bin/perl -w

use Cwd;
use File::Find;
use File::Basename;
use Data::Dumper;

chdir(dirname($0) . '/..');

@results = ();

%order = (
  f => 0,
  c => 1,
);

find(sub {
  return unless /\.php$/;

  open(PHP, $_);
  while (<PHP>) {
    chomp;

    next unless /^\s*(function|class)\s+(\w+).*/i;
    my ($type, $name) = ($1, $2);

    $type = lc(substr($type, 0, 1));

    my $file = $File::Find::name;
    $file =~ s,^.,__ATHENAROOT__,;

    my $rest = "/^$_\$/;\"";

    push(@results, [ $name,     $file, $rest, $type ]);
    push(@results, [ lc($name), $file, $rest, $type ]) if $name =~ /[A-Z]/;
  }
  close(PHP);
}, '.');

open(TAGS, '>tags.in');
print TAGS (join("\t", @{$_->[1]}), "\n") 
  for sort { $a->[0] cmp $b->[0] } map { [ "$_->[0] $order{$_->[3]}", $_ ] } 
    @results;
close(TAGS);
