diff --git a/src/IterableTables.jl b/src/IterableTables.jl index 12a84eb..48efcc1 100644 --- a/src/IterableTables.jl +++ b/src/IterableTables.jl @@ -32,5 +32,6 @@ include("integrations/differentialequations.jl") include("integrations/juliadb.jl") include("integrations/generators.jl") include("integrations/temporal.jl") +include("integrations/valuedtimes.jl") end # module diff --git a/src/integrations/valuedtimes.jl b/src/integrations/valuedtimes.jl new file mode 100644 index 0000000..4d77be9 --- /dev/null +++ b/src/integrations/valuedtimes.jl @@ -0,0 +1,31 @@ +@require ValuedTimes begin + +import StaticArrays + +isiterable(x::ValuedTimes.ValuedTime) = true + +isiterabletable(x::ValuedTimes.ValuedTime) = true + +function getiterator(df::ValuedTimes.ValuedTime) + col_names = [Symbol(i) for i in df.colnames] + + cols = [] + push!(cols, df.timevals) + for col in df.datacols + push!(cols, col) + end + + return create_tableiterator(cols, col_names) +end + +function ValuedTimes.ValuedTime(source) + isiterabletable(source) || error("Not an iterable table.") + + columns, col_names = _fillcols(source) + + res = ValuedTimes.ValuedTime(StaticArrays.SVector(columns[1]), (StaticArrays.SVector.(columns[2:end])...)) + res.colnames[:] = col_names + return res +end + +end