Skip to content

Commit a6949b6

Browse files
authored
Merge pull request #2801 from SciML/myb/ns
Use NAMESPACE_SEPARATOR
2 parents 634c54b + c38aafa commit a6949b6

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

src/ModelingToolkit.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ using Symbolics: _parse_vars, value, @derivatives, get_variables,
6161
NAMESPACE_SEPARATOR, set_scalar_metadata, setdefaultval,
6262
initial_state, transition, activeState, entry, hasnode,
6363
ticksInState, timeInState, fixpoint_sub, fast_substitute
64+
const NAMESPACE_SEPARATOR_SYMBOL = Symbol(NAMESPACE_SEPARATOR)
6465
import Symbolics: rename, get_variables!, _solve, hessian_sparsity,
6566
jacobian_sparsity, isaffine, islinear, _iszero, _isone,
6667
tosymbol, lower_varname, diff2term, var_from_nested_derivative,

src/inputoutput.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -119,17 +119,17 @@ function same_or_inner_namespace(u, var)
119119
nv = get_namespace(var)
120120
nu == nv || # namespaces are the same
121121
startswith(nv, nu) || # or nv starts with nu, i.e., nv is an inner namespace to nu
122-
occursin('', string(getname(var))) &&
123-
!occursin('', string(getname(u))) # or u is top level but var is internal
122+
occursin(NAMESPACE_SEPARATOR, string(getname(var))) &&
123+
!occursin(NAMESPACE_SEPARATOR, string(getname(u))) # or u is top level but var is internal
124124
end
125125

126126
function inner_namespace(u, var)
127127
nu = get_namespace(u)
128128
nv = get_namespace(var)
129129
nu == nv && return false
130130
startswith(nv, nu) || # or nv starts with nu, i.e., nv is an inner namespace to nu
131-
occursin('', string(getname(var))) &&
132-
!occursin('', string(getname(u))) # or u is top level but var is internal
131+
occursin(NAMESPACE_SEPARATOR, string(getname(var))) &&
132+
!occursin(NAMESPACE_SEPARATOR, string(getname(u))) # or u is top level but var is internal
133133
end
134134

135135
"""
@@ -139,11 +139,11 @@ Return the namespace of a variable as a string. If the variable is not namespace
139139
"""
140140
function get_namespace(x)
141141
sname = string(getname(x))
142-
parts = split(sname, '')
142+
parts = split(sname, NAMESPACE_SEPARATOR)
143143
if length(parts) == 1
144144
return ""
145145
end
146-
join(parts[1:(end - 1)], '')
146+
join(parts[1:(end - 1)], NAMESPACE_SEPARATOR)
147147
end
148148

149149
"""

src/systems/abstractsystem.jl

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,9 @@ function SymbolicIndexingInterface.is_variable(sys::AbstractSystem, sym::Symbol)
365365
return is_variable(ic, sym)
366366
end
367367
return any(isequal(sym), getname.(variable_symbols(sys))) ||
368-
count('', string(sym)) == 1 &&
369-
count(isequal(sym), Symbol.(nameof(sys), :₊, getname.(variable_symbols(sys)))) ==
368+
count(NAMESPACE_SEPARATOR, string(sym)) == 1 &&
369+
count(isequal(sym),
370+
Symbol.(nameof(sys), NAMESPACE_SEPARATOR_SYMBOL, getname.(variable_symbols(sys)))) ==
370371
1
371372
end
372373

@@ -399,9 +400,10 @@ function SymbolicIndexingInterface.variable_index(sys::AbstractSystem, sym::Symb
399400
idx = findfirst(isequal(sym), getname.(variable_symbols(sys)))
400401
if idx !== nothing
401402
return idx
402-
elseif count('', string(sym)) == 1
403+
elseif count(NAMESPACE_SEPARATOR, string(sym)) == 1
403404
return findfirst(isequal(sym),
404-
Symbol.(nameof(sys), :₊, getname.(variable_symbols(sys))))
405+
Symbol.(
406+
nameof(sys), NAMESPACE_SEPARATOR_SYMBOL, getname.(variable_symbols(sys))))
405407
end
406408
return nothing
407409
end
@@ -431,9 +433,10 @@ function SymbolicIndexingInterface.is_parameter(sys::AbstractSystem, sym::Symbol
431433
return is_parameter(ic, sym)
432434
end
433435
return any(isequal(sym), getname.(parameter_symbols(sys))) ||
434-
count('', string(sym)) == 1 &&
436+
count(NAMESPACE_SEPARATOR, string(sym)) == 1 &&
435437
count(isequal(sym),
436-
Symbol.(nameof(sys), :₊, getname.(parameter_symbols(sys)))) == 1
438+
Symbol.(nameof(sys), NAMESPACE_SEPARATOR_SYMBOL, getname.(parameter_symbols(sys)))) ==
439+
1
437440
end
438441

439442
function SymbolicIndexingInterface.parameter_index(sys::AbstractSystem, sym)
@@ -466,9 +469,10 @@ function SymbolicIndexingInterface.parameter_index(sys::AbstractSystem, sym::Sym
466469
idx = findfirst(isequal(sym), getname.(parameter_symbols(sys)))
467470
if idx !== nothing
468471
return idx
469-
elseif count('', string(sym)) == 1
472+
elseif count(NAMESPACE_SEPARATOR, string(sym)) == 1
470473
return findfirst(isequal(sym),
471-
Symbol.(nameof(sys), :₊, getname.(parameter_symbols(sys))))
474+
Symbol.(
475+
nameof(sys), NAMESPACE_SEPARATOR_SYMBOL, getname.(parameter_symbols(sys))))
472476
end
473477
return nothing
474478
end
@@ -889,7 +893,7 @@ function renamespace(sys, x)
889893
elseif x isa AbstractSystem
890894
rename(x, renamespace(sys, nameof(x)))
891895
else
892-
Symbol(getname(sys), :₊, x)
896+
Symbol(getname(sys), NAMESPACE_SEPARATOR_SYMBOL, x)
893897
end
894898
end
895899

@@ -1248,7 +1252,7 @@ function round_trip_eq(eq::Equation, var2name)
12481252
syss = get_systems(eq.rhs)
12491253
call = Expr(:call, connect)
12501254
for sys in syss
1251-
strs = split(string(nameof(sys)), "")
1255+
strs = split(string(nameof(sys)), NAMESPACE_SEPARATOR)
12521256
s = Symbol(strs[1])
12531257
for st in strs[2:end]
12541258
s = Expr(:., s, Meta.quot(Symbol(st)))

src/systems/connectors.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ function generate_isouter(sys::AbstractSystem)
129129
function isouter(sys)::Bool
130130
s = string(nameof(sys))
131131
isconnector(sys) || error("$s is not a connector!")
132-
idx = findfirst(isequal(''), s)
132+
idx = findfirst(isequal(NAMESPACE_SEPARATOR), s)
133133
parent_name = Symbol(idx === nothing ? s : s[1:prevind(s, idx)])
134134
parent_name in outer_connectors
135135
end

0 commit comments

Comments
 (0)