| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- local ReceiverBase = require("core:erm.ReceiverBase")
- local VR = ReceiverBase:new()
- function VR:new(ERM, v)
- assert(v ~= nil, "!!VR requires variable identifier")
- return ReceiverBase.new(self, {v=v, ERM=ERM})
- end
- local match = string.match
- local function trim(s)
- return match(s,'^()%s*$') and '' or match(s,'^%s*(.*%S)')
- end
- function VR:H(flagIndex)
- local v = trim(self.v)
- self.ERM.F[flagIndex] = v ~= ''
- end
- function VR:U(subString)
- self.ERM.F['1'] = string.find(self.v, subString) > 0
- end
- function VR:M1(startIndex, length)
- return string.sub(self.v, startIndex - 1, startIndex - 1 + length)
- end
- function VR:M2(wordIndex)
- local words = string.gmatch(self.v, "[^%s]+")
- local i = 0
- for w in words do
- if i == wordIndex then
- return w
- end
- i = i + 1
- end
- end
- function VR:M3(val, radix)
- radix = radix or 10
-
- if(type(val) ~= "number") then
- error("The first parameter should be of numeric type")
- end
-
- if(type(radix) ~= "number") then
- error("The second parameter should be of numeric type. Default value is 10.")
- end
-
- if radix == 10 then
- return tostring(val)
- elseif radix == 16 then
- return string.format("%x", val)
- else
- error("The second parameter value is invalid. Only 10 and 16 radix are supported for now.")
- end
- end
- function VR:M4()
- return string.len(self.v)
- end
- function VR:M5()
- local firstPos = string.find(str, "[^%s]+")
-
- return firstPos
- end
- function VR:M6()
- local lastPos = 1 + string.len(self.v) - string.find(string.reverse(self.v), "[^%s]+")
-
- return lastPos
- end
- return VR
|