App-Requirement-Arch

 view release on metacpan or  search on metacpan

scripts/ra_edit.pl  view on Meta::CPAN

	my $edited_requirement_text = Proc::InvokeEditor->edit($requirement_text, '.pl') ;

	# save backup
	write_file("$requirement_file.bak", $requirement_text) unless $no_backup ;

	# remove violation message
	$edited_requirement_text =~ s/\Q$violations_text// ;
	
	# save edited requirement
	write_file($requirement_file, $edited_requirement_text) ;

	# check
	my $violations = check_requirement_file
			(
			$master_template_file, $master_categories_file, $requirement_file,
			$no_spellcheck, $no_check_categories
			) ;
		
	if(exists $violations->{$requirement_file})
		{
		print DumpTree($violations->{$requirement_file}, 'Violations remaining in requirement:', DISPLAY_ADDRESS => 0) ;
		}
	} ;
	
die $@ if $@ ;


#------------------------------------------------------------------------------------------------------------------

sub check_requirement_file
{
	
my
(
$master_template_file, $master_categories_file, $requirement_file,
$no_spellcheck, $no_check_categories
) = @_ ;

my ($files, $ok_parsed, $requirements_with_errors, $violations) 
	= App::Requirement::Arch::Requirements::get_requirements_violations
		($master_template_file, $requirement_file) ;

unless($no_spellcheck)
	{
	my ($file_name_errors, $errors_per_file) = spellcheck($requirement_file) ;

	$violations->{$requirement_file}{spellchecking_errors} = $errors_per_file->{$requirement_file} if exists $errors_per_file->{$requirement_file}
	}
	
unless($no_check_categories)
	{
	my $category_structure = load_master_categories($master_categories_file) ;

	my ($requirements_structure, $requirements, $categories, $ok_parsed, $errors)
		= get_requirements_structure($requirement_file, $master_template_file) ;
	
	my ($in_master_only, $in_requirements_only) = merge_master_categories($category_structure, $requirements_structure, '') ;

	for ( grep {$_ ne '/NOT_CATEGORIZED' and $_ ne '/STATISTICS'} sort keys %{$in_requirements_only})
		{
		push @{ $violations->{$requirement_file}{not_in_master_categories}}, $_ ;
		}
	}
	
return $violations ;	
}



( run in 0.556 second using v1.01-cache-2.11-cpan-39bf76dae61 )