@@ -681,7 +681,10 @@ function encodeSignalTable(signalTable; signalNames=nothing)
681681 end
682682 for name in signalNames
683683 signal = getSignal (signalTable, name)
684- jdict[name] = encodeSignalTableElement (name, signal)
684+ encodedSignal = encodeSignalTableElement (name, signal)
685+ if ! isnothing (encodedSignal)
686+ jdict[name] = encodedSignal
687+ end
685688 end
686689 return jdict
687690 else
@@ -696,23 +699,28 @@ end
696699Encodes a signal table element suitable to convert to JSON format.
697700"""
698701function 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
702+ if isSignal (element)
703+ if isVar (element)
704+ jdict = OrderedDict {String,Any} (" _class" => " Var" )
705+ else
706+ jdict = OrderedDict {String,Any} (" _class" => " Par" )
705707 end
706- return jdict
707-
708- elseif isPar (element)
709- jdict = OrderedDict {String,Any} (" _class" => " Par" )
708+ available = true
710709 for (key,val) in element
711- if key != :Par
712- jdict[string (key)] = encodeSignalTableElement (appendNames (path,key),val)
710+ if key != " :_class"
711+ encodedSignal = encodeSignalTableElement (appendNames (path,key),val)
712+ if isnothing (encodedSignal)
713+ available = false
714+ else
715+ jdict[string (key)] = encodedSignal
716+ end
713717 end
714718 end
715- return jdict
719+ if available
720+ return jdict
721+ else
722+ return nothing
723+ end
716724
717725 elseif typeof (element) <: AbstractArray && (elementBaseType (eltype (element)) <: Number || elementBaseType (eltype (element)) <: String )
718726 if ndims (element) == 1 && string (elementBaseType (eltype (element))) in TypesWithoutEncoding
0 commit comments