# $Id$
#
# >>Title:: Use Case Module
#
# >>Copyright::
# Copyright (c) 1992-1997, Ian Clatworthy (ianc@mincom.com).
# You may distribute under the terms specified in the LICENSE file.
#
# >>History::
# -----------------------------------------------------------------------
# Date Who Change
# 17-Dec-97 ianc SDF 2.000
# -----------------------------------------------------------------------
#
# >>Purpose::
# {{MOD:usecases}} is an [[SDF]] module for
# managing Use Cases.
#
# >>Description::
# You can customise this module's behavior
# by defining the following variables before using this module:
#
# * {{UC_ATTRIBUTES}} - the comma-separated list of attributes
# at the top of each details file
# * {{UC_SUBSECTIONS}} - the comma-separated list of subsections
# at the top of each details file.
#
# >>Limitations::
#
!default UC_ATTRIBUTES 'Version,Status'
!default UC_SUBSECTIONS 'Purpose,Actors,Scenario,Special Requirements,Related Use Cases'
# Define the classes
!class usecases 'UC,UCTITLE'; 'Code,Title'; "Jump,$var{'UC_ATTRIBUTES'}"
!class actors 'ACT'; 'Name,Description'
# Define the hypertext generation rules
!on phrase 'UC';; $attr{'jump'}="$text.html"
!on phrase 'UCTITLE';; $attr{'jump'}=$obj_long{'usecases',$text,'Code'} . ".html"
!block script
sub usecases_Jump_Value {
local($name) = @_;
# local($result);
return "$name.html";
}
sub usecases_Value {
local($attr, $name) = @_;
# local($result);
return AttrToFile($attr, $name, 'usecases');
}
# Macro to construct the title for a details file.
# If a title is supplied, a warning is output if it does not
# match the title in the database.
@_uc_title_MacroArgs = (
'Name Type Default Rule',
'title string _NULL_',
);
sub uc_title_Macro {
local(%arg) = @_;
local(@text);
local($title, $db_title);
local($code);
# Check the title matches the database
$title = $arg{'title'};
$code = $var{'FILE_BASE'};
$db_title = &Value('usecases', $code, 'Title');
if ($title eq '') {
$title = $db_title;
}
elsif ($title ne $db_title) {
&'AppMsg("warning", "usecase title does not match database value");
}
# Build result
@text = (
"!define DOC_NAME '$code. $title'",
"!define DOC_TOC 0",
"!build_title",
"!if UC_SUBSECTIONS",
"!subsections UC_SUBSECTIONS; 'noprefix'",
"!endif",
"!if UC_ATTRIBUTES",
"!namevalues 'usecases'; '$code'; UC_ATTRIBUTES",
"!endif");
# Return result
return @text;
}
!endblock