Remove regex requirement
This commit is contained in:
parent
15383cfcff
commit
4220d2bf1f
2 changed files with 27 additions and 23 deletions
|
|
@ -10,4 +10,4 @@ srcDir = "src"
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
requires "nim >= 1.0.6", "https://github.com/jyapayne/nimterop#367ec05", "regex >= 0.14.1"
|
requires "nim >= 1.0.6", "https://github.com/jyapayne/nimterop#367ec05"
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,34 @@
|
||||||
import macros, nimterop / plugin
|
import macros, nimterop / plugin
|
||||||
import strutils, regex
|
import strutils
|
||||||
import sets
|
import sets
|
||||||
|
|
||||||
proc firstLetterLower(m: RegexMatch, s: string): string =
|
template camelCase(str: string): string =
|
||||||
if m.groupsCount > 0 and m.group(0).len > 0:
|
var res = newStringOfCap(str.len)
|
||||||
return s[m.group(0)[0]].toLowerAscii
|
for i in 0..<str.len:
|
||||||
|
if str[i] == '_' and i < str.len - 1:
|
||||||
|
res.add(str[i+1].toUpperAscii)
|
||||||
|
else:
|
||||||
|
res.add(str[i])
|
||||||
|
res
|
||||||
|
|
||||||
proc camelCase(m: RegexMatch, s: string): string =
|
template lowerFirstLetter(str, rep: string): string =
|
||||||
if m.groupsCount > 0 and m.group(0).len > 0:
|
if str.startsWith(rep):
|
||||||
return s[m.group(0)[0]].toUpperAscii
|
var res = str[rep.len .. ^1]
|
||||||
|
res[0] = res[0].toLowerAscii
|
||||||
|
res
|
||||||
|
else:
|
||||||
|
str
|
||||||
|
|
||||||
proc nothing(m: RegexMatch, s: string): string =
|
template nothing(str, rep: string): string =
|
||||||
if m.groupsCount > 0 and m.group(0).len > 0:
|
if str.startsWith(rep):
|
||||||
return s[m.group(0)[0]]
|
str[rep.len .. ^1]
|
||||||
|
else:
|
||||||
|
str
|
||||||
|
|
||||||
const replacements = [
|
const replacements = [
|
||||||
re"^glew(.)",
|
"glew",
|
||||||
]
|
]
|
||||||
|
|
||||||
const underscoreReg = re"_(.)"
|
|
||||||
|
|
||||||
# Symbol renaming examples
|
# Symbol renaming examples
|
||||||
proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
|
proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
|
||||||
if sym.name.startsWith("__"):
|
if sym.name.startsWith("__"):
|
||||||
|
|
@ -38,24 +47,19 @@ proc onSymbol*(sym: var Symbol) {.exportc, dynlib.} =
|
||||||
sym.name = "CGL_FIXED"
|
sym.name = "CGL_FIXED"
|
||||||
if sym.name.startsWith("PFNGLGETTRANSFORMFEEDBACKIVPROC"):
|
if sym.name.startsWith("PFNGLGETTRANSFORMFEEDBACKIVPROC"):
|
||||||
sym.name = "CPFNGLGETTRANSFORMFEEDBACKIVPROC"
|
sym.name = "CPFNGLGETTRANSFORMFEEDBACKIVPROC"
|
||||||
|
|
||||||
if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst:
|
if sym.kind == nskProc or sym.kind == nskType or sym.kind == nskConst:
|
||||||
if sym.name != "_":
|
if sym.name != "_":
|
||||||
sym.name = sym.name.strip(chars={'_'}).replace("__", "_")
|
sym.name = sym.name.strip(chars={'_'}).replace("__", "_")
|
||||||
|
|
||||||
for rep in replacements:
|
for rep in replacements:
|
||||||
if sym.kind == nskProc:
|
if sym.kind == nskProc:
|
||||||
try:
|
sym.name = lowerFirstLetter(sym.name, rep)
|
||||||
sym.name = sym.name.replace(rep, firstLetterLower)
|
|
||||||
except:
|
|
||||||
discard
|
|
||||||
else:
|
else:
|
||||||
try:
|
sym.name = nothing(sym.name, rep)
|
||||||
sym.name = sym.name.replace(rep, nothing)
|
|
||||||
except:
|
|
||||||
discard
|
|
||||||
|
|
||||||
if sym.kind == nskField:
|
if sym.kind == nskField:
|
||||||
sym.name = sym.name.replace(underscoreReg, camelCase)
|
sym.name = camelCase(sym.name)
|
||||||
if sym.name == "type":
|
if sym.name == "type":
|
||||||
sym.name = "kind"
|
sym.name = "kind"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue