Accept Dataset in arguments
This commit is contained in:
parent
3c06aba985
commit
47a988246d
@ -59,7 +59,7 @@ end
|
|||||||
|
|
||||||
function display(v::PlotElement)
|
function display(v::PlotElement)
|
||||||
if isa(v.data, DatasetText)
|
if isa(v.data, DatasetText)
|
||||||
data = "DatasetText: \n" * join(v.data.preview, "\n")
|
data = "DatasetText"
|
||||||
elseif isa(v.data, DatasetBin)
|
elseif isa(v.data, DatasetBin)
|
||||||
data = "DatasetBin: \n" * v.data.source
|
data = "DatasetBin: \n" * v.data.source
|
||||||
else
|
else
|
||||||
@ -962,6 +962,7 @@ function parseArguments(_args...)
|
|||||||
(valtype(arg) <: AbstractString)) ;
|
(valtype(arg) <: AbstractString)) ;
|
||||||
elseif isa(arg, Real) # ==> a dataset column with only one row
|
elseif isa(arg, Real) # ==> a dataset column with only one row
|
||||||
args[pos] = [arg]
|
args[pos] = [arg]
|
||||||
|
elseif isa(arg, Dataset) ; # ==> a Dataset object
|
||||||
elseif hasmethod(recipe, tuple(typeof(arg))) # ==> implicit recipe
|
elseif hasmethod(recipe, tuple(typeof(arg))) # ==> implicit recipe
|
||||||
# @info which(recipe, tuple(typeof(arg))) # debug
|
# @info which(recipe, tuple(typeof(arg))) # debug
|
||||||
deleteat!(args, pos)
|
deleteat!(args, pos)
|
||||||
@ -980,7 +981,47 @@ function parseArguments(_args...)
|
|||||||
pos += 1
|
pos += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
# Third pass: collect PlotElement objects
|
# Third pass: convert data into Dataset objetcs
|
||||||
|
pos = 1
|
||||||
|
while pos <= length(args)
|
||||||
|
arg = args[pos]
|
||||||
|
if isa(arg, AbstractArray) && # ==> beginning of a dataset
|
||||||
|
((valtype(arg) <: Real) ||
|
||||||
|
(valtype(arg) <: AbstractString))
|
||||||
|
|
||||||
|
# Collect all data
|
||||||
|
accum = Vector{AbstractArray}()
|
||||||
|
while isa(arg, AbstractArray) &&
|
||||||
|
((valtype(arg) <: Real) ||
|
||||||
|
(valtype(arg) <: AbstractString))
|
||||||
|
push!(accum, arg)
|
||||||
|
deleteat!(args, pos)
|
||||||
|
if pos <= length(args)
|
||||||
|
arg = args[pos]
|
||||||
|
else
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
mm = extrema(length.(accum))
|
||||||
|
if mm[1] == 0
|
||||||
|
# empty Dataset
|
||||||
|
@assert mm[1] == mm[2] "At least one input array is empty, while other(s) are not"
|
||||||
|
d = DatasetEmpty()
|
||||||
|
else
|
||||||
|
if useBinaryMethod(accum...)
|
||||||
|
d = DatasetBin(accum...)
|
||||||
|
else
|
||||||
|
d = DatasetText(accum...)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
insert!(args, pos, d)
|
||||||
|
end
|
||||||
|
pos += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Fourth pass: collect PlotElement objects
|
||||||
mid = 0
|
mid = 0
|
||||||
name = ""
|
name = ""
|
||||||
cmds = Vector{String}()
|
cmds = Vector{String}()
|
||||||
@ -1008,49 +1049,21 @@ function parseArguments(_args...)
|
|||||||
name = ""
|
name = ""
|
||||||
elseif isa(arg, Pair) # ==> dataset name
|
elseif isa(arg, Pair) # ==> dataset name
|
||||||
name = arg[1]
|
name = arg[1]
|
||||||
elseif isa(arg, AbstractArray) && # ==> beginning of a dataset
|
elseif isa(arg, Dataset) # ==> A Dataset
|
||||||
((valtype(arg) <: Real) ||
|
|
||||||
(valtype(arg) <: AbstractString))
|
|
||||||
|
|
||||||
# Collect all data
|
|
||||||
accum = Vector{Any}()
|
|
||||||
while isa(arg, AbstractArray) &&
|
|
||||||
((valtype(arg) <: Real) ||
|
|
||||||
(valtype(arg) <: AbstractString))
|
|
||||||
push!(accum, arg)
|
|
||||||
deleteat!(args, pos)
|
|
||||||
if pos <= length(args)
|
|
||||||
arg = args[pos]
|
|
||||||
else
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
spec = Vector{String}()
|
spec = Vector{String}()
|
||||||
if name == "" # only unnamed data sets have an associated plot spec
|
if name == "" # only unnamed data sets have an associated plot spec
|
||||||
spec = ""
|
spec = ""
|
||||||
if (pos <= length(args)) &&
|
if (pos < length(args)) &&
|
||||||
isa(args[pos], String)
|
isa(args[pos+1], String)
|
||||||
spec = args[pos]
|
spec = args[pos+1]
|
||||||
deleteat!(args, pos)
|
deleteat!(args, pos+1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if !isa(arg, DatasetEmpty)
|
||||||
mm = extrema(length.(accum))
|
push!(elems, PlotElement(mid=mid, cmds=cmds, name=name, data=arg, plot=spec))
|
||||||
if mm[1] == 0
|
|
||||||
# empty Dataset
|
|
||||||
@assert mm[1] == mm[2] "At least one input array is empty, while other(s) are not"
|
|
||||||
else
|
|
||||||
if useBinaryMethod(accum...)
|
|
||||||
d = DatasetBin(accum...)
|
|
||||||
else
|
|
||||||
d = DatasetText(accum...)
|
|
||||||
end
|
|
||||||
push!(elems, PlotElement(mid=mid, cmds=cmds, name=name, data=d, plot=spec))
|
|
||||||
end
|
end
|
||||||
name = ""
|
name = ""
|
||||||
empty!(cmds)
|
empty!(cmds)
|
||||||
continue
|
|
||||||
elseif isa(arg, PlotElement)
|
elseif isa(arg, PlotElement)
|
||||||
if length(cmds) > 0
|
if length(cmds) > 0
|
||||||
push!(elems, PlotElement(mid=mid, cmds=cmds))
|
push!(elems, PlotElement(mid=mid, cmds=cmds))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user