Componentes.Terceros.jvcl/official/3.39/devtools/PackagesGenerator/GenerateAlias.pas
2010-01-18 16:55:50 +00:00

110 lines
2.4 KiB
ObjectPascal

unit GenerateAlias;
{$I jvcl.inc}
interface
uses
Contnrs, Classes,
JclSimpleXml,
PackageInformation;
type
TAlias = class (TObject)
private
FValue: string;
FName: string;
FValueAsTStrings : TStringList;
function GetValueAsTStrings: TStrings;
public
constructor Create(Node : TJclSimpleXmlElem); overload;
destructor Destroy; override;
property Name : string read FName;
property Value : string read FValue;
property ValueAsTStrings : TStrings read GetValueAsTStrings;
end;
TAliasList = class (TObjectList)
private
function GetItemsByName(name: string): TAlias;
function GetItems(index: integer): TAlias;
procedure SetItems(index: integer; const Value: TAlias);
public
constructor Create(Node : TJclSimpleXmlElem); overload;
property Items[index : integer] : TAlias read GetItems write SetItems;
property ItemsByName[name : string] : TAlias read GetItemsByName; default;
end;
implementation
uses
SysUtils,
JclStrings;
{ TAlias }
constructor TAlias.Create(Node: TJclSimpleXmlElem);
begin
inherited Create;
FName := AnsiLowerCase(Node.Properties.ItemNamed['name'].Value);
FValue := AnsiLowerCase(Node.Properties.ItemNamed['value'].Value);
FValueAsTStrings := nil;
end;
destructor TAlias.Destroy;
begin
FValueAsTStrings.Free;
inherited Destroy;
end;
function TAlias.GetValueAsTStrings: TStrings;
begin
if not Assigned(FValueAsTStrings) then
FValueAsTStrings := TStringList.Create;
StrToStrings(Value, ',', FValueAsTStrings, false);
Result := FValueAsTStrings;
end;
{ TAliasList }
constructor TAliasList.Create(Node: TJclSimpleXmlElem);
var
i : integer;
begin
inherited Create(True);
if Assigned(Node) then
for i := 0 to Node.Items.Count - 1 do
if Node.Items[i].Name = 'alias' then
begin
Add(TAlias.Create(Node.Items[i]));
end;
end;
function TAliasList.GetItems(index: integer): TAlias;
begin
Result := TAlias(inherited Items[index]);
end;
function TAliasList.GetItemsByName(name: string): TAlias;
var
i : integer;
begin
Result := nil;
for i := 0 to Count - 1 do
if SameText(TAlias(Items[i]).Name, name) then
begin
Result := TAlias(Items[i]);
Break;
end;
end;
procedure TAliasList.SetItems(index: integer; const Value: TAlias);
begin
inherited Items[index] := Value;
end;
end.