use base ("Understand::Codecheck");
use strict;
use File::Basename;
use Codecheck::Libraries::NamingConventions;

my $kind = "File";
my $kindPlural ="Files";
my $languageText = "Ada";
my $languageTest = "Ada";
my $canChangePrecedence = 0;
my $defaultAll =1;
my @kindStrings = qw();
my %kindNameLookup = ();

sub check {
  my ($check,$file) =@_;
  return unless $file->kind->check("Ada file");
  setlib();
  
  my($filename,$path,$suffix) = fileparse($file->longname,qr/\.[^.]*/);
  
    
    #Build the list of Kinds for this variable
    my $kindString = $file->kind->longname();
    
    my $varkindNameArray = getPrimaryKind($check,$kindString);
    
    my $errors = checkNamingRules($filename,$varkindNameArray,$check);
    $check->violation($file,$file,-1,-1,NAMEERROR,$Codecheck::Libraries::NamingConventions::kindNameLookup{$varkindNameArray},$filename,$errors) if $errors;
}




#Template code, do not modify below this line
sub setlib{
    @Codecheck::Libraries::NamingConventions::kindStrings = @kindStrings;
    %Codecheck::Libraries::NamingConventions::kindNameLookup = %kindNameLookup;
    setOptions($kind,$kindPlural,$languageText,$languageTest,$canChangePrecedence,$defaultAll);
}
sub register_tr_text {registerNamingErrors(shift);}
sub name {setlib; return "Naming Convention: $kindPlural";}
sub description {setlib;return "Define naming convention for $languageText $kindPlural";}
sub detailed_description { setlib;return getNamingDescription();}
sub test_language { setlib;return shift eq $languageTest;}
sub define_options{ setlib;setNamingOptions(shift);}
sub test_entity { return 1;}
sub test_global { return 0;}