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

Adjusting module name

parent 46fb0fa8
No related branches found
No related tags found
No related merge requests found
name = "JuliaTikz"
uuid = "9c98e656-dfbc-11ea-2f36-4b421b45bbac"
authors = ["Leif Andersson <leif.andersson@control.lth.se>"]
version = "0.1.0"
[deps]
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
module JuliaTikzModule
export printcsv, JuliaTikz;
using ControlSystems # ControlSystems v0.5.4
using Plots
using Printf
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
"""
printcsv(data::Array{Any}, csv="")
Print the array `data` to a file suitable for inclusion in pgfplots.
The columns of `data` should have a string as first element, and Float64
as the remaining elements.
The default name of the file will be `<name>.csv`, where `<name>` is the value
of the global variable `name`, typically given by `JuliaTikz`. Another name may
be specified whith the second argument of `printcsv`.
"""
function printcsv(data::Array{Any}, csv="")
if cmp(csv,"") == 0
global name;
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