VE Lua Documentation

Press F to search!

gsub

Definition


-- @/=[C]:-1
function gsub(...)

Callers

@/lua/ge/extensions/scenario/busdriver.lua
  end
  local hex = hex:gsub("#","")
  if hex:len() == 3 then
@/lua/ge/extensions/core/vehicle/partmgmt.lua
    data.linkedPCFile = nil
    data.model = vehicleData.model or vehicleData.vehicleDirectory:gsub("vehicles/", ""):gsub("/", "")
    data.partsCondition = partsCondition
    data.linkedPCFile = nil
    data.model = vehicleData.model or vehicleData.vehicleDirectory:gsub("vehicles/", ""):gsub("/", "")
    data.partsCondition = partsCondition
  data.format = 2
  data.model = playerVehicleData.model or playerVehicleData.vehicleDirectory:gsub("vehicles/", ""):gsub("/", "")
  data.partsCondition = partsCondition
  data.format = 2
  data.model = playerVehicleData.model or playerVehicleData.vehicleDirectory:gsub("vehicles/", ""):gsub("/", "")
  data.partsCondition = partsCondition
  local configWithoutFilename = string.sub(filename, #(playerVehicleData.vehicleDirectory or "") + 1)
  configWithoutFilename = configWithoutFilename:gsub("%.pc$", "")
  ui_vehicleSelector_general.trackRecentVehicle(data.model, configWithoutFilename)
@/lua/common/libs/lunajson/lunajson/sax.lua
    fixedtonumber = function(s)
      return tonumber(gsub(s, '.', radixmark))
    end
      -- check the last for this purpose.
      str = gsub(str, '\\(.)([^\\]?[^\\]?[^\\]?[^\\]?[^\\]?)', f_str_subst)
      if f_str_surrogate_prev ~= 0 then
@/lua/ge/extensions/core/settings/graphic.lua
    if a.gpu == graphicInformation.gpu and a.gfx == graphicInformation.api then
      local left, top, width, height = GFXDevice.getDisplayRegion(a.output:gsub("/","\\"))
      local hertz = GFXDevice.getDisplayRefreshRate(a.output:gsub("/","\\"))
      local left, top, width, height = GFXDevice.getDisplayRegion(a.output:gsub("/","\\"))
      local hertz = GFXDevice.getDisplayRefreshRate(a.output:gsub("/","\\"))
      a.output = a.output:gsub("\\","/")
      local hertz = GFXDevice.getDisplayRefreshRate(a.output:gsub("/","\\"))
      a.output = a.output:gsub("\\","/")
      table.insert(graphicInformation.outputs, {monitorName = a.monitor, output = a.output, region = {left = left, top = top, width = width, height = height}, refreshRate = hertz })
    SelectHighestForDisplay = function (displayName)
      local displayResolution = GFXDevice.getDisplayDesktopResolution(displayName:gsub("/","\\"))
      o.GraphicDisplayResolutions.width = displayResolution.width or 1280

      local videoModeList = GFXDevice.getDisplayVideoModes(o.GraphicDisplayDriver.get():gsub("/","\\"))
      table.sort(videoModeList, function(a, b)
      local resolutionWidth, resolutionHeight = o.GraphicDisplayResolutions.getWidthHeight()
      local videoModeList = GFXDevice.getDisplayVideoModes(o.GraphicDisplayDriver.get():gsub("/","\\"))
      for k, vm in ipairs(videoModeList) do

      return o.GraphicDisplayDriver.adapter.output:gsub("\\","/")
    end,
    set = function ( value )
      value = value and value:gsub("/","\\") or ""
      local adapters = GFXInit.getAdapters()
        if a.gpu == currentGPU and a.gfx == currentGFX then
          a.output = a.output:gsub("\\","/")
          table.insert(keys, a.output)
          if a.gpu == newGPU then
            a.output = a.output:gsub("/","\\")
            GFXDevice.setDisplayDevice(newGPU)
  local displayDriver = graphicsOptions.GraphicDisplayDriver.get()
  displayDriver = displayDriver:gsub("/","\\")
  GFXDevice.setDisplayDevice(displayDriver)
@/lua/ge/extensions/gameplay/rally/util/normalizer.lua
    local from, to = mapping[1], mapping[2]
    newnote, count = newnote:gsub(from, to)
    -- note = note:gsub(from, to)
    newnote, count = newnote:gsub(from, to)
    -- note = note:gsub(from, to)
  end
@/lua/ge/extensions/editor/flowgraph/properties.lua
            local oldName = pin.name
            if ffi.string(textinput) ~= '' and ffi.string(textinput):gsub("[%s]",""):len()~=0 then
              pin.name = ffi.string(textinput)
            local oldName = pin.name
            if ffi.string(textinput) ~= '' and ffi.string(textinput):gsub("[%s]",""):len()~=0 then
              pin.name = ffi.string(textinput)
        if im.Button("Add Tag Field") then
          if ffi.string(self.macroTagField) ~= '' and ffi.string(self.macroTagField):gsub("[%s]",""):len()~=0 then
            table.insert(self.mgr.macroTags,tag)
@/lua/ge/extensions/core/vehicleTriggers.lua
                  if im.SmallButton('-1##z'..tostring(evt.cid)..'_'..tostring(vehId)) then
                    local cmdStr = evt.onChange:gsub("VALUE", tostring(-1))
                    print('-1 - '..cmdStr)
                  if im.SmallButton('0##z'..tostring(evt.cid)..'_'..tostring(vehId)) then
                    local cmdStr = evt.onChange:gsub("VALUE", tostring(0))
                    print('0 - '..cmdStr)
                  if im.SmallButton('1##o'..tostring(evt.cid)..'_'..tostring(vehId)) then
                    local cmdStr = evt.onChange:gsub("VALUE", tostring(1))
                    print('1 - '..cmdStr)
@/lua/ge/extensions/util/compileMeshes.lua
      local customCompilePathsArg = cmdArgs[i + 1]
	  customCompilePathsArg = customCompilePathsArg:gsub("\"", "")
	  compilePaths = stringToTable(customCompilePathsArg, ';')
@/lua/ge/extensions/campaign/exploration.lua
  for _,prefabPath in ipairs(triggers) do
    local prefabName = string.gsub(prefabPath, "(.*/)(.*)%.prefab", "%2")
    log('A', logTag, 'Spawning: '..prefabPath..' with name: '..prefabName)
@/lua/ge/extensions/core/levels.lua
    local dirname, filename, ext = path.split(l.fullfilename)
    filename = string.gsub(filename, "%.mis$", "")
    l.entryPoint = string.gsub(filename, "%.level.json$", "")
    filename = string.gsub(filename, "%.mis$", "")
    l.entryPoint = string.gsub(filename, "%.level.json$", "")
  if string.find(missionFile, ".mis$") then
    newMission = string.gsub(missionFile, ".mis$", ".level.json")
@/lua/ge/extensions/tech/pythonExport.lua
  local lineStart = #buffer
  buffer:put(sensorName:gsub('[%[%] ]+', '_'):rstripchars('_'):lower())
  buffer:put(" = ")
@/lua/ge/extensions/editor/dynamicDecals/helper.lua
local function splitAndCapitalizeCamelCase(str)
  return str:gsub("%u%l+", function(match)
    return " " .. match
    return " " .. match
  end):gsub("(%w)(%w*)", function(first, rest)
    return first:upper() .. rest:lower()
local function capitalizeWords(str)
  return str:gsub("(%w)(%w*)", function(first, rest)
    return first:upper() .. rest:lower()
@/lua/vehicle/controller/esc.lua
            local entry = {
              title = "ui.radialmenu2.ESC." .. v.name:gsub(" ", "_"),
              icon = "radial_" .. string.lower(v.name:gsub(" ", "_")),
              title = "ui.radialmenu2.ESC." .. v.name:gsub(" ", "_"),
              icon = "radial_" .. string.lower(v.name:gsub(" ", "_")),
              originalActionInfo = {level = "/root/playerVehicle/vehicleFeatures/", uniqueID = "escMode"},
@/lua/ge/extensions/editor/trafficSignalsEditor.lua
    if instance.id ~= otherInstance.id and string.startswith(otherInstance.name, name) then
      local num = string.gsub(otherInstance.name, name, "")
      idx = math.max(idx, tonumber(num) or idx) -- finds the highest number out of all instances with the same prefix
@/lua/ge/extensions/career/modules/branches/landing.lua
      local new_number = number + addedValue
      local oValue = color:gsub("(%d+)", tostring(new_number))
      return oValue
@/lua/ge/extensions/ui/vehicleSelector/vehicleSpecifications.lua
  elseif configDetails.Drivetrain and type(configDetails.Drivetrain) == 'string' and string.find(configDetails.Drivetrain, "x") then
    table.insert(iconTags, {iconText = string.gsub(configDetails.Drivetrain, "x", "×"), label = "Drivetrain: "..string.gsub(configDetails.Drivetrain, "x", "×")})
  end
  elseif configDetails.Drivetrain and type(configDetails.Drivetrain) == 'string' and string.find(configDetails.Drivetrain, "x") then
    table.insert(iconTags, {iconText = string.gsub(configDetails.Drivetrain, "x", "×"), label = "Drivetrain: "..string.gsub(configDetails.Drivetrain, "x", "×")})
  end
@/lua/ge/extensions/editor/api/core.lua
    local newFilename = v
    newFilename = newFilename:gsub(srcPath, dstPath)
    FS:copyFile(v, newFilename)
  local filesAndFolders = FS:findFiles(srcPath, "*.*", -1, true, true)
  local srcLevelName = srcPath:gsub("levels/", "")
  local levelName = dstPath:gsub("levels/", "")
  local srcLevelName = srcPath:gsub("levels/", "")
  local levelName = dstPath:gsub("levels/", "")

  srcLevelName = srcLevelName:gsub("/", "")
  levelName = levelName:gsub("/", "")
  srcLevelName = srcLevelName:gsub("/", "")
  levelName = levelName:gsub("/", "")

    newFilename = newFilename:gsub(srcPath, dstPath)
    FS:copyFile(v, newFilename)
      local content = readFile(newFilename)
      content = content:gsub(srcLevelName, levelName)
      writeFile(newFilename, content)
    if newFilename:find(srcLevelName) then
      local finalFilename = newFilename:gsub(srcLevelName, levelName)
      FS:renameFile(newFilename, finalFilename)
@/lua/common/libs/luasocket/socket/http.lua
            if err then return nil, err end
            local size = base.tonumber(string.gsub(line, ";.*", ""), 16)
            if not size then return nil, "invalid chunk size" end
    return headers.location and
           string.gsub(headers.location, "%s", "") ~= "" and
           (reqt.redirect ~= false) and
@/lua/ge/extensions/editor/dragRaceEditor/dragSettings.lua
    table.insert(possibleLevelNames, levelName:lower())
    local underscoreName = levelName:gsub(" ", "_")
    table.insert(possibleLevelNames, underscoreName)
@/lua/ge/extensions/gameplay/rally/notebook/path.lua
  self.name = data.name or ""
  self.description = string.gsub(data.description or "", "\\n", "\n")
  self.authors = data.authors or ""
@/lua/ge/extensions/editor/api/dynamicDecals.lua
    end
    return (s:gsub("[A-Z]", split):gsub("^.", string.upper))
  end
    end
    return (s:gsub("[A-Z]", split):gsub("^.", string.upper))
  end
    if layerTypeString == "" then
      name = name:gsub("{[^}]*@type[^{]*}", layerTypeString, 1)
    else
      local newString = groupA .. layerTypeString .. groupC
      name = name:gsub("{[^}]*@type[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@type', layerTypeString)
    if colorMapTextureString == "" then
      name = name:gsub("{[^}]*@colormap[^{]*}", colorMapTextureString, 1)
    else
      local newString = groupA .. colorMapTextureString .. groupC
      name = name:gsub("{[^}]*@colormap[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@colormap', colorMapTextureString)
    if normalMapTextureString == "" then
      name = name:gsub("{[^}]*@normalmap[^{]*}", normalMapTextureString, 1)
    else
      local newString = groupA .. normalMapTextureString .. groupC
      name = name:gsub("{[^}]*@normalmap[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@normalmap', normalMapTextureString)
    if metallicMapTextureString == "" then
      name = name:gsub("{[^}]*@metallicmap[^{]*}", metallicMapTextureString, 1)
    else
      local newString = groupA .. metallicMapTextureString .. groupC
      name = name:gsub("{[^}]*@metallicmap[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@metallicmap', metallicMapTextureString)
    if roughnessMapTextureString == "" then
      name = name:gsub("{[^}]*@roughnessmap[^{]*}", roughnessMapTextureString, 1)
    else
      local newString = groupA .. roughnessMapTextureString .. groupC
      name = name:gsub("{[^}]*@roughnessmap[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@roughnessmap', roughnessMapTextureString)
    if alphaMapTextureString == "" then
      name = name:gsub("{[^}]*@alphamap[^{]*}", alphaMapTextureString, 1)
    else
      local newString = groupA .. alphaMapTextureString .. groupC
      name = name:gsub("{[^}]*@alphamap[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@alphamap', alphaMapTextureString)
    if layer.uid == "" then
      name = name:gsub("{[^}]*@uid[^{]*}", layer.uid, 1)
    else
      local newString = groupA .. layer.uid .. groupC
      name = name:gsub("{[^}]*@uid[^{]*}", newString, 1)
    end
  end
  name = name:gsub('@uid', layerData.uid)
@/lua/vehicle/extensions/telemetryLogger.lua
  if string.find(s, '[,"]') then
    s = '"' .. string.gsub(s, '"', '""') .. '"'
  end
@/lua/ge/extensions/editor/tech/roadArchitect/import.lua
  local arg = {}
  string.gsub(s, "([%-%w]+)=([\"'])(.-)%2", function (w, _, a) arg[w] = a end)
  return arg
@/lua/ge/extensions/campaign/campaignsLoader.lua
  local campaign = jsonReadFile(campaignfile)
  campaign.sourceFile =  string.gsub(campaignfile, "(.*:)(.*)", "%2")
  campaign.sourcePath = string.gsub(campaignfile, "(.*)/(.*)", "%1")
  campaign.sourceFile =  string.gsub(campaignfile, "(.*:)(.*)", "%2")
  campaign.sourcePath = string.gsub(campaignfile, "(.*)/(.*)", "%1")
  campaign.official = isOfficialContentVPath(campaign.sourcePath)
@/lua/ge/extensions/core/vehicles.lua
        local tmpfn = function() return fn[random(1, #fn)]  end --return one random for each use instead of same
        strtmp = string.gsub(strtmp, "%%"..k, tmpfn)
      else
      else
        strtmp = string.gsub(strtmp, "%%"..k, fn)
      end
    end
    strtmp = string.gsub(strtmp, "%%%%", "%%")
    return strtmp

    -- return string.gsub(designData.gen.pattern, "%%([^%%])", designData.gen.patternData)
  end
    txt = OnlineServiceProvider.playerName
    txt = txt:gsub('"', "'") -- replace " with '
    -- more cleaning up required?
@/lua/ge/extensions/core/multiseat.lua
  end
  if logEnabled and players > 1 then log((players>1) and "I" or "D", "", "Assigned players: "..dumps(result):gsub("\n", ""):gsub("  ", " ")) end
  end
  if logEnabled and players > 1 then log((players>1) and "I" or "D", "", "Assigned players: "..dumps(result):gsub("\n", ""):gsub("  ", " ")) end
@/lua/ge/extensions/core/quickAccess.lua
  -- Replace underscores with spaces
  local niceName = str:gsub("_", " ")
  -- Add space before each capital letter except the first one
  niceName = niceName:gsub("(%l)(%u)", "%1 %2")
  -- Capitalize the first letter of each word
  niceName = niceName:gsub("(%a)(%w*)", function(first, rest)
    return first:upper() .. rest:lower()
    -- remove the last level from path to get parent path
    local parentPath = path:gsub("/[^/]+/$", "/")
    local menuItems = menuTreeCopy[parentPath]
@/lua/ge/extensions/editor/gen/world.lua
	local jdata = jsonEncode(apart)
	jdata = jdata:gsub('},{', '}\r\n{')
	lo('?? for_file:'..fname) --..':'..tostring(#data)..':'..#v..':'..jdata)
	local jdata = jsonEncode(list)
	jdata = jdata:gsub('},{', '}\r\n{')
	outputFile:write(string.sub(jdata, 2, #jdata-1))
			local jdata = jsonEncode(jlist)
			jdata = jdata:gsub('},{', '}\r\n{')
			local outputFile = io.open(dname..fname, "w")
@/lua/ge/extensions/editor/flowgraphEditor.lua
  local time = os.time(os.date("!*t"))
  jsonWriteFile(autoSaveDir .. time.."_"..mgr.name:gsub('%W','_')..".flow.json", data, true, 20)
  log("I","autosave","Autosaved flowgraph under " .. autoSaveDir .. time.."_"..mgr.name..".flow.json")
    --TODO(AK) 20/06/2019: Is there a better way of extracting this filename without messing with LUA string parsing
    mgr.name = string.gsub(mgr.savedFilename, "(.*)%.flow.json", "%1")
  end
@/lua/common/libs/xlsxlib/tests/TestManager.lua
      local func = tests[name]
      local displayName = string.format("%-60s", name:gsub('_shouldFail$', ''))
@/lua/ge/extensions/gameplay/race/path.lua
  self.name = data.name or ""
  self.description = string.gsub(data.description or "", "\\n", "\n")
  self.authors = data.authors or "Anonymous"
@/lua/ge/extensions/editor/assetBrowser.lua

  local rootPath = string.gsub(root.path, "//", "/")
  local filepath = string.match(string.lower(path), string.lower(rootPath) .."(.+)")
@/lua/ge/extensions/ui/bindingsLegend.lua
local function getModifiersFromControl(control)
  local normalizedControl = string.gsub(control, "%-", " ")
  local controlParts = string.split(normalizedControl)
@/lua/ge/extensions/gameplay/rally/util.lua
  -- Replace everything but letters and numbers with '_'
  name = string.gsub(name, "[^a-zA-Z0-9]", "_")
  -- Replace multiple consecutive '_' with a single '_'
  name = string.gsub(name, "(_+)", "_")
  if not txt then return txt end
  local trimmed = string.gsub(txt, "^%s*(.-)%s*$", "%1")
  return trimmed
  -- Escape special characters in Lua patterns except '*'
  searchPattern = searchPattern:gsub("([%^%$%(%)%%%.%[%]%+%-%?])", "%%%1")
  -- Replace '*' with Lua's '.*' to act as a wildcard
  -- Replace '*' with Lua's '.*' to act as a wildcard
  searchPattern = searchPattern:gsub("%*", ".*")
@/lua/ge/extensions/editor/resourceChecker.lua
  if res and not FS:fileExists(res) and string.endswith(res, ".png" ) then
    res = string.gsub(res, ".png", ".dds")
  end
      jsonWriteFile(path, data, true)
      local addText = "//"..text:gsub('\n','').."\n"
      local f = io.open(path, "r")
@/lua/common/particles.lua
                    -- expression
                    s = v[kc]:gsub("X", "arg."..kc)
                end
@/lua/vehicle/extensions/profiling/p.lua
    key_stack = profile.dumpstack(th, prof_fmt, prof_depth)
    key_stack = key_stack:gsub("%[builtin#(%d+)%]", function(x)
        return vmdef.ffnames[tonumber(x)]
  local interval = ""
  mode = mode:gsub("i%d*", function(s) interval = s; return "" end)
  prof_min = 3
  prof_min = 3
  mode = mode:gsub("m(%d+)", function(s) prof_min = tonumber(s); return "" end)
  prof_depth = 1
  prof_depth = 1
  mode = mode:gsub("%-?%d+", function(s) prof_depth = tonumber(s); return "" end)
  local m = {}
@/lua/ge/extensions/editor/gen/exp_meshexplorer.lua
            local function dec(data)
                data = string.gsub(data, '[^'..b..'=]', '')
                return (data:gsub('.', function(x)
                data = string.gsub(data, '[^'..b..'=]', '')
                return (data:gsub('.', function(x)
                    if (x == '=') then return '' end
                    return r;
                end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
                    if (#x ~= 8) then return '' end
@/lua/ge/extensions/editor/dynamicDecals/camera.lua
  for name, val in pairs(presets) do
    if im.Button(string.format("%s##%s_%s", name:gsub("^%l", string.upper), "Generate Materials", guiId), im.ImVec2(im.GetContentRegionAvailWidth(), 0)) then
      setCamera(vec3(val[1], val[2], val[3]))
@/lua/ge/extensions/editor/flowgraph/missionVariableHelper.lua
local function normalizePath(p)
  p = string.gsub(p, "\\", "/")
  p = string.gsub(p, "^/+", "")
  p = string.gsub(p, "\\", "/")
  p = string.gsub(p, "^/+", "")
  return string.lower(p)
@/lua/ge/extensions/core/cameraModes/driver.lua
    if type(vehConfigs) ~= "string" then vehConfigs = "{}" end
    vehConfigs = vehConfigs:gsub("'",'"') -- fix INI values that passed through javascript (e.g. when opening Options menu)
    vehConfigs = jsonDecode(vehConfigs) -- and then deserialize, so we can follow the user settings
    if type(vehConfigs) ~= "string" then vehConfigs = "{}" end
    vehConfigs = vehConfigs:gsub("'",'"') -- fix INI values that passed through javascript (e.g. when opening Options menu)
    vehConfigs = jsonDecode(vehConfigs) -- and then deserialize, so we can follow the user settings
@/lua/common/luaProfiler.lua
  while decimalSeparator do
    result, k = string.gsub(result, "^(-?%d+)(%d%d%d)", '%1,%2')
    if k == 0 then break end
@/lua/common/jbeam/sections/meshs.lua
  elseif type(v) == 'string' and string.len(v) > 7 and v:sub(1,1) == '#' then
    v = v:gsub("#","")
    return ColorF(tonumber("0x"..v:sub(1,2)) / 255, tonumber("0x"..v:sub(3,4)) / 255, tonumber("0x"..v:sub(5,6)) / 255, tonumber("0x"..v:sub(7,8)) / 255)
@/lua/ge/extensions/gameplay/drag/general.lua
    table.insert(row, {
      text = (tab[i][1]):gsub("%.+$", "")
    })
@/lua/ge/extensions/flowgraph/manager.lua
    name = self.name,
    description = string.gsub(self.description, "\n", "\\n"),
    authors = self.authors,
    self.name = data.name or self.name
    self.description = string.gsub(data.description or "", "\\n", "\n") or self.description
    self.authors = data.authors or self.authors
@/lua/ge/extensions/freeroam/freeroamConfigurator.lua
  -- Get relative path from configuratorOptions folder and convert to extension name format
  local relativePath = string.gsub(filePath, 'lua/ge/extensions/freeroam/configuratorOptions/', '')
  relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
  local relativePath = string.gsub(filePath, 'lua/ge/extensions/freeroam/configuratorOptions/', '')
  relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
  local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
  relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
  local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
  local generatorName = string.gsub(nameWithoutExt, '/', '_')
  local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
  local generatorName = string.gsub(nameWithoutExt, '/', '_')
@/lua/ge/extensions/gameplay/sites/sites.lua
  self.name = data.name or ""
  self.description = string.gsub(data.description or "", "\\n", "\n")
  self.locations:clear()
@/lua/ge/extensions/editor/fileDialog.lua
  if currentPath:sub(-1) ~= "/" then currentPath = currentPath.."/" end
  currentPath = currentPath:gsub("/+", "/")   -- Reducing multiple slashes to avoid trimmed list names
  currentFolderStat = FS:stat(currentPath)
  if suffixType == 'string' then
    pattern = options.suffix[fileTypeSelected][2]:gsub("%.","%%.")
  elseif suffixType == 'table' then
    for k, ext in ipairs(options.suffix[fileTypeSelected][2]) do
      local p ,_ = ext:gsub("%.","%%.")
      table.insert(pattern, p)
    s.name = string.sub(fn, pathLen)
    s.name = string.gsub(s.name, "/(.*)", "%1") -- strip leading /
    validName = true
@/lua/ge/extensions/career/modules/logbook.lua
M.logbookEntry = function(id)
  M.genericInfoUnlocked("ui.introPopup."..id..".title", readFile("/ui/modules/careerLogbook/pages/"..id.."/content.html"):gsub("\r\n",""), "/ui/modules/careerLogbook/pages/"..id.."/header.jpg")
end
@/lua/common/libs/inspect/inspect.lua
  end
  return '"' .. str:gsub('"', '\\"') .. '"'
end
local function escape(str)
  return (str:gsub("\\", "\\\\")
             :gsub("(%c)%f[0-9]", longControlCharEscapes)
  return (str:gsub("\\", "\\\\")
             :gsub("(%c)%f[0-9]", longControlCharEscapes)
             :gsub("%c", shortControlCharEscapes))
             :gsub("(%c)%f[0-9]", longControlCharEscapes)
             :gsub("%c", shortControlCharEscapes))
end
@/lua/ge/extensions/core/settings/settings.lua
  if data.userColorPresets then
    data.userColorPresets = data.userColorPresets:gsub("'", '"') -- replace ' with "
    local ok, userColorPresets = pcall(json.decode, data.userColorPresets)
@/lua/ge/extensions/editor/particleEditor.lua
local function cleanTabs(str)
  str = string.gsub(str, "\t+", "\t")
  str = string.gsub(str, "\t$", "")
  str = string.gsub(str, "\t+", "\t")
  str = string.gsub(str, "\t$", "")
  return string.gsub(str, "^\t", "")
  str = string.gsub(str, "\t$", "")
  return string.gsub(str, "^\t", "")
end
  local particles = emitter:getField("particles","")
  particles = string.gsub(particles, particle:getName(), "")
  particles = cleanTabs(particles)
@/lua/ge/extensions/career/career.lua
      extensions.luaPathToExtName(modulePath)
      local extensionFile = string.gsub(files[i], "/lua/ge/extensions/", "")
      extensionFile = string.gsub(extensionFile, ".lua", "")
      local extensionFile = string.gsub(files[i], "/lua/ge/extensions/", "")
      extensionFile = string.gsub(extensionFile, ".lua", "")
      --if not string.find(extensionFile, "delivery") then
@/lua/ge/extensions/util/docCreator.lua
  log('I', '', 'Processing language: ' .. tostring(lang))
  local langFilename = lang:gsub('-', '_')
  changeLanguage(lang)
          name = string.sub(name, string.len(info.vendorName) + 1)
          name = name:gsub("^%s+", "") -- strip whitespaces
          name = name:gsub("^-+", "") -- remove '-' prefix, for exampe for "PXN-V12" name
          name = name:gsub("^%s+", "") -- strip whitespaces
          name = name:gsub("^-+", "") -- remove '-' prefix, for exampe for "PXN-V12" name
        end
@/lua/ge/extensions/util/compileImposters.lua
local function escapePattern(x)
  return (x:gsub('%%', '%%%%')
           :gsub('^%^', '%%^')
  return (x:gsub('%%', '%%%%')
           :gsub('^%^', '%%^')
           :gsub('%$$', '%%$')
           :gsub('^%^', '%%^')
           :gsub('%$$', '%%$')
           :gsub('%(', '%%(')
           :gsub('%$$', '%%$')
           :gsub('%(', '%%(')
           :gsub('%)', '%%)')
           :gsub('%(', '%%(')
           :gsub('%)', '%%)')
           :gsub('%.', '%%.')
           :gsub('%)', '%%)')
           :gsub('%.', '%%.')
           :gsub('%[', '%%[')
           :gsub('%.', '%%.')
           :gsub('%[', '%%[')
           :gsub('%]', '%%]')
           :gsub('%[', '%%[')
           :gsub('%]', '%%]')
           :gsub('%*', '%%*')
           :gsub('%]', '%%]')
           :gsub('%*', '%%*')
           :gsub('%+', '%%+')
           :gsub('%*', '%%*')
           :gsub('%+', '%%+')
           :gsub('%-', '%%-')
           :gsub('%+', '%%+')
           :gsub('%-', '%%-')
           :gsub('%?', '%%?'))
           :gsub('%-', '%%-')
           :gsub('%?', '%%?'))
end
@/lua/ge/extensions/editor/autoSave.lua
       path = folders[i],
       displayPath = string.gsub(folders[i], "/settings/editor/autosaves/", ""),
       datetime = os.date("%x %X", FS:stat(folders[i]).modtime)
@/lua/vehicle/extensions/dynoClient.lua
local function sendData(textureName, jsFunc, data, objId)
    local js = jsonEncode(data):gsub('%"', '%\\\'') -- replace " with \'
    local l = "getObjectByID("..objId.."):queueJSUITexture('"..textureName.."', '"..jsFunc.."(" .. js .. ");')"
@/lua/common/testFramework/TestManager.lua
      local func = tests[name]
      local displayName = string.format("%-60s", name:gsub('_shouldFail$', ''))
@/lua/ge/extensions/flowgraph/nodes/util/getLevelData.lua
  local dir, _, _ = path.split(levelPath)
  local devName = string.gsub(dir, "(.*/)(.*)/", "%2")
@/lua/common/utils/simpleHttpServer.lua
  -- pseudosecurity
  req.uri.path = req.uri.path:gsub("\\.\\.", '') -- replace any '..' with ''
  req.uri.path = req.uri.path:gsub("//", '/') -- replace any '//' with '/'
  req.uri.path = req.uri.path:gsub("\\.\\.", '') -- replace any '..' with ''
  req.uri.path = req.uri.path:gsub("//", '/') -- replace any '//' with '/'
@/lua/common/devUtils.lua

  local parent = tostring(t):gsub('[^a-zA-Z0-9]', '')
  local res = ''
    local newPath = path .. '_' .. tostring(v)
    newPath = newPath:gsub('[^a-zA-Z0-9]', '_')
    res = res .. path .. ' -> ' .. newPath .. ';\n'
@/lua/ge/extensions/core/input/actions.lua
local function _replaceCmd(cmd, actionValue, vehicleId)
  cmd = cmd:gsub("VALUE", tostring(actionValue))
  cmd = cmd:gsub("VEHICLEID", tostring(vehicleId))
  cmd = cmd:gsub("VALUE", tostring(actionValue))
  cmd = cmd:gsub("VEHICLEID", tostring(vehicleId))
  -- TODO: improve hardcoded filter, etc
  -- TODO: improve hardcoded filter, etc
  cmd = cmd:gsub("FILTERTYPE", '-1')
  cmd = cmd:gsub("PLAYER", '0')
  cmd = cmd:gsub("FILTERTYPE", '-1')
  cmd = cmd:gsub("PLAYER", '0')
  cmd = cmd:gsub("ANGLE", '900')
  cmd = cmd:gsub("PLAYER", '0')
  cmd = cmd:gsub("ANGLE", '900')
  cmd = cmd:gsub("LOCKTYPE", '0')
  cmd = cmd:gsub("ANGLE", '900')
  cmd = cmd:gsub("LOCKTYPE", '0')
  return cmd
@/lua/ge/extensions/flowgraph/nodes/vehicle/special/vehicleAction.lua
function C:formatCommand(cmd)
  local c = cmd:gsub("VALUE",tostring(self.pinIn.val.value or 0))
  c = c:gsub("FILTERTYPE",tostring(self.pinIn.inputFilter.value or 0))
  local c = cmd:gsub("VALUE",tostring(self.pinIn.val.value or 0))
  c = c:gsub("FILTERTYPE",tostring(self.pinIn.inputFilter.value or 0))
  c = c:gsub("ANGLE",tostring(self.pinIn.angle.value or 0))
  c = c:gsub("FILTERTYPE",tostring(self.pinIn.inputFilter.value or 0))
  c = c:gsub("ANGLE",tostring(self.pinIn.angle.value or 0))
  return c
@/lua/ge/extensions/core/repository.lua
    --delete mods outside repo folder
    local modname = filename:gsub(".zip",""):lower()
    local prevInfo = core_modmanager.getModDB(modname)
      end
      data.data.message = data.data.message:gsub("\\\\", "\\"):gsub("\\/", "/")
    end
      end
      data.data.message = data.data.message:gsub("\\\\", "\\"):gsub("\\/", "/")
    end
    end
    request.responseData.data.message = string.gsub(request.responseData.data.message, "\n", "
") request.responseData.data.pending = idInUpdateQueue(mod_id)
  if data.reason == "subscription" then
    data.modname = data.filename:gsub(".zip","")
    data.update = true --we don't need to check it's new
      if(v:find(".zip") ~= nil) then
        mname = v:gsub(".zip", "")
      else
@/lua/common/libs/LuLPeg/lulpeg.lua
        end
    end]=]):gsub("XXXX", v), v.." compiler")(compile, expose, type, LL)
end
        end
    end]=]):gsub("XXXX", v), v.." compiler")(expose)
end
            return true, nsi, ci
        end]=]):gsub("__C0__", tostring(pt.aux)))(s_byte, ("").char)
end
            if not LL_ispattern(v) then
                error(("rule 'A' is not a pattern"):gsub("A", tostring(k)))
            end
            if #state.grammars == 0 then
                error(("rule 'XXXX' used outside a grammar"):gsub("XXXX", tostring(name)))
            elseif not state.grammars[#state.grammars][name] then
            elseif not state.grammars[#state.grammars][name] then
                error(("rule 'XXXX' undefined in given grammar"):gsub("XXXX", tostring(name)))
            end
        names[#names + 1] = m
        chunks[ #names  ] = choice_tpl:gsub("XXXX", m)
    end
        names[#names + 1] = m
        chunks[ #names  ] = sequence_tpl:gsub("XXXX", m)
    end
end
local function gsub (s, p, rep)
  local g = gmem[p] or {}   -- ensure gmem[p] is not collected while here
    ci, refs, n = div_str_cap_refs(caps, ci)
    vals[vi] = the_string:gsub("%%([%d%%])", function (d)
        if d == "%" then return "%" end
function escape( str )
    return str:gsub("%c", escape_index)
end
        end
    ]==]):gsub("XXXX", v), k.." printer")(k, map, t_concat, s_char, escape, set_repr)
end
        end
    ]]):gsub("XXXX", v), k.." printer")(map, LL_pprint, type, s, u, flatten)
end
@/lua/ge/extensions/gameplay/statistic.lua
  if dir ~= nil then
    return string.lower(string.gsub(dir, "/levels/(.*)/", "%1"))
  end
    activityType = "scenario"
    activityDetail = "/fg"..missionId:sub(levelFolder:len()+1):gsub("/","@")
  elseif scenario_scenarios and scenario_scenarios.getScenario() then
@/lua/ge/extensions/editor/shapeEditor.lua
  local path,filename,ext = path.split(meshFile)
  filename = filename:gsub(ext,"cs")
  local mcf = path .. filename
  local filenameNoExt = filename:match( "(.+)."..ext.."*$" )
  filename =  filename:gsub(ext,"cs")
  local mcf = path .. filename
@/lua/ge/extensions/core/replay.lua
  for i,file in ipairs(FS:findFiles('replays', '*.rpl', 1, false, false)) do
    file = string.gsub(file, "/(.*)", "%1") -- strip leading /
    table.insert(result, {filename=file, size=FS:fileSize(file)})
  guihooks.trigger("toastrMsg", {type=level, title="Replay "..level, msg=msg, context=context})
  log(string.gsub(level, "^(.).*", string.upper), "", "Replay msg: "..dumps(level, msg, context))
end
@/lua/common/libs/luasocket/socket/ftp.lua
    local ph = (port - pl)/256
    local arg = string.gsub(string.format("%s,%d,%d", ip, ph, pl), "%.", ",")
    self.try(self.tp:command("port", arg))
    local argument = sendt.argument or
        url.unescape(string.gsub(sendt.path or "", "^[/\\]", ""))
    if argument == "" then argument = nil end
    local argument = recvt.argument or
        url.unescape(string.gsub(recvt.path or "", "^[/\\]", ""))
    if argument == "" then argument = nil end
@/lua/common/libs/luasocket/socket/mbox.lua
    local message = {}
    message_s = string.gsub(message_s, "\r\n", "\n")
    string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end)
    message_s = string.gsub(message_s, "\r\n", "\n")
    string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end)
    string.gsub(message_s, "^.-\n\n(.*)", function (b) message.body = b end)
    string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end)
    string.gsub(message_s, "^.-\n\n(.*)", function (b) message.body = b end)
    if not message.body then
    if not message.body then
        string.gsub(message_s, "^\n(.*)", function (b) message.body = b end)
    end
    local headers = {}
    headers_s = string.gsub(headers_s, "\r\n", "\n")
    headers_s = string.gsub(headers_s, "\n[ ]+", " ")
    headers_s = string.gsub(headers_s, "\r\n", "\n")
    headers_s = string.gsub(headers_s, "\n[ ]+", " ")
    string.gsub("\n" .. headers_s, "\n([^\n]+)", function (h) table.insert(headers, h) end)
    headers_s = string.gsub(headers_s, "\n[ ]+", " ")
    string.gsub("\n" .. headers_s, "\n([^\n]+)", function (h) table.insert(headers, h) end)
    return headers
function _M.parse_header(header_s)
    header_s = string.gsub(header_s, "\n[ ]+", " ")
    header_s = string.gsub(header_s, "\n+", "")
    header_s = string.gsub(header_s, "\n[ ]+", " ")
    header_s = string.gsub(header_s, "\n+", "")
    local _, __, name, value = string.find(header_s, "([^%s:]-):%s*(.*)")
    if name == "" then name = address end
    name = string.gsub(name, '"', "")
    return name, address
    mbox = {}
    mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n"
    local nj, i, j = 1, 1, 1
@/lua/common/libs/lua-MessagePack/MessagePack.lua
local function hexadump(s)
  return (s:gsub('.', function (c) return format('%02X ', c:byte()) end))
end
@/lua/ge/extensions/core/input/bindings.lua
  if binding == nil then return dumps(binding) end
  return dumps(cleanBindingDefaults(deepcopy(binding))):gsub("\n", " "):gsub(" +", " ")
end
  if binding == nil then return dumps(binding) end
  return dumps(cleanBindingDefaults(deepcopy(binding))):gsub("\n", " "):gsub(" +", " ")
end
@/lua/common/utils.lua
  elseif type(v) == 'string' and string.len(v) > 7 and v:sub(1,1) == '#' then
    v = v:gsub("#","")
    return color(tonumber("0x"..v:sub(1,2)), tonumber("0x"..v:sub(3,4)), tonumber("0x"..v:sub(5,6)), tonumber("0x"..v:sub(7,8)))
function string.rstripchars(String, chrs)
  return String:gsub("["..chrs.."]$", '')
end
function string.stripchars(String, chrs)
  return String:gsub("["..chrs.."]", '')
end
function string.sentenceCase(str)
  local result = str:gsub("([A-Z])", " %1")
  return string.upper(result:sub(1, 1)) .. result:sub(2)
  local d = os.date('*t')
  res = res:gsub("{YYYY}", string.format('%04d', d.year))
  res = res:gsub("{YY}", string.format('%02d', d.year - 2000))
  res = res:gsub("{YYYY}", string.format('%04d', d.year))
  res = res:gsub("{YY}", string.format('%02d', d.year - 2000))
  res = res:gsub("{Y}", d.year)
  res = res:gsub("{YY}", string.format('%02d', d.year - 2000))
  res = res:gsub("{Y}", d.year)
  res = res:gsub("{MM}", string.format('%02d', d.month))
  res = res:gsub("{Y}", d.year)
  res = res:gsub("{MM}", string.format('%02d', d.month))
  res = res:gsub("{M}", d.month)
  res = res:gsub("{MM}", string.format('%02d', d.month))
  res = res:gsub("{M}", d.month)
  res = res:gsub("{DD}", string.format('%02d', d.day))
  res = res:gsub("{M}", d.month)
  res = res:gsub("{DD}", string.format('%02d', d.day))
  res = res:gsub("{D}", d.day)
  res = res:gsub("{DD}", string.format('%02d', d.day))
  res = res:gsub("{D}", d.day)
  res = res:gsub("{HH}", string.format('%02d', d.hour))
  res = res:gsub("{D}", d.day)
  res = res:gsub("{HH}", string.format('%02d', d.hour))
  res = res:gsub("{H}", d.hour)
  res = res:gsub("{HH}", string.format('%02d', d.hour))
  res = res:gsub("{H}", d.hour)
  res = res:gsub("{mm}", string.format('%02d', d.min))
  res = res:gsub("{H}", d.hour)
  res = res:gsub("{mm}", string.format('%02d', d.min))
  res = res:gsub("{m}", d.min)
  res = res:gsub("{mm}", string.format('%02d', d.min))
  res = res:gsub("{m}", d.min)
  res = res:gsub("{ss}", string.format('%02d', d.sec))
  res = res:gsub("{m}", d.min)
  res = res:gsub("{ss}", string.format('%02d', d.sec))
  res = res:gsub("{s}", d.sec)
  res = res:gsub("{ss}", string.format('%02d', d.sec))
  res = res:gsub("{s}", d.sec)
  return res
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
  local dir, filename, ext = path.split(filepath, compositeExtension)
  filename = filename:gsub('.'..ext, "")
  return dir, filename, ext
  if dir ~= nil then
    if raw then string.gsub(dir, "/levels/(.*)/", "%1") end
    return string.lower(string.gsub(dir, "/levels/(.*)/", "%1"))
    if raw then string.gsub(dir, "/levels/(.*)/", "%1") end
    return string.lower(string.gsub(dir, "/levels/(.*)/", "%1"))
  end
@/lua/ge/extensions/gameplay/rally/tools/devTools.lua
  --       im.TableNextColumn()
  --       im.Text(event:gsub("%%", "%%%%"))
  --     end
@/lua/common/libs/luasocket/socket/url.lua
function _M.escape(s)
    return (string.gsub(s, "([^A-Za-z0-9_])", function(c)
        return string.format("%%%02x", string.byte(c))
local function protect_segment(s)
    return string.gsub(s, "([^A-Za-z0-9_])", function (c)
        if segment_set[c] then return c
function _M.unescape(s)
    return (string.gsub(s, "%%(%x%x)", function(hex)
        return string.char(base.tonumber(hex, 16))
    if string.sub(relative_path, 1, 1) == "/" then return relative_path end
    local path = string.gsub(base_path, "[^/]*$", "")
    path = path .. relative_path
    path = path .. relative_path
    path = string.gsub(path, "([^/]*%./)", function (s)
        if s ~= "./" then return s else return "" end
    end)
    path = string.gsub(path, "/%.$", "/")
    local reduced
        reduced = path
        path = string.gsub(reduced, "([^/]*/%.%./)", function (s)
            if s ~= "../../" then return "" else return s end
    end
    path = string.gsub(reduced, "([^/]*/%.%.)$", function (s)
        if s ~= "../.." then return "" else return s end
    -- remove whitespace
    -- url = string.gsub(url, "%s", "")
    -- get fragment
    -- get fragment
    url = string.gsub(url, "#(.*)$", function(f)
        parsed.fragment = f
    -- get scheme
    url = string.gsub(url, "^([%w][%w%+%-%.]*)%:",
        function(s) parsed.scheme = s; return "" end)
    -- get authority
    url = string.gsub(url, "^//([^/]*)", function(n)
        parsed.authority = n
    -- get query string
    url = string.gsub(url, "%?(.*)", function(q)
        parsed.query = q
    -- get params
    url = string.gsub(url, "%;(.*)", function(p)
        parsed.params = p
    if not authority then return parsed end
    authority = string.gsub(authority,"^([^@]*)@",
        function(u) parsed.userinfo = u; return "" end)
        function(u) parsed.userinfo = u; return "" end)
    authority = string.gsub(authority, ":([^:%]]*)$",
        function(p) parsed.port = p; return "" end)
    if not userinfo then return parsed end
    userinfo = string.gsub(userinfo, ":([^:]*)$",
        function(p) parsed.password = p; return "" end)
    if parsed.fragment then url = url .. "#" .. parsed.fragment end
    -- url = string.gsub(url, "%s", "")
    return url
    path = path or ""
    --path = string.gsub(path, "%s", "")
    string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end)
    --path = string.gsub(path, "%s", "")
    string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end)
    for i = 1, #parsed do
@/lua/ge/extensions/editor/missionEditor.lua
      name = name:match("(.-) ") or name
      name = name:gsub('%W','') or name
  if string.find(s, '[,"]') then
    s = '"' .. string.gsub(s, '"', '""') .. '"'
  end
    translationJson[elem.key] = elem.value
    local _,n = elem.value:gsub("%S+","")
    wordCount = wordCount + n
@/lua/common/libs/resty/template.lua
local function trim(s)
    return gsub(gsub(s, "^%s+", ""), "%s+$", "")
end
local function trim(s)
    return gsub(gsub(s, "^%s+", ""), "%s+$", "")
end
    if type(s) == "string" then
        if c then return gsub(s, "[}{\">/<'&]", CODE_ENTITIES) end
        return gsub(s, "[\">/<'&]", HTML_ENTITIES)
        if c then return gsub(s, "[}{\">/<'&]", CODE_ENTITIES) end
        return gsub(s, "[\">/<'&]", HTML_ENTITIES)
    end
@/lua/common/libs/slaxml/slaxml.lua
  local entitySwap = function(orig,n,s) return entityMap[s] or n=="#" and utf8(tonumber('0'..s)) or orig end
  local function unescape(str) return gsub( str, '(&(#?)([%d%a]+);)', entitySwap ) end
      if options.stripWhitespace then
        text = gsub(text,'^%s+','')
        text = gsub(text,'%s+$','')
        text = gsub(text,'^%s+','')
        text = gsub(text,'%s+$','')
        if #text==0 then text=nil end
@/lua/ge/extensions/editor/bulkRename.lua
    -- replace %n or things like %4n with the counter
    newName = newName:gsub("%%(%d*)n", function(width)
      if width == "" then
    -- replace %o with the old name
    newName = newName:gsub("%%o", name)
@/lua/ge/extensions/telemetry/core.lua
    -- Get relative path from trackers folder and convert to extension name format
    local relativePath = string.gsub(filePath, 'lua/ge/extensions/telemetry/trackers/', '')
    relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
    local relativePath = string.gsub(filePath, 'lua/ge/extensions/telemetry/trackers/', '')
    relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
    local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
    relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
    local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
    local trackerName = string.gsub(nameWithoutExt, '/', '_')
    local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
    local trackerName = string.gsub(nameWithoutExt, '/', '_')
@/lua/ge/extensions/trackbuilder/trackBuilder.lua
        saveEnvironment = saveSettings.saveEnvironment[0],
        description     = string.gsub(ffi.string(saveSettings.description),"\n", "\\n"),
        difficulty      = 12 + 25*saveSettings.difficulty[0]
        if json then
          ffi.copy(saveSettings.description, string.gsub(json.description or "", "\\n", "\n"))
          saveSettings.saveOnMap[0] = json.level == getCurrentLevelIdentifier()--core_levels.getLevelName(getMissionFilename())
@/lua/ge/extensions/util/export.lua
      if veh then
        filepath = '/temp/ceftexture_' .. filepath:gsub('@', '') .. '.png'
        -- always overwrite, the file might have been a leftover from another vehicle
@/lua/ge/extensions/tech/techCore.lua
  for match, translationString in name:gmatch('(%{%{\'(.+)\' | translate%}%})') do
    result = result:gsub(match, translateLanguage(translationString, translationString, true))
  end
    if fgMgr ~= nil then
      local name = string.gsub(fgMgr.savedFilename, "(.*)%.flow.json", "%1")
      sourceFile = fgMgr.savedDir .. name .. '.json'
@/lua/ge/extensions/editor/assemblySpline.lua
              if enabledCount >= 2 then
                im.TextColored(cols.greenB, baseMesh.fileName:gsub("%.dae$", ""))
                local isRoot = baseMesh.fileName and baseMesh.fileName:lower():find("root")
                -- Show the mesh file name.
                local headerText = baseMesh.fileName:gsub("%.dae$", "")
                im.TextColored(cols.greenB, headerText)
@/lua/ge/extensions/editor/assetManagementTool.lua
local assetsOnlyFilter = table.concat(assetFileTypesTbl, "\t")
assetsOnlyFilter = assetsOnlyFilter:gsub(assetsOnlyStr .. "\t%*%.%*\t", "")
assetsOnlyFilter = assetsOnlyFilter:gsub(",", "\t")
assetsOnlyFilter = assetsOnlyFilter:gsub(assetsOnlyStr .. "\t%*%.%*\t", "")
assetsOnlyFilter = assetsOnlyFilter:gsub(",", "\t")
local function changeBasePath(path, newBasePath)
  return sanitizePath(path:gsub("(.*/)(.*)", newBasePath .. "/%2"), false)
end
  -- convert camelCase transitions (lowercase followed by uppercase) to lowercase with an underscore
  filename = filename:gsub("([a-z])([A-Z])", "%1_%2")
  filename = filename:lower()
  filename = filename:lower()
  filename = filename:gsub("[^a-z0-9_./]+", "_")

  if assetsOnlyStr == searchFileTypesFilterStr:gsub("\t", "") then
    filter = assetsOnlyFilter
    local idx = searchDuplicatesFileTypesIndexPtr[0] + 1
    searchFileTypesFilterStr = string.gsub(assetFileTypesTbl[idx], ",", "\t")
  end
    local idx = namingFileTypesIndexPtr[0] + 1
    namingFileTypesFilterStr = string.gsub(assetFileTypesTbl[idx], ",", "\t")
  end
@/lua/vehicle/beamstate.lua
  save.format = "v2"
  save.model = v.data.model --.vehicleDirectory:gsub("vehicles/", ""):gsub("/", "")
  save.parts = v.userPartConfig
  save.format = "v2"
  save.model = v.data.model --.vehicleDirectory:gsub("vehicles/", ""):gsub("/", "")
  save.parts = v.userPartConfig
@/lua/ge/extensions/flowgraph/nodes/debug/comment.lua
  res.commentTitle = self.commentTitle
  res.commentText = string.gsub(self.commentText, "\n", "\\n")
  res.simple = self.simple[0]
  self.commentTitle = nodeData.commentTitle or "Comment"
  self.commentText = string.gsub(nodeData.commentText or "", "\\n", "\n") or ""
  self.simple = im.BoolPtr(nodeData.simple or false)
@/lua/common/libs/lunajson/lunajson/decoder.lua
    fixedtonumber = function(s)
      return tonumber(gsub(s, '.', radixmark))
    end
      -- check the last for this purpose.
      str = gsub(str, '\\(.)([^\\]?[^\\]?[^\\]?[^\\]?[^\\]?)', f_str_subst)
      if f_str_surrogate_prev ~= 0 then
@/lua/ge/extensions/gameplay/discover.lua
  end
  local content = readFile(file):gsub("\r\n","")
  local entry = {
@/lua/common/jit/p.lua
    key_stack = profile.dumpstack(th, prof_fmt, prof_depth)
    key_stack = key_stack:gsub("%[builtin#(%d+)%]", function(x)
      return vmdef.ffnames[tonumber(x)]
  local interval = ""
  mode = mode:gsub("i%d*", function(s) interval = s; return "" end)
  prof_min = 3
  prof_min = 3
  mode = mode:gsub("m(%d+)", function(s) prof_min = tonumber(s); return "" end)
  prof_depth = 1
  prof_depth = 1
  mode = mode:gsub("%-?%d+", function(s) prof_depth = tonumber(s); return "" end)
  local m = {}
@/lua/ge/extensions/util/dependencyTree.lua
    local dir, filename, ext = path.split(fn)
    fileList[k] = fn:gsub('.' .. ext, '')
  end
@/lua/ge/extensions/tech/capturePlayer.lua
    if outputPrefix == true then -- automatic name generation if name not provided (but we want to record)
      outputPrefix = inputFilename:gsub("%.log$", "") .. '_response'
    end
    end
    outputPrefix = outputPrefix:gsub("%.log$", "") -- if user included the extension, remove it
    responsesFile = outputPrefix
@/lua/common/libs/slaxml/slaxdom.lua
            -- documents may only have text node children that are whitespace: https://www.w3.org/TR/xml/#NT-Misc
            if current.type=='document' and not value:find('^%s+$') then error(("Document has non-whitespace text at root: '%s'"):format(value:gsub('[\r\n\t]',{['\r']='\\r', ['\n']='\\n', ['\t']='\\t'}))) end
            push(current.kids,{type='text',name='#text',cdata=cdata and true or nil,value=value,parent=rich and current or nil})
local escmap = {["<"]="<", [">"]=">", ["&"]="&", ['"']=""", ["'"]="'"}
local function esc(s) return s:gsub('[<>&"]', escmap) end
@/lua/ge/extensions/core/modmanager.lua
  local modname = string.lower(path)
  modname = modname:gsub('dir:/', '') --should have been killed by now
  modname = modname:gsub('/mods/', '')
  modname = modname:gsub('dir:/', '') --should have been killed by now
  modname = modname:gsub('/mods/', '')
  modname = modname:gsub('repo/', '')
  modname = modname:gsub('/mods/', '')
  modname = modname:gsub('repo/', '')
  modname = modname:gsub('unpacked/', '')
  modname = modname:gsub('repo/', '')
  modname = modname:gsub('unpacked/', '')
  modname = modname:gsub('/', '')
  modname = modname:gsub('unpacked/', '')
  modname = modname:gsub('/', '')
  modname = modname:gsub('.zip$', '')
  modname = modname:gsub('/', '')
  modname = modname:gsub('.zip$', '')
  --log('I', 'getModNameFromPath', "getModNameFromPath path = "..path .."    name = "..dumps(modname) )
  for k,v in pairs(mods[modname].modData.hashes) do
    v[1] = v[1]:gsub("\\/","/")
    if v[1] == filepath then
    for k,v in pairs(hashes) do
      v[1] = v[1]:gsub("\\/","/")
      if FS:fileExists(v[1]) then
    for k,v in pairs(mods[modname].modData.hashes) do
      v[1] = v[1]:gsub("\\/","/")
      if v[1]:match("vehicles/[%w]+") ~= nil and not vehiculesTest then
    if filename:find('/unpacked/') and filename:endswith('/') then
      mods[modname].orgZipFilename = filename:gsub('unpacked/', '')
      mods[modname].orgZipFilename = mods[modname].orgZipFilename:gsub('.zip/', '/') -- old format
      mods[modname].orgZipFilename = filename:gsub('unpacked/', '')
      mods[modname].orgZipFilename = mods[modname].orgZipFilename:gsub('.zip/', '/') -- old format
      mods[modname].orgZipFilename = mods[modname].orgZipFilename:gsub('/$', '')
      mods[modname].orgZipFilename = mods[modname].orgZipFilename:gsub('.zip/', '/') -- old format
      mods[modname].orgZipFilename = mods[modname].orgZipFilename:gsub('/$', '')
      mods[modname].orgZipFilename = mods[modname].orgZipFilename..'.zip'
    if filename:find('/unpacked/') and filename:endswith('/') then
      d.orgZipFilename = filename:gsub('unpacked/', '')
      d.orgZipFilename = d.orgZipFilename:gsub('.zip/', '/') -- old format
      d.orgZipFilename = filename:gsub('unpacked/', '')
      d.orgZipFilename = d.orgZipFilename:gsub('.zip/', '/') -- old format
      d.orgZipFilename = d.orgZipFilename:gsub('/$', '')
      d.orgZipFilename = d.orgZipFilename:gsub('.zip/', '/') -- old format
      d.orgZipFilename = d.orgZipFilename:gsub('/$', '')
      d.orgZipFilename = d.orgZipFilename..'.zip'
  if M.modIsUnpacked(modname) and filename:find('/unpacked/') and mods[modname].orgZipFilename:startswith('/mods') and not mods[modname].orgZipFilename:startswith('/mods/') then
    mods[modname].orgZipFilename = mods[modname].orgZipFilename:gsub('/mods', '/mods/')
  end
          for _,va in pairs(mods[modname].modData.attachments) do
            table.insert(mods[modname].modData.imgs, mods[modname].modInfoPath .. va.thumb_filename:gsub("\\", "/") )
            --table.insert(d.modData.imgs, d.modInfoPath .. "/images/" .. va.data_filename:gsub("\\", "/") )
            table.insert(mods[modname].modData.imgs, mods[modname].modInfoPath .. va.thumb_filename:gsub("\\", "/") )
            --table.insert(d.modData.imgs, d.modInfoPath .. "/images/" .. va.data_filename:gsub("\\", "/") )
          end
    for i,e in ipairs(modFiles) do
      local tmp = e:gsub(filename, "")
      if tmp:sub(1,1) ~= "/" then tmp = "/"..tmp end
local function _cleanPathFromHash(p)
  return p:gsub("\\","")
end
    for i,e in ipairs(modFiles) do
      local tmp = e:gsub(mods[modname].unpackedPath, "")
      if tmp:sub(1,1) ~= "/" then tmp = "/"..tmp end
  end
  local modpath, modname, modext = path.splitWithoutExt( dirPath:gsub('/$', '')..'.zip' )
  if not mods[modname] then
          end
          guihooks.trigger('checkUpdateCheckedMod', "SYNC "..tostring(core_modmanager.getModNameFromID(v.id) or v.filename:gsub(".zip","")) )
          job.yield()
    local modPath = realPath:sub(string.len(userPath))
    modPath = modPath:gsub("\\", "/")
    local zipPos = modPath:find('.zip')
@/lua/ge/extensions/ui/gameplaySelector/tiles.lua
  -- Get relative path from tileGenerators folder and convert to extension name format
  local relativePath = string.gsub(filePath, 'lua/ge/extensions/ui/gameplaySelector/tileGenerators/', '')
  relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
  local relativePath = string.gsub(filePath, 'lua/ge/extensions/ui/gameplaySelector/tileGenerators/', '')
  relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
  local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
  relativePath = string.gsub(relativePath, '^/', '') -- remove leading slash
  local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
  local generatorName = string.gsub(nameWithoutExt, '/', '_')
  local nameWithoutExt = string.gsub(relativePath, '%.lua$', '')
  local generatorName = string.gsub(nameWithoutExt, '/', '_')
@/lua/ge/extensions/editor/flowgraph/main.lua
                  local nodeData = readFile('/lua/ge/extensions/flowgraph/newNodeTemplate.lua')
                  nodeData = nodeData:gsub("New Node Template", data.filename:sub(1,-5)) -- change name
                  data.filepath = data.filepath:gsub(".lua","Node.lua") -- add Node for customNodes system
                  nodeData = nodeData:gsub("New Node Template", data.filename:sub(1,-5)) -- change name
                  data.filepath = data.filepath:gsub(".lua","Node.lua") -- add Node for customNodes system
                  writeFile(data.filepath, nodeData)
@/lua/ge/extensions/gameplay/rally/notebook/pacenote.lua
  if rallyUtil.useNote(before) then
    txt = string.gsub(txt, rallyUtil.var_db, before)
  else
  else
    txt = string.gsub(txt, rallyUtil.var_db, '')
  end
  if rallyUtil.useNote(after) then
    txt = string.gsub(txt, rallyUtil.var_da, after)
    txt = txt..punc
  else
    txt = string.gsub(txt, rallyUtil.var_da, '')
  end
    -- if rallyUtil.useNote(before) then
    --   txt = string.gsub(txt, rallyUtil.var_db, before)
    -- else
    -- else
    --   txt = string.gsub(txt, rallyUtil.var_db, '')
    -- end
    -- if rallyUtil.useNote(after) then
    --   txt = string.gsub(txt, rallyUtil.var_da, after)
    -- else
    -- else
    --   txt = string.gsub(txt, rallyUtil.var_da, '')
    -- end
      preview = dumps(struc)
      preview = string.gsub(preview, "\n", " ")
    end
  if varEscapedFreeform == generatedFreeform then
    generatedFreeform = string.gsub(generatedFreeform, rallyUtil.var_db, '')
    generatedFreeform = string.gsub(generatedFreeform, rallyUtil.var_da, '')
    generatedFreeform = string.gsub(generatedFreeform, rallyUtil.var_db, '')
    generatedFreeform = string.gsub(generatedFreeform, rallyUtil.var_da, '')
    generatedFreeform = rallyUtil.trimString(generatedFreeform)
@/lua/ge/extensions/gameplay/rally/notebook/structured/visualCompositor.lua
  for i,vp in ipairs(visualPacenotes) do
    vp.id = string.format("%s_%d", string.gsub(pacenote.name, ' ', '_'), i)
    vp.pnId = pacenote.id
@/lua/ge/ge_utils.lua
local function prefabFilenameToTemplateName(filename)
  local templateName = filename:gsub('_', '__'):gsub('/', '_')
  log('E','prefabFilenameToTemplateName',filename..' ==> '..templateName)
local function prefabFilenameToTemplateName(filename)
  local templateName = filename:gsub('_', '__'):gsub('/', '_')
  log('E','prefabFilenameToTemplateName',filename..' ==> '..templateName)
  assert(type(str) == "string", "utils.escape: Argument 'str' is not a string.")
  local escaped = str:gsub('[%-%.%+%[%]%(%)%^%%%?%*%^%$]','%%%1')
  return escaped
local function advancedModuleLoader(modulename)
  local modulepath = string.gsub(modulename, "%.", "/")
  for path in string.gmatch(package.path, "([^;]+)") do
  for path in string.gmatch(package.path, "([^;]+)") do
    local filename = string.gsub(path, "%?", modulepath)
    filename = filename:gsub('//', '/') -- prevent having double slashes in the lookup path
    local filename = string.gsub(path, "%?", modulepath)
    filename = filename:gsub('//', '/') -- prevent having double slashes in the lookup path
    local file = io.open(filename, "rb")
      if string.find(filename, '/extensions/') then
        local modulenameVirt = string.gsub(modulename, "/", '_')
        -- the trick to not screw with line numbers: everything needs to be in the same line. Otherwise the line numbers for the debuggers won't fit anymore
@/lua/common/libs/copas/copas/http.lua
            if err then return nil, err end
            local size = base.tonumber(string.gsub(line, ";.*", ""), 16)
            if not size then return nil, "invalid chunk size" end
    -- default headers
    local host = string.gsub(reqt.authority, "^.-@", "")
    local lower = {
    return headers.location and
           string.gsub(headers.location, "%s", "") ~= "" and
           (reqt.redirect ~= false) and
@/lua/common/libs/ezSVG/EzSVG.lua
  for k, v in pairs(tbl) do
    local nk = string.gsub(k, "_", "-")
    else
      key = string.gsub(key, "_", "-")
      tbl["__style"][key] = value
  elseif type(key) == "string" then
    key = string.gsub(key, "_", "-")
    setDefaultStyles(key, value, tag)
@/lua/ge/extensions/editor/main.lua
    if isFileAnEditorExtension(filename) then
      local name = string.gsub(filename, "(.*/)(.*)/(.*)%.lua", "%3")
      local extName = "editor_" .. name
@/lua/ge/extensions/flowgraph/nodes/types/string.lua
function C:_onSerialize(res)
  res.string = string.gsub(self.string, "\n", "\\n")
  res.multiLine = self.multiLine
function C:_onDeserialized(nodeData)
  self.string = nodeData.data.value or (string.gsub(nodeData.string or "", "\\n", "\n")) or "Hello World"
  self.data.value = nil
@/lua/ge/extensions/scenario/quickRaceLoader.lua
  for k,v in pairs(files) do
    files[k] = string.gsub(files[k], "(.*/)(.*)/(.*)", "%2")
  end
          lapConfig = {},
          description = trackData.description and string.gsub(trackData.description or "", "\\n", "\n") or nil,
          customData = {
@/lua/ge/extensions/gameplay/drift/general.lua
        if extensionData.loaded then
          im.Text(string.gsub(extensionName, "^gameplay_drift_", ""))
          im.TableNextColumn()
@/lua/common/jbeamWriter.lua
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
@/lua/ge/extensions/editor/flowgraph/nodelibrary.lua
    local d = node.node.description or " "
    d = string.gsub(d,"\n",' | ')
    table.insert(vals, '' .. d .. '')
@/lua/ge/extensions/career/modules/delivery/parcelManager.lua
      local precisionBreakdown = {
        label = "Precision Parking (" .. precisionBonus.precisionLevel:gsub("^%l", string.upper) .. ")",
        rewards = {},
@/lua/ge/extensions/core/commandhandler.lua
local unescape = function(url)
  return url:gsub("%%(%x%x)", hex_to_char)
end
@/lua/common/utils/languageMap.lua

  local kclean = string.lower(key):gsub('-', '_') -- replace - with _
@/lua/ge/extensions/util/inputSystemUtils.lua
local function padnum(d) return ("%012d"):format(d) end
local function naturalSortHelper(a, b) return tostring(a):gsub("%d+",padnum) < tostring(b):gsub("%d+", padnum) end
local function padnum(d) return ("%012d"):format(d) end
local function naturalSortHelper(a, b) return tostring(a):gsub("%d+",padnum) < tostring(b):gsub("%d+", padnum) end
@/lua/vehicle/extensions/tech/OBDEmulator.lua
local function serialPortDataReceived(data, bufferOverflown)
  data = data:gsub("%z", "")
  receiveBuffer = receiveBuffer .. data
@/lua/ge/extensions/editor/api/gui.lua
  end
  filename = filename:gsub("%s+", "")
  return filename
@/lua/common/jsonPrettyEncoderCustom.lua
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
    if c < 32 or c == 34 or c == 92 then
      return ( s:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\t", "\\t"):gsub('"','\\"'):gsub("\r", "\\r") ) -- gsub returns 2 values, parens are needed
    end
@/lua/ge/extensions/ui/apps.lua
  for _, originalFilePath in ipairs(FS:findFiles(originalLayoutPath, '*.uilayout.json', -1, false, false)) do
    local userFilePath = originalFilePath:gsub(originalLayoutPath, layoutPath)
    local replace = false
    -- find original layout for this file
    local originalFilePath = data.filename:gsub(layoutPath, originalLayoutPath)
    if FS:fileExists(originalFilePath) then
@/lua/ge/extensions/career/modules/linearTutorial.lua

  local content = readFile("/gameplay/tutorials/pages/"..id.."/content.html"):gsub("\r\n","")
  local entry = {
@/lua/ge/extensions/util/logStreams.lua
  -- huge hack and not happy about it, but it works! finally! \o/
  return readFile(logfileWikitable):gsub('\n', '\\n')
end
  -- huge hack and not happy about it, but it works! finally! \o/
  return readFile(logfileRst):gsub('\n', '\\n')
end
@/lua/ge/extensions/editor/multiSpawnManager.lua
        options.colorPickerData = nil
        options.colorPickerPaintKey = updateReason:gsub("Name", "")
        editor.openModalWindow(customPaintWindowName)
@/lua/ge/extensions/ui/gridSelectorUtils/translateHelper.lua
    -- Pattern 1: {{ 'foo' | translate}} or {{::'foo' | translate}} - quoted string with pipe syntax
    local newResult = result:gsub("{{%s*::%s*'([^'|}]+)'%s*|%s*translate%s*}}", function(key)
      changed = true
    end)
    newResult = newResult:gsub("{{%s*'([^'|}]+)'%s*|%s*translate%s*}}", function(key)
      changed = true
    -- Pattern 2: {{ foo | translate}} - unquoted translation with pipe syntax
    newResult = newResult:gsub("{{%s*([^%s|}]+)%s*|%s*translate%s*}}", function(key)
      changed = true
    -- Pattern 3: {{foo}} - simple variable substitution (context translations)
    newResult = newResult:gsub("{{%s*([a-zA-Z0-9_.]+)%s*}}", function(key)
      changed = true
@/lua/ge/extensions/scenario/quickRace.lua
      vehicleName = scenario.vehicle.file.Name,
      vehicleConfig = string.gsub(scenario.vehicle.config,"(.*/)(.*)/(.*).pc", "%3"),
      vehicleModel = scenario.vehicle.model
    vehicleName = scenario.vehicle.file.Name,
    vehicleConfig = string.gsub(scenario.vehicle.config,"(.*/)(.*)/(.*).pc", "%3"),
    vehicleModel = scenario.vehicle.model
@/lua/ge/extensions/editor/sidewalkSpline.lua
                local baseMeshName = piece.baseMesh and (piece.baseMesh.fileName or "Unknown") or "Unknown"
                im.TextColored(cols.greenB, baseMeshName:gsub("%.dae$", ""))
                im.SameLine()
@/lua/common/libs/xlsxlib/xlsxlib.lua
  -- Remove '$' for absolute references
  col = col:gsub("%$", "")
  row = row:gsub("%$", "")
  col = col:gsub("%$", "")
  row = row:gsub("%$", "")
@/lua/common/libs/luaqrcode/qrencode.lua
       ["4"]="100",["5"]="101", ["6"]="110",["7"]="111"}
  s=string.gsub(s,"(.)",function (d) return a[d] end)
  -- remove leading 0s
  -- remove leading 0s
  s = string.gsub(s,"^0*(.*)$","%1")
  local fmtstring = string.format("%%%ds",digits)
  local ret = string.format(fmtstring,s)
  return string.gsub(ret," ","0")
end
  local int
  string.gsub(str,"..?.?",function(a)
    int = tonumber(a)
  local b1, b2
  string.gsub(str,"..?",function(a)
    if #a == 2 then
  local ret = {}
  string.gsub(str,".",function(x)
    ret[#ret + 1] = binary(string.byte(x),8)
  local msg = {}
  local tab = string.gsub(data,"(........)",function(x)
    msg[#msg+1] = tonumber(x,2)
  x,y = size,size
  string.gsub(data,".?.?.?.?.?.?.?.?",function ( byte )
    byte_number = byte_number + 1
@/lua/ge/extensions/editor/assetDeduplicator.lua
              local fileRealPath = FS:getFileRealPath(k)
              local modFilepath = fileRealPath:gsub(realPath, '')
              if FS:fileExists(modFilepath) then
        if isOfficialContentVPath(filename) then
          local levelArt = string.gsub(filename, "info.json", "art/")
          stockLevels[levelArt] = true
        if not isOfficialContentVPath(filename) then
          local levelArt = string.gsub(filename, "info.json", "art/")
          modLevels[levelArt] = true
@/lua/ge/extensions/editor/api/preferencesRegistry.lua
    -- remove comma
    itemVal = itemVal:gsub(",", "")
  end
@/lua/ge/extensions/editor/visualization.lua
    -- Filter validator
    local filterQuery = string.gsub(ffi.string(im.TextFilter_GetInputBuf(vizFilter)), "[^%w_]+", " ")   -- sanitize
    filterQuery = string.gsub(filterQuery, "^%s*(.-)%s*$", "%1")  -- trim edges
    local filterQuery = string.gsub(ffi.string(im.TextFilter_GetInputBuf(vizFilter)), "[^%w_]+", " ")   -- sanitize
    filterQuery = string.gsub(filterQuery, "^%s*(.-)%s*$", "%1")  -- trim edges
    local filterTokens = {}
@/lua/common/extensions/ui/improfiler.lua
    key_stack = profile.dumpstack(th, prof_fmt, prof_depth)
    key_stack = key_stack:gsub("%[builtin#(%d+)%]", function(x)
      return vmdef.ffnames[tonumber(x)]
  local interval = ""
  mode = mode:gsub("i%d*", function(s) interval = s; return "" end)
  prof_min = 3
  prof_min = 3
  mode = mode:gsub("m(%d+)", function(s) prof_min = tonumber(s); return "" end)
  prof_depth = 10
  prof_depth = 10
  mode = mode:gsub("%-?%d+", function(s) prof_depth = tonumber(s); return "" end)
  local m = {}
@/lua/common/extensions/ui/imguiUtils.lua
function M.addRecursiveTreeTable(data, fullpath, noColumns, highlightCallback, itemCallback)
  local _, level = string.gsub(fullpath, "%/", "")
  if type(data) == 'table' then
@/lua/ge/server/server.lua
  TorqueScriptLua.setVar("$missionRunning", "false")
  setMissionFilename(levelPath:gsub("//", "/"))
@/lua/ge/extensions/util/richPresence.lua
    if extensions.core_gamestate.state.state then
      msg = msg.. " " ..tostring((core_gamestate.state.state:gsub("^%l", string.upper)) )
    end
  if currentLevel ~= "" then
    M.state.levelName = currentLevel:gsub("^%l", string.upper)
    M.state.levelName = M.state.levelName:gsub("_", " ")
    M.state.levelName = currentLevel:gsub("^%l", string.upper)
    M.state.levelName = M.state.levelName:gsub("_", " ")
    M.state.levelName = string.gsub(" "..M.state.levelName, "%W%l", string.upper):sub(2)
    M.state.levelName = M.state.levelName:gsub("_", " ")
    M.state.levelName = string.gsub(" "..M.state.levelName, "%W%l", string.upper):sub(2)
    msgFormat()
@/lua/common/csvlib.lua
      if c == nil or c <= 32 or c == delimnum or c == 34 then -- space sep "
        buf:put( sformat('"%s"', v:gsub('"', '""')) )
      else
          if c == delimnum or c == 34 or c == 13 or c == 10 then -- sep " CR LF
            buf:put( sformat('"%s"', v:gsub('"', '""')) ) -- gsub returns 2 values, parens are needed
            raw = false
      until (c == 34 and byte(s, i+1) ~= 34) or c == nil -- "
      val = sub(s, si+1, i - 1):gsub('""', '"')
      repeat i=i+1; c = byte(s,i) until c~=32 and c~=9 -- space tab
@/lua/common/libs/lua-luaepnf/epnf.lua
  else -- parse error at end of input
    local _,lno = string.gsub( s, "\n", "\n" )
    if string.sub( s, -1, -1 ) ~= "\n" then lno = lno + 1 end
  if #s < #str then s = s .. "..." end
  local name = "[\"" .. string.gsub( s, "\n", "\\n" ) .. "\"]"
  return epnf.parse( g, name, str, ... )
@/lua/ge/extensions/editor/trafficManager.lua
  for i, key in ipairs(vehiclesPropsSorted) do
    local label = string.lower(key:gsub("Sorted", ""))
    if im.CollapsingHeader1(label.."##trafficManagerHeader", im.TreeNodeFlags_DefaultOpen) then
  if string.endswith(filePath, ".prefab.json") then -- tries to load the actual data file instead of the prefab
    filePath = filePath:gsub(".prefab.json", ".json")
  end
  if string.endswith(filePath, ".prefab.json") then -- tries to save the actual data file instead of the prefab
    filePath = filePath:gsub(".prefab.json", ".json")
  end
@/lua/ge/extensions/gameplay/missions/missionTypes/flowMission.lua
  for _, file in ipairs(rulesFiles) do
    local content = readFile(file):gsub("\r\n","")
    table.insert(pages, content)
@/lua/ge/extensions/editor/resourceChecker/resourceUtil.lua
    elseif key and value and titleS then
      key = key:gsub(' ', "")
      value = value:sub(2, -2)
                  if dir then
                    local root = string.lower(convertdata):gsub('/levels/','levels/'):gsub('/vehicles/','vehicles/')
                    if not string.lower(dir):find(root) then
                  if dir then
                    local root = string.lower(convertdata):gsub('/levels/','levels/'):gsub('/vehicles/','vehicles/')
                    if not string.lower(dir):find(root) then
    local cacheSize = 0
    if FS:fileExists(k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize(k:gsub('.dae','.cdae'))
    if FS:fileExists(k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize(k:gsub('.dae','.cdae'))
      cacheSize = fsize2
      sizecache = sizecache + fsize2
    elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize('/temp/'..k:gsub('.dae','.cdae'))
    elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize('/temp/'..k:gsub('.dae','.cdae'))
      cacheSize = fsize2
    local cacheSize = 0
    if FS:fileExists(k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize(k:gsub('.dae','.cdae'))
    if FS:fileExists(k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize(k:gsub('.dae','.cdae'))
      cacheSize = fsize2
      sizecache = sizecache + fsize2
    elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize('/temp/'..k:gsub('.dae','.cdae'))
    elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then
      local fsize2 = safeFileSize('/temp/'..k:gsub('.dae','.cdae'))
      cacheSize = fsize2
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                shapeList[line] = true
            if file:find(".color.png") or file:find(".data.png") or file:find(".normal.png") then
              if FS:fileExists(file:gsub('.png', '.dds')) then
                file = file:gsub('.png', '.dds')
              if FS:fileExists(file:gsub('.png', '.dds')) then
                file = file:gsub('.png', '.dds')
              elseif FS:fileExists('/temp/'..file:gsub('.png', '.dds')) then
                file = file:gsub('.png', '.dds')
              elseif FS:fileExists('/temp/'..file:gsub('.png', '.dds')) then
                file = '/temp/'..file:gsub('.png', '.dds')
              elseif FS:fileExists('/temp/'..file:gsub('.png', '.dds')) then
                file = '/temp/'..file:gsub('.png', '.dds')
              end
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                models[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                models[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                models[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                models[line] = true
              if line:match('shapeName') then
                line = line:gsub('shapeName', ''):gsub('"', ""):gsub(' ', ""):gsub(';', ""):gsub('=', "")
                models[line] = true
        local dir, basefilename = path.splitWithoutExt(v)
        forestInternals[basefilename:gsub('.forest4', '')] = true
      end
        if filename then
          local txt = string.lower(filename:gsub('.'..ext, ''))
          if not txt:match '^/' then
      local dir, filename, ext = path.split(v)
      local txt = string.lower(filename:gsub('.'..ext, ''))
      if not texTemp[txt] then
        for k,_ in pairs(selected) do
          local entry = k:gsub(' ','')
          entry = entry:gsub('in:',';')
          local entry = k:gsub(' ','')
          entry = entry:gsub('in:',';')
          local c = 0
          if string.match(v, "managedItemData.json") then
            file = v:gsub(' /levels/'..levelname..'/art/forest/managedItemData.json','')
            removeFromForestJson(file, "/levels/"..levelname.."/art/forest/managedItemData.json")
          elseif string.match(v, "   Warning: This is an active forest item, but not used in the level") then
            file = v:gsub('   Warning: This is an active forest item, but not used in the level','')
            removeFromForestJson(file, "/levels/"..levelname.."/art/forest/managedItemData.json")
            local fileRealPath = FS:getFileRealPath(file)
            local modFilepath = fileRealPath:gsub(realPath, '')
            if FS:fileExists(modFilepath) then
            local fileRealPath = FS:getFileRealPath(v)
            local modFilepath = fileRealPath:gsub(realPath, '')
            if FS:fileExists(modFilepath) then
      if abort(job) then return end
      if v and not FS:fileExists(v:gsub('.dds', '.png')) then
        local dir, basefilename = path.splitWithoutExt(v)
      else
        log('I', 'PNG file already exists: ' .. tostring(v:gsub('.dds', '.png')))
      end
      local cache = nil
      if FS:fileExists(k:gsub('.dae','.cdae')) then cache = k:gsub('.dae','.cdae')
      elseif FS:fileExists(k:gsub('.dts','.cached.dts')) then cache = k:gsub('.dts','.cached.dts')
      local cache = nil
      if FS:fileExists(k:gsub('.dae','.cdae')) then cache = k:gsub('.dae','.cdae')
      elseif FS:fileExists(k:gsub('.dts','.cached.dts')) then cache = k:gsub('.dts','.cached.dts')
      if FS:fileExists(k:gsub('.dae','.cdae')) then cache = k:gsub('.dae','.cdae')
      elseif FS:fileExists(k:gsub('.dts','.cached.dts')) then cache = k:gsub('.dts','.cached.dts')
      elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then cache = '/temp/'..k:gsub('.dae','.cdae')
      if FS:fileExists(k:gsub('.dae','.cdae')) then cache = k:gsub('.dae','.cdae')
      elseif FS:fileExists(k:gsub('.dts','.cached.dts')) then cache = k:gsub('.dts','.cached.dts')
      elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then cache = '/temp/'..k:gsub('.dae','.cdae')
      elseif FS:fileExists(k:gsub('.dts','.cached.dts')) then cache = k:gsub('.dts','.cached.dts')
      elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then cache = '/temp/'..k:gsub('.dae','.cdae')
      elseif FS:fileExists('/temp/'..k:gsub('.dts','.cached.dts')) then cache = '/temp/'..k:gsub('.dts','.cached.dts')
      elseif FS:fileExists(k:gsub('.dts','.cached.dts')) then cache = k:gsub('.dts','.cached.dts')
      elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then cache = '/temp/'..k:gsub('.dae','.cdae')
      elseif FS:fileExists('/temp/'..k:gsub('.dts','.cached.dts')) then cache = '/temp/'..k:gsub('.dts','.cached.dts')
      elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then cache = '/temp/'..k:gsub('.dae','.cdae')
      elseif FS:fileExists('/temp/'..k:gsub('.dts','.cached.dts')) then cache = '/temp/'..k:gsub('.dts','.cached.dts')
      end
      elseif FS:fileExists('/temp/'..k:gsub('.dae','.cdae')) then cache = '/temp/'..k:gsub('.dae','.cdae')
      elseif FS:fileExists('/temp/'..k:gsub('.dts','.cached.dts')) then cache = '/temp/'..k:gsub('.dts','.cached.dts')
      end
            if f:find(".color.png") or f:find(".data.png") or f:find(".normal.png") then
              if FS:fileExists(f:gsub('.png','.dds')) then f = f:gsub('.png','.dds')
              elseif FS:fileExists('/temp/'..f:gsub('.png','.dds')) then f = '/temp/'..f:gsub('.png','.dds') end
            if f:find(".color.png") or f:find(".data.png") or f:find(".normal.png") then
              if FS:fileExists(f:gsub('.png','.dds')) then f = f:gsub('.png','.dds')
              elseif FS:fileExists('/temp/'..f:gsub('.png','.dds')) then f = '/temp/'..f:gsub('.png','.dds') end
              if FS:fileExists(f:gsub('.png','.dds')) then f = f:gsub('.png','.dds')
              elseif FS:fileExists('/temp/'..f:gsub('.png','.dds')) then f = '/temp/'..f:gsub('.png','.dds') end
            end
              if FS:fileExists(f:gsub('.png','.dds')) then f = f:gsub('.png','.dds')
              elseif FS:fileExists('/temp/'..f:gsub('.png','.dds')) then f = '/temp/'..f:gsub('.png','.dds') end
            end
@/lua/ge/extensions/flowgraph/graph.lua
  self.showTab[0] = self.type ~= 'instance'
  self.description = string.gsub(data.description or "", "\\\n", "\n") or ""
  self.isStateGraph = data.isStateGraph
@/lua/ge/extensions/editor/flowgraph/references.lua
        for _, node in pairs(graph.nodes) do
          self:updateNodeOccurrence(string.gsub(node.type, "(.*/)(.*)", "%2"), filename)
        end
@/lua/common/jbeam/expressionParser.lua
  --strip leading "$=" from expression and replace all occurences of "$" with "_" (as these are used for lua variable names)
  expr = expr:sub(3):gsub('%$', 'var_')
  --strip leading "$=" from expression and replace all occurences of "$" with "_" (as these are used for lua variable names)
  expr = expr:sub(3):gsub('%$', 'var_')
  --strip leading "$=" from expression and replace all occurences of "$" with "_" (as these are used for lua variable names)
  expr = expr:sub(3):gsub('%$', 'var_')
@/lua/common/libs/lunajson/lunajson/encoder.lua
        if delimmark then
          s = gsub(s, delimmark, '')
        end
        if radixmark then
          s = gsub(s, radixmark, '.')
        end
    if find(s, f_string_esc_pat) then
      s = gsub(s, f_string_esc_pat, f_string_subst)
    end
@/lua/ge/extensions/freeroam/facilities/fuelPrice.lua
        end
        local priceStr = string.format("%.3f", price):gsub("%.", "")
        for i=1, #v2.displayObjects  do
@/gameplay/missionTypes/busMode/constructor.lua
local function hex2rgb (hex)
  local hex = hex:gsub("#","")
  if hex:len() == 3 then
@/lua/ge/extensions/util/jbeamStats.lua
    local content = readFile(filename)
    totalLineCount = totalLineCount + select(2, content:gsub('\n', '\n'))
    if content ~= nil then
@/lua/ge/extensions/career/modules/delivery/vehicleTasks.lua
        local precisionBreakdown = {
          label = "Precision Parking (" .. precisionBonus.precisionLevel:gsub("^%l", string.upper) .. ")",
          rewards = {},
@/lua/ge/extensions/flowgraph/nodes/util/roadSegment.lua
      local lanes = link.lanes or '-+'
      local _, iCount = string.gsub(lanes, '-', '')
      local _, oCount = string.gsub(lanes, '+', '')
      local _, iCount = string.gsub(lanes, '-', '')
      local _, oCount = string.gsub(lanes, '+', '')
      self.pinOut.lanesIncoming.value = iCount
@/lua/ge/extensions/scenario/scenariosLoader.lua
      scenarioData.official = isOfficialContentVPath(string.sub(scenarioFilename, 0))
      scenarioData.levelName = string.gsub(scenarioFilename, "(.*/)(.*)/scenarios/(.*)%.json", "%2")
      scenarioData.map = "ui.common.unknown"
      end
      scenarioData.scenarioName = scenarioData.scenarioName or string.gsub(scenarioFilename, "(.*/)(.*)%.json", "%2")
      scenarioData.directory = string.gsub(scenarioFilename, "(.*)/(.*)%.json", "%1")
      scenarioData.scenarioName = scenarioData.scenarioName or string.gsub(scenarioFilename, "(.*/)(.*)%.json", "%2")
      scenarioData.directory = string.gsub(scenarioFilename, "(.*)/(.*)%.json", "%1")
    end
      for i,v in ipairs(matchedScenarios) do
        local otherScenarioName = string.gsub(v, "(.*/)(.*)%.json", "%2")
        if otherScenarioName ~= scenarioData.scenarioName then
          name = fgData.name or "New Flowgraph Scenario",
          description =  string.gsub(fgData.description or "No Description", "\\n", "\n"),
          authors = fgData.authors or "Anonymous",
@/lua/common/extensions.lua

  return (filepath:gsub('_', '__'):gsub('/', '_'))
end

  return (filepath:gsub('_', '__'):gsub('/', '_'))
end

  local res = extName:gsub('__', '#'):gsub('_', '/'):gsub('#', '_')
  -- log('I', logTag, 'extNameToLuaPath >> ' .. tostring(extName) .. ' => ' .. tostring(res))

  local res = extName:gsub('__', '#'):gsub('_', '/'):gsub('#', '_')
  -- log('I', logTag, 'extNameToLuaPath >> ' .. tostring(extName) .. ' => ' .. tostring(res))

  local res = extName:gsub('__', '#'):gsub('_', '/'):gsub('#', '_')
  -- log('I', logTag, 'extNameToLuaPath >> ' .. tostring(extName) .. ' => ' .. tostring(res))
      if string.sub(extPath, 1, 1) == '/' then -- strip leading '/' if present
        extPath = string.gsub(extPath, "/(.*)", "%1")
      end
  if string.sub(extPath, 1, 1) == '/' then
    extPath = string.gsub(extPath, "/(.*)", "%1") -- strip leading '/' if present
  end
  if string.len(rootName) > 0 then
    extName = rootName..'_'..string.gsub(extPath, "(.*/)(.*)", "%2")
  else
  else
    extName = string.gsub(extPath, "(.*/)(.*)", "%2")
  end
  local newPath = directory .. "/?.lua;"
  newPath = newPath:gsub('//', '/') -- prevent having double slashes in the lookup path
  package.path = newPath .. package.path
        local root
        local extFilename = string.gsub(extPath, "(.*/)(.*)", "%2")
        if extFilename == extName then
@/lua/ge/extensions/core/camera.lua
    -- fix INI values that passed through javascript (e.g. when opening Options menu)
    savedConfiguration = savedConfiguration:gsub("'",'"')
    -- and then deserialize, so we can follow the user settings
@/lua/ge/extensions/gameplay/drag/saveSystem.lua
        if not stripData then
          local altPath = stripFilePath:gsub("/dragRaces/", "/dragstrips/")
          if altPath ~= stripFilePath then
        if not stripData then
          local altPath = stripFilePath:gsub("/dragstrips/", "/dragRaces/")
          if altPath ~= stripFilePath then