@@ -675,13 +675,17 @@ the corresponding signals are encoded.
675675"""
676676function encodeSignalTable (signalTable; signalNames= nothing )
677677 if isSignalTable (signalTable)
678- jdict = OrderedDict {String,Any} (" _class" => " SignalTable" )
678+ jdict = OrderedDict {String,Any} (" _class" => " SignalTable" ,
679+ " _classVersion" => version)
679680 if isnothing (signalNames)
680681 signalNames = getSignalNames (signalTable)
681682 end
682683 for name in signalNames
683684 signal = getSignal (signalTable, name)
684- jdict[name] = encodeSignalTableElement (name, signal)
685+ encodedSignal = encodeSignalTableElement (name, signal)
686+ if ! isnothing (encodedSignal)
687+ jdict[name] = encodedSignal
688+ end
685689 end
686690 return jdict
687691 else
@@ -696,23 +700,28 @@ end
696700Encodes a signal table element suitable to convert to JSON format.
697701"""
698702function encodeSignalTableElement (path, element)
699- if isVar (element)
700- jdict = OrderedDict {String,Any} (" _class" => " Var" )
701- for (key,val) in element
702- if key != :Var
703- jdict[string (key)] = encodeSignalTableElement (appendNames (path,key),val)
704- end
703+ if isSignal (element)
704+ if isVar (element)
705+ jdict = OrderedDict {String,Any} (" _class" => " Var" )
706+ else
707+ jdict = OrderedDict {String,Any} (" _class" => " Par" )
705708 end
706- return jdict
707-
708- elseif isPar (element)
709- jdict = OrderedDict {String,Any} (" _class" => " Par" )
709+ available = true
710710 for (key,val) in element
711- if key != :Par
712- jdict[string (key)] = encodeSignalTableElement (appendNames (path,key),val)
711+ if key != " :_class"
712+ encodedSignal = encodeSignalTableElement (appendNames (path,key),val)
713+ if isnothing (encodedSignal)
714+ available = false
715+ else
716+ jdict[string (key)] = encodedSignal
717+ end
713718 end
714719 end
715- return jdict
720+ if available
721+ return jdict
722+ else
723+ return nothing
724+ end
716725
717726 elseif typeof (element) <: AbstractArray && (elementBaseType (eltype (element)) <: Number || elementBaseType (eltype (element)) <: String )
718727 if ndims (element) == 1 && string (elementBaseType (eltype (element))) in TypesWithoutEncoding
0 commit comments