mirror of
https://github.com/sasjs/core.git
synced 2026-01-03 15:40:05 +00:00
feat: adding mp_gsubfile.sas - a SAS macro that uses Lua to perform a full text find and replace of an entire file. Not restricted by number of characters (only memory). IIncludes a test.
This commit is contained in:
25
lua/gsubfile.lua
Normal file
25
lua/gsubfile.lua
Normal file
@@ -0,0 +1,25 @@
|
||||
local fpath, outpath, file, fcontent
|
||||
|
||||
-- configure in / out paths
|
||||
fpath = sas.symget("file")
|
||||
outpath = sas.symget("outfile")
|
||||
if ( outpath == 0 )
|
||||
then
|
||||
outpath=fpath
|
||||
end
|
||||
|
||||
-- open file and perform the substitution
|
||||
file = io.open(fpath,"r")
|
||||
fcontent = file:read()
|
||||
file:close()
|
||||
fcontent = string.gsub(
|
||||
fcontent,
|
||||
sas.symget(sas.symget("patternvar")),
|
||||
sas.symget(sas.symget("replacevar"))
|
||||
)
|
||||
|
||||
-- write the file back out
|
||||
file = io.open(outpath, "w+")
|
||||
io.output(file)
|
||||
io.write(fcontent)
|
||||
io.close(file)
|
||||
44
lua/ml_gsubfile.sas
Normal file
44
lua/ml_gsubfile.sas
Normal file
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
@file ml_gsubfile.sas
|
||||
@brief Compiles the gsubfile.lua lua file
|
||||
@details Writes gsubfile.lua to the work directory
|
||||
and then includes it.
|
||||
Usage:
|
||||
|
||||
%ml_gsubfile()
|
||||
|
||||
**/
|
||||
|
||||
%macro ml_gsubfile();
|
||||
data _null_;
|
||||
file "%sysfunc(pathname(work))/ml_gsubfile.lua";
|
||||
put 'local fpath, outpath, file, fcontent ';
|
||||
put ' ';
|
||||
put '-- configure in / out paths ';
|
||||
put 'fpath = sas.symget("file") ';
|
||||
put 'outpath = sas.symget("outfile") ';
|
||||
put 'if ( outpath == 0 ) ';
|
||||
put 'then ';
|
||||
put ' outpath=fpath ';
|
||||
put 'end ';
|
||||
put ' ';
|
||||
put '-- open file and perform the substitution ';
|
||||
put 'file = io.open(fpath,"r") ';
|
||||
put 'fcontent = file:read() ';
|
||||
put 'file:close() ';
|
||||
put 'fcontent = string.gsub( ';
|
||||
put ' fcontent, ';
|
||||
put ' sas.symget(sas.symget("patternvar")), ';
|
||||
put ' sas.symget(sas.symget("replacevar")) ';
|
||||
put ') ';
|
||||
put ' ';
|
||||
put '-- write the file back out ';
|
||||
put 'file = io.open(outpath, "w+") ';
|
||||
put 'io.output(file) ';
|
||||
put 'io.write(fcontent) ';
|
||||
put 'io.close(file) ';
|
||||
run;
|
||||
|
||||
%inc "%sysfunc(pathname(work))/ml_gsubfile.lua";
|
||||
|
||||
%mend ml_gsubfile;
|
||||
Reference in New Issue
Block a user