48 lines
1020 B
Nim
48 lines
1020 B
Nim
import strutils
|
|
|
|
proc commentStripper(txt: string; delim: tuple[l, r: string] = ("/*", "*/")): string =
|
|
let i = txt.find(delim.l)
|
|
if i < 0: return txt
|
|
|
|
result = if i > 0: txt[0 ..< i] else: ""
|
|
let tmp = commentStripper(txt[i+delim.l.len .. txt.high], delim)
|
|
let j = tmp.find(delim.r)
|
|
assert j >= 0
|
|
result &= tmp[j+delim.r.len .. tmp.high]
|
|
|
|
echo "NON-NESTED BLOCK COMMENT EXAMPLE:"
|
|
echo commentStripper("""/**
|
|
* Some comments
|
|
* longer comments here that we can parse.
|
|
*
|
|
* Rahoo
|
|
*/
|
|
function subroutine() {
|
|
a = /* inline comment */ b + c ;
|
|
}
|
|
/*/ <-- tricky comments */
|
|
|
|
/**
|
|
* Another comment.
|
|
*/
|
|
function something() {
|
|
}""")
|
|
|
|
echo "\nNESTED BLOCK COMMENT EXAMPLE:"
|
|
echo commentStripper(""" /**
|
|
* Some comments
|
|
* longer comments here that we can parse.
|
|
*
|
|
* Rahoo
|
|
*//*
|
|
function subroutine() {
|
|
a = /* inline comment */ b + c ;
|
|
}
|
|
/*/ <-- tricky comments */
|
|
*/
|
|
/**
|
|
* Another comment.
|
|
*/
|
|
function something() {
|
|
}""")
|