packager: support unit names with dots

git-svn-id: trunk@33385 -
This commit is contained in:
paul 2011-11-07 05:45:13 +00:00
parent dc6652bb81
commit 31f2ff282e
6 changed files with 41 additions and 18 deletions

View File

@ -324,7 +324,7 @@ begin
// check unitname
if AddFileType in [d2ptUnit,d2ptNewComponent,d2ptVirtualUnit] then begin
AnUnitName:=ExtractFileNameOnly(AFilename);
if not IsValidIdent(AnUnitName) then begin
if not IsValidUnitName(AnUnitName) then begin
MessageDlg(lisA2PFileNotUnit,
Format(lisA2PisNotAValidUnitName, ['"', AnUnitName, '"']),
mtWarning,[mbCancel],0);
@ -385,7 +385,7 @@ begin
end;
// check packagename
if (NewPkgName='') or (not IsValidIdent(NewPkgName)) then begin
if (NewPkgName='') or (not IsValidUnitName(NewPkgName)) then begin
MessageDlg(lisProjAddInvalidPackagename,
Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting, ['"', NewPkgName, '"', #13]),
mtError,[mbCancel],0);

View File

@ -926,6 +926,8 @@ procedure PkgVersionSaveToXMLConfig(Version: TPkgVersion; XMLConfig: TXMLConfig;
procedure PkgVersionLoadFromXMLConfig(Version: TPkgVersion;
XMLConfig: TXMLConfig);
function IsValidUnitName(AUnitName: String): Boolean;
var
Package1: TLazPackage; // don't use it - only for options dialog
@ -934,6 +936,27 @@ function dbgs(p: TPackageUpdatePolicy): string; overload;
implementation
function IsValidUnitName(AUnitName: String): Boolean;
var
P: Integer;
UnitPart: String;
begin
Result := True;
repeat
P := Pos('.', AUnitName);
if P > 0 then
begin
UnitPart := Copy(AUnitName, 1, P - 1);
Delete(AUnitName, 1, P);
Result := Result and IsValidIdent(UnitPart);
end
else
Result := IsValidIdent(AUnitName);
if not Result then
Break;
until P = 0;
end;
function PkgFileTypeIdentToType(const s: string): TPkgFileType;
begin
for Result:=Low(TPkgFileType) to High(TPkgFileType) do
@ -1358,7 +1381,7 @@ begin
Result:=false;
if CompareFileExt(AFilename,'.lpk',false)<>0 then exit;
PkgName:=ExtractFileNameOnly(AFilename);
if (PkgName='') or (not IsValidIdent(PkgName)) then exit;
if (PkgName='') or (not IsValidUnitName(PkgName)) then exit;
Result:=true;
end;
@ -1880,7 +1903,7 @@ end;
function TPkgDependency.MakeSense: boolean;
begin
Result:=IsValidIdent(PackageName);
Result:=IsValidUnitName(PackageName);
if Result
and (pdfMinVersion in FFlags) and (pdfMaxVersion in FFlags)
and (MinVersion.Compare(MaxVersion)>0) then
@ -2913,7 +2936,7 @@ end;
function TLazPackage.MakeSense: boolean;
begin
Result:=false;
if (Name='') or (not IsValidIdent(Name)) then exit;
if (Name='') or (not IsValidUnitName(Name)) then exit;
Result:=true;
end;

View File

@ -283,7 +283,7 @@ end;
function TPackageLink.MakeSense: boolean;
begin
Result:=(Name<>'') and IsValidIdent(Name)
Result:=(Name<>'') and IsValidUnitName(Name)
and PackageFileNameIsValid(Filename)
and (CompareText(Name,ExtractFileNameOnly(Filename))=0);
end;

View File

@ -1309,7 +1309,7 @@ begin
try
// check unitname
FRegistrationUnitName:=TheUnitName;
if not IsValidIdent(FRegistrationUnitName) then begin
if not IsValidUnitName(FRegistrationUnitName) then begin
RegistrationError(Format(lisPkgSysInvalidUnitname, [FRegistrationUnitName]
));
exit;
@ -2228,7 +2228,7 @@ var
begin
for i:=0 to PkgList.Count-1 do begin
PackageName:=PkgList[i];
if (PackageName='') or (not IsValidIdent(PackageName)) then continue;
if (PackageName='') or (not IsValidUnitName(PackageName)) then continue;
Dependency:=FindDependencyByNameInList(FirstAutoInstallDependency,
pdlRequires,PackageName);
//DebugLn('TLazPackageGraph.LoadAutoInstallPackages ',dbgs(Dependency),' ',PackageName);
@ -4507,7 +4507,7 @@ begin
CurFile.Unit_Name:=CurUnitName;
end;
if (CurUnitName='') or (not IsValidIdent(CurUnitName)) then begin
if (CurUnitName='') or (not IsValidUnitName(CurUnitName)) then begin
AddMessage(Format(lisIDEInfoWARNINGUnitNameInvalidPackage, [CurFile.
Filename, APackage.IDAsString]),
APackage.Directory);

View File

@ -536,7 +536,7 @@ begin
copy(aFormName,1,length(PackageEditorWindowPrefix)))=0
then begin
APackageName:=copy(aFormName,length(PackageEditorWindowPrefix)+1,length(aFormName));
if (APackageName='') or not IsValidIdent(APackageName) then exit;
if (APackageName='') or not IsValidUnitName(APackageName) then exit;
NewDependency:=TPkgDependency.Create;
try
NewDependency.PackageName:=APackageName;
@ -1034,7 +1034,7 @@ begin
end;
// check filename
if (NewPkgName='') or (not IsValidIdent(NewPkgName)) then begin
if (NewPkgName='') or (not IsValidUnitName(NewPkgName)) then begin
Result:=IDEMessageDialog(lisPkgMangInvalidPackageName,
Format(lisPkgMangThePackageNameIsNotAValidPackageNamePleaseChooseAn, [
'"', NewPkgName, '"', #13]),
@ -1401,7 +1401,7 @@ begin
StaticPackage:=PRegisteredPackage(StaticPackages[i]);
// check package name
if (StaticPackage^.Name='') or (not IsValidIdent(StaticPackage^.Name))
if (StaticPackage^.Name='') or (not IsValidUnitName(StaticPackage^.Name))
then begin
DebugLn('TPkgManager.LoadStaticCustomPackages Invalid Package Name: "',
BinaryStrToText(StaticPackage^.Name),'"');
@ -1757,7 +1757,7 @@ var
if LangEnd<>length(Filename)-2 then exit;
AUnitName:=copy(Filename,1,UnitNameEnd-1);
Language:=copy(Filename,UnitNameEnd+1,LangEnd-UnitNameEnd-1);
Result:=IsValidIdent(AUnitName) and (Language<>'');
Result:=IsValidUnitName(AUnitName) and (Language<>'');
//DebugLn(['GetPOFilenameParts AUnitName=',AUnitName,' Language=',Language,' Result=',Result]);
end;
@ -1827,7 +1827,7 @@ var
ConflictPkg: TLazPackage;
begin
// check Package Name
if (APackage.Name='') or (not IsValidIdent(APackage.Name)) then begin
if (APackage.Name='') or (not IsValidUnitName(APackage.Name)) then begin
Result:=IDEMessageDialog(lisPkgMangInvalidPackageName2,
Format(lisPkgMangThePackageNameOfTheFileIsInvalid, ['"', APackage.Name,
'"', #13, '"', APackage.Filename, '"']),
@ -1985,7 +1985,7 @@ begin
RequiredPackages:=SplitString(Packages,';');
for i:=0 to RequiredPackages.Count-1 do begin
PkgName:=Trim(RequiredPackages[i]);
if (PkgName='') or (not IsValidIdent(PkgName)) then continue;
if (PkgName='') or (not IsValidUnitName(PkgName)) then continue;
APackage:=PackageGraph.FindPackageWithName(PkgName,nil);
if APackage=nil then begin
DebugLn(['TPkgManager.AddProjectDependencies package not found: ',PkgName]);
@ -2117,7 +2117,7 @@ var
LoadResult: TLoadPackageResult;
begin
Result:=mrCancel;
if (APackageName='') or not IsValidIdent(APackageName) then exit;
if (APackageName='') or not IsValidUnitName(APackageName) then exit;
NewDependency:=TPkgDependency.Create;
try
NewDependency.PackageName:=APackageName;
@ -2170,7 +2170,7 @@ begin
// check filename
AlternativePkgName:=ExtractFileNameOnly(AFilename);
if (not (pofRevert in Flags))
and ((AlternativePkgName='') or (not IsValidIdent(AlternativePkgName)))
and ((AlternativePkgName='') or (not IsValidUnitName(AlternativePkgName)))
then begin
DoQuestionDlg(lisPkgMangInvalidPackageFilename,
Format(lisPkgMangThePackageFileNameInIsNotAValidLazarusPackageName, ['"',

View File

@ -114,7 +114,7 @@ begin
mtError,[mbCancel],0);
exit;
end;
if (NewUnitName='') or (not IsValidIdent(NewUnitName)) then begin
if (NewUnitName='') or (not IsValidUnitName(NewUnitName)) then begin
MessageDlg(lisPEInvalidUnitname,
lisPVUTheUnitnameIsNotAValidPascalIdentifier,
mtError,[mbCancel],0);