diff --git a/gap/obsolete.gd b/gap/obsolete.gd new file mode 100644 index 000000000..323443322 --- /dev/null +++ b/gap/obsolete.gd @@ -0,0 +1 @@ +DeclareGlobalFunction("DIGRAPHS_DeclareObsoleteSynonym"); \ No newline at end of file diff --git a/gap/obsolete.gi b/gap/obsolete.gi new file mode 100644 index 000000000..84c98088e --- /dev/null +++ b/gap/obsolete.gi @@ -0,0 +1,16 @@ +InstallGlobalFunction(DIGRAPHS_DeclareObsoleteSynonym, +function(oldname, func) + if not IsString(oldname) then + ErrorNoReturn("the 1st argument must be a string,"); + fi; + if not IsFunction(func) then + ErrorNoReturn("the 2nd argument must be a function,"); + fi; + + BindGlobal(oldname, function(arg...) + Info(InfoWarning, 1, "\"", oldname, "\" is obsolete and will be removed ", + "in a future version;"); + Info(InfoWarning, 1, "use \"", NameFunction(func), "\" instead"); + return CallFuncList(func, arg); + end); +end); \ No newline at end of file diff --git a/init.g b/init.g index 236ac5bd3..3a551f41d 100644 --- a/init.g +++ b/init.g @@ -32,6 +32,7 @@ ReadPackage("digraphs", "gap/isomorph.gd"); ReadPackage("digraphs", "gap/utils.gd"); ReadPackage("digraphs", "gap/io.gd"); ReadPackage("digraphs", "gap/grahom.gd"); +ReadPackage("digraphs", "gap/obsolete.gd"); ReadPackage("digraphs", "gap/orbits.gd"); ReadPackage("digraphs", "gap/cliques.gd"); ReadPackage("digraphs", "gap/planar.gd"); diff --git a/read.g b/read.g index 9755db9fa..f2eb22e4b 100644 --- a/read.g +++ b/read.g @@ -35,6 +35,7 @@ ReadPackage("digraphs", "gap/display.gi"); ReadPackage("digraphs", "gap/isomorph.gi"); ReadPackage("digraphs", "gap/io.gi"); ReadPackage("digraphs", "gap/grahom.gi"); +ReadPackage("digraphs", "gap/obsolete.gi"); ReadPackage("digraphs", "gap/orbits.gi"); ReadPackage("digraphs", "gap/cliques.gi"); ReadPackage("digraphs", "gap/planar.gi"); diff --git a/tst/standard/obsolete.tst b/tst/standard/obsolete.tst index d72318f3c..15db2d466 100644 --- a/tst/standard/obsolete.tst +++ b/tst/standard/obsolete.tst @@ -1,3 +1,30 @@ +#@local prevlevel +gap> START_TEST("Digraphs package: standard/obsolete.tst"); +gap> LoadPackage("digraphs", false);; + +# +gap> DIGRAPHS_StartTest(); + +# DIGRAPHS_DeclareObsoleteSynonym +gap> DIGRAPHS_DeclareObsoleteSynonym(ChainDigraph, Digraph); +Error, the 1st argument must be a string, +gap> DIGRAPHS_DeclareObsoleteSynonym("Mycustomname", "Digraph"); +Error, the 2nd argument must be a function, +gap> DIGRAPHS_DeclareObsoleteSynonym("Mycustomname", Digraph);; +gap> prevlevel := InfoLevel(InfoWarning);; +gap> SetInfoLevel(InfoWarning, 1);; +gap> Mycustomname([[2], [1]]); +#I "Mycustomname" is obsolete and will be removed in a future version; +#I use "Digraph" instead + +gap> SetInfoLevel(InfoWarning, prevlevel);; +gap> MakeReadWriteGlobal("Mycustomname"); +gap> UnbindGlobal("Mycustomname");; + +# +gap> DIGRAPHS_StopTest(); +gap> STOP_TEST("Digraphs package: standard/obsolete.tst", 0); + ## AutomorphismGroup: for a digraph with multiple edges #