Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add string alignment handling to FormatWith functionality - #35

Open
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1
Open

Add string alignment handling to FormatWith functionality#35
TheodoreBrinkman wants to merge 12 commits into
crozone:masterfrom
TheodoreBrinkman:patch-1

Conversation

@TheodoreBrinkman

Copy link
Copy Markdown

Additional values & tests for a left-padding format string.

This type of format string does not currently work in FormatWith.
I suspect a format-string parse issue, where it assumes the first format-string delimiter is ':', rather than a potential ','.
I've been trying to find workarounds, but haven't managed to do so yet.

Added test values for left-pad formatting.
Added test for left-pad formatting.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 22, 2024

Copy link
Copy Markdown
Author

FormatWith/Internal/FormatHelpers.cs around line 48/138, the parser checks for the first instance of ':', but it is possible for the overall format string to begin with ',' followed by a number indicating alignment then ':' and the rest of the format string. the ',' plus number denotes padding the value with spaces.
A positive value indicates left-padding.
A negative value indicates right-padding.

It might be worth switching to a RegEx parser for the format string, but I'm not sure how complex that would be.
Otherwise, the fix would involve finding the ':' if it's there, then looking for a preceeding ',' to parse out the number, and making sure you build the format value (defined on line 47/137) to include the ',alignment:formatString' combination as necessary.

Note: Line references appear to be 40/39, and 109/108 respectively, in the 4.0 branch.

@TheodoreBrinkmanTheodoreBrinkman changed the title Patch 1Add string alignment handling to FormatWith functionalityAug 22, 2024
@TheodoreBrinkman

TheodoreBrinkman commented Aug 23, 2024

Copy link
Copy Markdown
Author

Here's a .NET Fiddle example of the format string with alignment in action.

.Net Fiddle - Format String with Alignment

Initial swag at parsing and using both the alignment and format segments. I don't understand the tokenization, and suspect a new handler might be needed.
Fixed some minor typos.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 26, 2024

Copy link
Copy Markdown
Author

A quick .NET Fiddle sample comparing a regex parse to a IndexOf/Substring parse.
https://dotnetfiddle.net/tWPTyJ

@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

@crozone I'm not familiar with the innards of the library. Can you let me know where else I might need to make changes to handle the alignment portion of a format string? I'm thinking it might be useful to provide the parsing functionality as a function that returns an object so it can be used by handlers, but I'm not certain.

Updated null/blank check on format string to include the full alignment+format string.
@TheodoreBrinkman

TheodoreBrinkman commented Aug 27, 2024

Copy link
Copy Markdown
Author

Also, if you're willing to have a breaking change for 4.0, you could re-structure the special handler designation such that it can have alignment, handler, and formatting, and provide a way to register multiple handlers, rather than requiring library users to write a single method to handle any and all special handlers they want to use.

For example: {token[,alignment][;handler][:formatString]}
{someDate,15;uppercase:yyyy MMM dd} to convert a date to 1900 JAN 24, and left-pad it out to 15 characters.

Looking at the .NET composite formatting page, this would be compatible with the existing {index[,alignment][:formatString]} notation.

Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved new tests into their own file.
Finally had a chance to work in an actual dev environment. Sorry about the mish-mash of prior edits in this branch.
Moved tests into their own file.
Additional tests to validate FormatWith usage against the new code.

@TheodoreBrinkmanTheodoreBrinkman left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all existing tests and newly created tests.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

I've also got a set of changes for the 4.0 branch, but I've always been in TFS shops, so I'm having issues figuring out the process for Git in Visual Studio. And it'll probably need a look at whether I've missed anything regarding the use of ReadOnlySpan rather than String.

@TheodoreBrinkman

Copy link
Copy Markdown
Author

@crozone Any interest in this at all, or is the project abandoned?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@TheodoreBrinkman