Commit 276d3855 authored by Leif Andersson's avatar Leif Andersson
Browse files

Created module.

parent cb3850a7
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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment