1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
{
Copyright 1998-2018 PasDoc developers.
This file is part of "PasDoc".
"PasDoc" is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
"PasDoc" is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with "PasDoc"; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
----------------------------------------------------------------------------
}
{ @abstract(Sorting settings types and names.)}
unit PasDoc_SortSettings;
{$I pasdoc_defines.inc}
interface
uses SysUtils;
type
EInvalidSortSetting = class(Exception);
TSortSetting = (
{ At unit (TPasUnit) level : } { }
ssCIOs, ssConstants, ssFuncsProcs, ssTypes, ssVariables, ssUsesClauses,
{ At CIO (TPasCio) level : } { }
ssRecordFields, ssNonRecordFields, ssMethods, ssProperties);
TSortSettings = set of TSortSetting;
const
AllSortSettings: TSortSettings = [Low(TSortSetting) .. High(TSortSetting)];
{ Must be lowercase.
Used in @link(SortSettingsToName), @link(SortSettingFromName). }
SortSettingNames: array[TSortSetting] of string = (
'structures', 'constants', 'functions', 'types', 'variables', 'uses-clauses',
'record-fields', 'non-record-fields', 'methods', 'properties' );
{ @raises(EInvalidSortSetting if ASortSettingName does not match
(case ignored) to any SortSettingNames.) }
function SortSettingFromName(const SortSettingName: string): TSortSetting;
{ Comma-separated list }
function SortSettingsToName(const SortSettings: TSortSettings): string;
implementation
function SortSettingFromName(const SortSettingName: string): TSortSetting;
var S: string;
begin
S := LowerCase(SortSettingName);
for Result := Low(Result) to High(Result) do
if S = SortSettingNames[Result] then
Exit;
raise EInvalidSortSetting.CreateFmt('Invalid sort specifier "%s"',
[SortSettingName]);
end;
function SortSettingsToName(const SortSettings: TSortSettings): string;
var SS: TSortSetting;
begin
Result := '';
for SS := Low(SS) to High(SS) do
if SS in SortSettings then
begin
if Result <> '' then Result := Result + ',';
Result := Result + SortSettingNames[SS];
end;
end;
end.
|