1
0
mirror of https://github.com/kalmarek/Groups.jl.git synced 2024-09-13 00:20:40 +02:00

replace_all! returns if any modification has been performed

This commit is contained in:
kalmar 2017-07-06 09:18:53 +02:00
parent 95ac3940d7
commit 18ad0a04b6

View File

@ -352,15 +352,17 @@ function replace(W::GWord, index, toreplace::GWord, replacement::GWord)
end
function replace_all!{T}(W::GWord{T}, subst_dict::Dict{GWord{T}, GWord{T}})
modified = false
for toreplace in reverse!(sort!(collect(keys(subst_dict)), by=length))
replacement = subst_dict[toreplace]
i = findfirst(W, toreplace)
while i 0
modified = true
replace!(W,i,toreplace, replacement)
i = findnext(W, toreplace, i)
end
end
return W
return modified
end
replace_all{T<:GSymbol}(W::GWord{T}, subst_dict::Dict{GWord{T}, GWord{T}}) = replace_all!(deepcopy(W), subst_dict)