Skip to content
Snippets Groups Projects
Commit 276d3855 authored by Leif Andersson's avatar Leif Andersson
Browse files

Created module.

parent cb3850a7
Branches
No related tags found
No related merge requests found
name = "ControlCommon"
uuid = "9c98e656-dfbc-11ea-2f36-4b421b45bbac"
authors = ["Leif Andersson <leif.andersson@control.lth.se>"]
version = "0.1.0"
module ControlCommon
export printcsv, JuliaTikz;
using ControlSystems # ControlSystems v0.5.4
using Plots
using Printf
# Set some plot defaults
gr(tickfont=font(12,"Times"),legend=false);
function sprintdatarow(r)
join(map(n -> @sprintf("%#11.5G", n), r),';')
end
function sprintheader(r)
join(map(n -> @sprintf("%11s", n), r),';')
end
function printcsv(csv::String, data::Array{Any})
@warn """printcsv(csv::String, data::Array{Any}) is deprecated
Use printcsv(data::Array{Any}, csv="") instead""";
printcsv(data,csv);
end
function printcsv(data::Array{Any}, csv="")
global name;
if cmp(csv,"") == 0
csv = name *".csv";
end;
open(csv, "w") do f
hh = Array{String}(data[1,:]);
dd = convert(Array{Float64,2},data[2:end,1:end]);
println(f, sprintheader(hh));
map(r->println(f,sprintdatarow(r)),eachrow(dd));
end
end
#@deprecate printcsv(csv::String, data::Array{Any}) printcsv(data::Array{Any}, csv="")
"""
JuliaTikz(tikzfile,delete=true)
Extract and run the Julia part of a combined tikz/Julia file.
The boundary between the two is the string
\\endinput Julia <name>
where `<name>` is the name that will be given to the Julia file
(with .jl appended), and also to a variable `name` in the program,
i.e. name = "<name>".
The Julia file will be extracted to a temporary directory, which will be
deleted after the run unless the optional argument `delete` is false.
"""
function JuliaTikz(tikzfile,delete=true)
dir = mktempdir();
filespec = ""; out="";
if !delete
println("Opening " * tikzfile)
end;
open(tikzfile) do file
res = nothing;
while res === nothing
if eof(file)
error("\"\\endinput Julia \" not found");
end;
line = readline(file);
res = match(r"(\s*\\endinput\s+Julia\s+)([[:alnum:]]+)", line);
end;
name = res.captures[2];
filespec = join([dir, name * ".jl"],"/");
out = open(filespec,"w");
if !delete
println("Writing " * filespec);
end;
firstline = "name = \"" * name * "\"";
println(out,firstline);
while !eof(file)
println(out,readline(file));
end;
close(out);
end;
include(filespec);
if delete
rm(dir,recursive=true);
else
return filespec;
end;
end;
end; # end module
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment