') + ')', 'gi');
if (regex.test(text)) {
found = true;
var frag = document.createDocumentFragment();
var parts = text.split(regex);
parts.forEach(function(part, i) {
if (i % 2 === 0) {
frag.appendChild(document.createTextNode(part));
} else {
var span = document.createElement('span');
span.className = 'userscript-highlight';
span.textContent = part;
frag.appendChild(span);
}
});
node.parentNode.replaceChild(frag, node);
}
});
} else if (node.nodeType === 1 && node.childNodes) { // element
var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];
if (!skipTags.includes(node.tagName)) {
Array.from(node.childNodes).forEach(highlight);
}
}
}
highlight(document.body);
// Re-highlight on dynamic content
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
m.addedNodes.forEach(function(node) {
if (node.nodeType === 1 || node.nodeType === 3) highlight(node);
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); }
})();
(function(){
try {
var __m = "*";
var __re = new RegExp('^' + ".*" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Strip utm_, fbclid, gclid, etc. from all links on page
(function() {
var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',
'ref', 'ref_src', 'source', 'medium', 'campaign'];
function cleanUrl(url) {
try {
var u = new URL(url, window.location.origin);
var changed = false;
trackingParams.forEach(function(p) {
if (u.searchParams.has(p)) {
u.searchParams.delete(p);
changed = true;
}
});
return changed ? u.toString() : url;
} catch (e) {
return url;
}
}
function cleanLinks() {
document.querySelectorAll('a[href]').forEach(function(a) {
var clean = cleanUrl(a.href);
if (clean !== a.href) a.href = clean;
});
}
cleanLinks();
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(m) {
m.addedNodes.forEach(function(node) {
if (node.nodeType === 1) {
if (node.tagName === 'A') cleanLinks();
node.querySelectorAll('a[href]').forEach(function(a) {
var clean = cleanUrl(a.href);
if (clean !== a.href) a.href = clean;
});
}
});
});
});
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); }
})();
(function(){
try {
var __m = "youtube.com";
var __re = new RegExp('^' + "youtube\\.com" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Auto-enable theater mode on YouTube
(function() {
function tryTheater() {
var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]');
if (btn && !btn.classList.contains('activated')) {
btn.click();
}
}
// Try immediately
tryTheater();
// Try after navigation (SPA)
var lastUrl = location.href;
setInterval(function() {
if (location.href !== lastUrl) {
lastUrl = location.href;
setTimeout(tryTheater, 500);
}
}, 1000);
// Also try on player load
var observer = new MutationObserver(tryTheater);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); }
})();
(function(){
try {
var __m = "*";
var __re = new RegExp('^' + ".*" + ', 'i');
if (__m === '*' || __re.test(location.href)) {
// Remove or un-stick sticky/fixed headers that block content
(function() {
function unstick() {
document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) {
if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {
el.style.position = 'static';
el.style.top = 'auto';
el.style.zIndex = 'auto';
}
});
}
unstick();
var observer = new MutationObserver(unstick);
observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });
})();
}
} catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); }
})();
})();
Fix issue #537 - Step 2 - Add support Extended Record Function + Attribute from support used current record definitions by DocSvartz · Pull Request #646 · MapsterMapper/Mapster · GitHub
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix Issue: #501 - test named OnlyInlineRecordWorked (regarding not filling the record with data in the given case)
Add
(InlineExpression is Worked) Field Activation passing Field values not specified in the constructor when creating a new record instance
Record Creation on Default Passing Field values not specified in the constructor when creating a new record instance (Activation)
A special attribute to support custom classes (structures) that use the current record definition. description of spec record at the end of the page -
[AdaptWith(AdaptDirectives.DestinationAsRecord)] - to be confirmed
Example:
[TestMethod]
public void MultiCtorAndInlineRecordWorked()
{
var _sourcePoco = new MultiCtorAndInlinePoco() { MyInt = 1, MyString = "Hello", MyEmail = "123@gmail.com", InitData="Test"};
var _sourceMultiCtorAndInline = new MultiCtorAndInlineRecord(2, "Hello World") { InitData = "Worked", MyEmail = "243@gmail.com" };
var _resultMultiCtorAndInline = _sourcePoco.Adapt<MultiCtorAndInlineRecord>(); // Activation var _updateResult = _sourceMultiCtorAndInline.Adapt(_resultMultiCtorAndInline); // Update
_resultMultiCtorAndInline.MyInt.ShouldBe(1);
_resultMultiCtorAndInline.MyString.ShouldBe("Hello");
_resultMultiCtorAndInline.MyEmail.ShouldBe("123@gmail.com");
_resultMultiCtorAndInline.InitData.ShouldBe("Test");
_updateResult.MyInt.ShouldBe(2);
_updateResult.MyString.ShouldBe("Hello World");
_updateResult.MyEmail.ShouldBe("243@gmail.com");
_updateResult.InitData.ShouldBe("Worked");
}
record MultiCtorAndInlineRecord
{
public MultiCtorAndInlineRecord(int myInt)
{
MyInt = myInt;
}
public MultiCtorAndInlineRecord(int myInt, string myString) : this(myInt) // default have been using this constructor
{
MyString = myString;
}
public int MyInt { get; private set; } // private set only constructor or using init public string MyString { get; private set; } // private set only constructor or using init public string MyEmail { get; set; } public string InitData { get; init; } // init in Constructor or inline activation
}
DocSvartz
changed the title
FIx Issue #537 - Step 2 - Add Support Extended Record Function + Attibute from support used legasy record definitionsFIx Issue #537 - Step 2 - Add Support Extended Record Function + Attribute from support used legasy record definitionsOct 23, 2023
Explanations regarding tests marked Ignore
I don’t understand what exactly wanted to check in them?
If it is possible to map non-public fields to the record constructor, then the Source should have had them
If mapping fields from the Source to hidden fields in the record, then this should not work at all. The record is always activated through the constructor and they would have gotten there anyway. Because the sources are public.
Tests have been rewritten to test what the test name states
DocSvartz
changed the title
FIx Issue #537 - Step 2 - Add Support Extended Record Function + Attribute from support used legasy record definitionsFIx Issue #537 - Step 2 - Add Support Extended Record Function + Attribute from support used legacy record definitionsOct 23, 2023
DocSvartz
changed the title
FIx Issue #537 - Step 2 - Add Support Extended Record Function + Attribute from support used legacy record definitionsFIx Issue #537 - Step 2 - Add Support Extended Record Function + Attribute from support used current record definitionsOct 23, 2023
andrerav
changed the title
FIx Issue #537 - Step 2 - Add Support Extended Record Function + Attribute from support used current record definitionsFix issue #537 - Step 2 - Add support Extended Record Function + Attribute from support used current record definitionsJan 2, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix Issue:
#501 - test named OnlyInlineRecordWorked (regarding not filling the record with data in the given case)
Add
[AdaptWith(AdaptDirectives.DestinationAsRecord)] - to be confirmed
Example: