Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lua String concatenation

I am working on Lua and I have this kind of code

MapMessage(Process["ks.MSH"][1], MsgIn, mg)
MapEvent(Process["ks.EVN"][1], MsgIn, mg)
MapPatient(Process["ks.PID"][1], MsgIn, mg)
MapVisit(Process["ks.PV1"][1],MsgIn,mg)

In above statements, MapMessage, MapEvent, MapPatient, MapVisit are the functions and ks.MSH, ks.EVN, ks.PID, ks.PV1 are the tables in the database. Now, I want to automate a part of this process using gmatch function provided in lua and I have this so far

for u in string.gmatch(S, "([^,%s]+)"), 1 do
     l[k] = u 
    _G["Map"..l[k]](Process["ks[l[k]]"][1], R[1])
     k=k+1
   end 

but the concatenation part in the third line of above code is not really making it ks.MSH, ks.PID, ks.PV1 e.t.c, so please suggest what needs to be there in place of (Process["ks[l[k]]"][1]to get s.MSH, ks.PID, ks.PV1 e.t.c

like image 990
S Khurana Avatar asked Aug 01 '26 12:08

S Khurana


1 Answers

Since your string contains "MSH, PID, PV1, EVN", you'd have to use a hash-table or a lookup table. The program would be something like this:

S = "MSH, PID, PV1, EVN"
tLookup = {
    MSH = "Message",
    EVN = "Event",
    PID = "Patient",
    PV1 = "Visit",
}

for u in S:gmatch "([^,%s]+)" do
    sNameOfFunction = tLoopup[u]
    _G[ "Map"..sNameOfFunction ] ( Process["ks."..u][1], MsgIn, mg )
     k=k+1
end

Or even something like this:

S = "MSH, PID, PV1, EVN"
tLookup = {
    MSH = _G.MapMessage,
    EVN = _G.MapEvent,
    PID = _G.MapPatient,
    PV1 = _G.MapVisit,
}

for u in S:gmatch "([^,%s]+)" do
    tLoopup[u] ( Process["ks."..u][1], MsgIn, mg )
    k = k+1
end
like image 164
hjpotter92 Avatar answered Aug 04 '26 02:08

hjpotter92



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!