From 9d0e333de2324884fa6f82805b1d6e5b770f859b Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Wed, 11 Jun 2025 20:45:20 -0700 Subject: [PATCH] Fix bug where multiline comments were sometimes not handled Example test case that was previously handled incorrectly: ```solidity /* event InsideAComment() */ ``` --- README.md | 2 +- index.html | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ffd4f9e..3004732 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ There is a button to delete all lines in the input code block that do *not* cont ## Testing -Use [this permalink](https://event-hashes.ardis.lu#H4sIAAAAAAAACq1TwW7bMAy96yt4tA0HRhy0l5yydocAazEsBXYoikKT2FSoRRmSnDUb9u8DFSV2tgC7zBdb7z2Sj6TcNPBBBqOglz4Y2grcIUXYGNt3WEitPYZQH9+DodheXZdLIZoGHvY9AjlvZWd+yGgcnUez+vGpNhRrpME+PuW4r68mYuilQpCkAd+jl4RuCPCG++/Oa4jeWMtuAHJGVgc4GgJDGt9RA0i/ndfAz5GCkWS2rYF9wBmemEUJAMt0Srbuhi6aWWcIoXPubSZfUercUeI+GcK/HBwMiLH+hGgTkcpP0AWIcvln3o20eC8tFmOmevz8RwBXYLWhKPKMb3Gmh74zarqX24xgccr3fyCu+AWt2+F0m6nn5+h6o54rsebTAx+KKTE/De7FO1ufBbUnLrrDGtura9jJbsBcdL0l5xGUsxYpBoYO9tYUjMbVzYGYs8mmusi1RbmEqhFNVQm4LFlwOGsO5Gfppc1UmCwMZA1NA5mB+XH332poqhPccqLMKNYXZS66EmVq6sZ5jyp2ezDcnqEtkKNZEvFUIURvVATrNArlKHqpImwSeOc0ws/xvzmBH3dpDtkq9wMvAym+HXDv4oouCEa8PcMv5m55EuONBSiX4tdvNFCEL18EAAA=) for testing. The output should be: +Use [this permalink](https://event-hashes.ardis.lu#H4sIAAAAAAAACq2TPW/bMBCGd/6KGyVBhmC5yeLJTToYaIKiDtAhCAKGvDhExKNAUm7Sov+9OJq25NZAl3qx+T738d6Rbhr4KINR0EsfDG0F7pAibIztOyyk1h5DqA/fg6HYXlyWSyGaBu7eewRy3srO/JDRODrN5uj7h9pQrJEGe/+Q8769mIihlwpBkgZ8i14SuiHAK75/d15D9MZadgOQK3J0gIMhMKTxDTWA9Nt5Dfw5IBgh07YG9gEneiKLEgCW6ZRs3QxdNLPOEELn3OtMvqDUeaLEPhvCvxzsDYix/wS0CaT2E3UBolz+WXcjLd5Ki8VYqR5//iOBO3C0oSjyjq9xpoe+M2p6L9dZweJY7/9I3PErWrfD6W2mmR+j6416rMSaT3d8KKZgflzcs3e2Pklqjyy6/TW2F5ewk92Auel6S84jKGctUgws7e2tKRiNq6s9mLPJpjrL2qJcQtWIpqoEnA9ZcPo+RpzjH5hXTWZfpJc2kzC5T5A1NA1kAvPD03iqoamOcst9MlEcX5TZ00qUaeYr5z2q2L2D4ekNbYEczVIQLx1C9EZFsE6jUI6ilyrCJok3TiP8HP9WR/HTLq0pW+Vx4XkgxY8Hbl1c0ZmAUW9P9LO1W97E+KAByqX49RsAL25KfgQAAA==) for testing. The output should be: > 15 events found (11 unique) > diff --git a/index.html b/index.html index 68ed960..a6e05a7 100644 --- a/index.html +++ b/index.html @@ -315,11 +315,20 @@ return text; } - function trimComments(event) { - const i1 = event.indexOf('//'); - event = i1 === -1 ? event : event.substring(0, i1); - const i2 = event.indexOf('/*'); - event = i2 === -1 ? event : event.substring(0, i2); + function trimMultiLineComments(event) { + let i1, i2; + while (i1 !== -1) { + i1 = event.indexOf('/*'); + i2 = event.indexOf('*/', i1); + event = i1 === -1 ? event : `${event.substring(0, i1)}${event.substring(i2 + 2)}`; + event = event.trim(); + } + return event; + } + + function trimSingleLineComments(event) { + const i = event.indexOf('//'); + event = i === -1 ? event : event.substring(0, i); event = event.trim(); return event; } @@ -360,7 +369,8 @@ } function getEvents(code) { - code = code.split('\n').map(trimComments).join('\n'); + code = trimMultiLineComments(code); + code = code.split('\n').map(trimSingleLineComments).join('\n'); originalEvents.length = 0; const events = []; let position = 0; -- 2.47.3