diff --git a/Sources/HTMLKit/Abstraction/Attributes/AriaAttributes.swift b/Sources/HTMLKit/Abstraction/Attributes/AriaAttributes.swift
index 4aeab472..d177284f 100644
--- a/Sources/HTMLKit/Abstraction/Attributes/AriaAttributes.swift
+++ b/Sources/HTMLKit/Abstraction/Attributes/AriaAttributes.swift
@@ -15,14 +15,14 @@ public protocol AriaActiveDescendantAttribute: Attribute {
extension AriaActiveDescendantAttribute where Self: ContentNode {
- internal func mutate(ariaactivedescendant value: String) -> Self {
+ internal func mutate(ariaactivedescendant value: AttributeData) -> Self {
return self.mutate(key: "aria-activedescendant", value: value)
}
}
extension AriaActiveDescendantAttribute where Self: EmptyNode {
- internal func mutate(ariaactivedescendant value: String) -> Self {
+ internal func mutate(ariaactivedescendant value: AttributeData) -> Self {
return self.mutate(key: "aria-activedescendant", value: value)
}
}
@@ -42,14 +42,14 @@ public protocol AriaAtomicAttribute: Attribute {
extension AriaAtomicAttribute where Self: ContentNode {
- internal func mutate(ariaatomic value: Bool) -> Self {
+ internal func mutate(ariaatomic value: AttributeData) -> Self {
return self.mutate(key: "aria-atomic", value: value)
}
}
extension AriaAtomicAttribute where Self: EmptyNode {
- internal func mutate(ariaatomic value: Bool) -> Self {
+ internal func mutate(ariaatomic value: AttributeData) -> Self {
return self.mutate(key: "aria-atomic", value: value)
}
}
@@ -68,14 +68,14 @@ public protocol AriaAutoCompleteAttribute: Attribute {
extension AriaAutoCompleteAttribute where Self: ContentNode {
- internal func mutate(ariaautocomplete value: String) -> Self {
+ internal func mutate(ariaautocomplete value: AttributeData) -> Self {
return self.mutate(key: "aria-autocomplete", value: value)
}
}
extension AriaAutoCompleteAttribute where Self: EmptyNode {
- internal func mutate(ariaautocomplete value: String) -> Self {
+ internal func mutate(ariaautocomplete value: AttributeData) -> Self {
return self.mutate(key: "aria-autocomplete", value: value)
}
}
@@ -94,14 +94,14 @@ public protocol AriaBusyAttribute: Attribute {
extension AriaBusyAttribute where Self: ContentNode {
- internal func mutate(ariabusy value: Bool) -> Self {
+ internal func mutate(ariabusy value: AttributeData) -> Self {
return self.mutate(key: "aria-busy", value: value)
}
}
extension AriaBusyAttribute where Self: EmptyNode {
- internal func mutate(ariabusy value: Bool) -> Self {
+ internal func mutate(ariabusy value: AttributeData) -> Self {
return self.mutate(key: "aria-busy", value: value)
}
}
@@ -120,14 +120,14 @@ public protocol AriaCheckedAttribute: Attribute {
extension AriaCheckedAttribute where Self: ContentNode {
- internal func mutate(ariachecked value: String) -> Self {
+ internal func mutate(ariachecked value: AttributeData) -> Self {
return self.mutate(key: "aria-checked", value: value)
}
}
extension AriaCheckedAttribute where Self: EmptyNode {
- internal func mutate(ariachecked value: String) -> Self {
+ internal func mutate(ariachecked value: AttributeData) -> Self {
return self.mutate(key: "aria-checked", value: value)
}
}
@@ -146,14 +146,14 @@ public protocol AriaColumnCountAttribute: Attribute {
extension AriaColumnCountAttribute where Self: ContentNode {
- internal func mutate(ariacolcount value: Int) -> Self {
+ internal func mutate(ariacolcount value: AttributeData) -> Self {
return self.mutate(key: "aria-colcount", value: value)
}
}
extension AriaColumnCountAttribute where Self: EmptyNode {
- internal func mutate(ariacolcount value: Int) -> Self {
+ internal func mutate(ariacolcount value: AttributeData) -> Self {
return self.mutate(key: "aria-colcount", value: value)
}
}
@@ -172,14 +172,14 @@ public protocol AriaColumnIndexAttribute: Attribute {
extension AriaColumnIndexAttribute where Self: ContentNode {
- internal func mutate(ariacolindex value: Int) -> Self {
+ internal func mutate(ariacolindex value: AttributeData) -> Self {
return self.mutate(key: "aria-colindex", value: value)
}
}
extension AriaColumnIndexAttribute where Self: EmptyNode {
- internal func mutate(ariacolindex value: Int) -> Self {
+ internal func mutate(ariacolindex value: AttributeData) -> Self {
return self.mutate(key: "aria-colindex", value: value)
}
}
@@ -198,14 +198,14 @@ public protocol AriaColumnSpanAttribute: Attribute {
extension AriaColumnSpanAttribute where Self: ContentNode {
- internal func mutate(ariacolspan value: Int) -> Self {
+ internal func mutate(ariacolspan value: AttributeData) -> Self {
return self.mutate(key: "aria-colspan", value: value)
}
}
extension AriaColumnSpanAttribute where Self: EmptyNode {
- internal func mutate(ariacolspan value: Int) -> Self {
+ internal func mutate(ariacolspan value: AttributeData) -> Self {
return self.mutate(key: "aria-colspan", value: value)
}
}
@@ -224,14 +224,14 @@ public protocol AriaControlsAttribute: Attribute {
extension AriaControlsAttribute where Self: ContentNode {
- internal func mutate(ariacontrols value: String) -> Self {
+ internal func mutate(ariacontrols value: AttributeData) -> Self {
return self.mutate(key: "aria-controls", value: value)
}
}
extension AriaControlsAttribute where Self: EmptyNode {
- internal func mutate(ariacontrols value: String) -> Self {
+ internal func mutate(ariacontrols value: AttributeData) -> Self {
return self.mutate(key: "aria-controls", value: value)
}
}
@@ -250,14 +250,14 @@ public protocol AriaCurrentAttribute: Attribute {
extension AriaCurrentAttribute where Self: ContentNode {
- internal func mutate(ariacurrent value: String) -> Self {
+ internal func mutate(ariacurrent value: AttributeData) -> Self {
return self.mutate(key: "aria-current", value: value)
}
}
extension AriaCurrentAttribute where Self: EmptyNode {
- internal func mutate(ariacurrent value: String) -> Self {
+ internal func mutate(ariacurrent value: AttributeData) -> Self {
return self.mutate(key: "aria-current", value: value)
}
}
@@ -276,14 +276,14 @@ public protocol AriaDescribedAttribute: Attribute {
extension AriaDescribedAttribute where Self: ContentNode {
- internal func mutate(ariadescribedby value: String) -> Self {
+ internal func mutate(ariadescribedby value: AttributeData) -> Self {
return self.mutate(key: "aria-describedby", value: value)
}
}
extension AriaDescribedAttribute where Self: EmptyNode {
- internal func mutate(ariadescribedby value: String) -> Self {
+ internal func mutate(ariadescribedby value: AttributeData) -> Self {
return self.mutate(key: "aria-describedby", value: value)
}
}
@@ -302,14 +302,14 @@ public protocol AriaDetailsAttribute: Attribute {
extension AriaDetailsAttribute where Self: ContentNode {
- internal func mutate(ariadetails value: String) -> Self {
+ internal func mutate(ariadetails value: AttributeData) -> Self {
return self.mutate(key: "aria-details", value: value)
}
}
extension AriaDetailsAttribute where Self: EmptyNode {
- internal func mutate(ariadetails value: String) -> Self {
+ internal func mutate(ariadetails value: AttributeData) -> Self {
return self.mutate(key: "aria-details", value: value)
}
}
@@ -328,14 +328,14 @@ public protocol AriaDisabledAttribute: Attribute {
extension AriaDisabledAttribute where Self: ContentNode {
- internal func mutate(ariadisabled value: Bool) -> Self {
+ internal func mutate(ariadisabled value: AttributeData) -> Self {
return self.mutate(key: "aria-disabled", value: value)
}
}
extension AriaDisabledAttribute where Self: EmptyNode {
- internal func mutate(ariadisabled value: Bool) -> Self {
+ internal func mutate(ariadisabled value: AttributeData) -> Self {
return self.mutate(key: "aria-disabled", value: value)
}
}
@@ -354,14 +354,14 @@ public protocol AriaErrorMessageAttribute: Attribute {
extension AriaErrorMessageAttribute where Self: ContentNode {
- internal func mutate(ariaerrormessage value: String) -> Self {
+ internal func mutate(ariaerrormessage value: AttributeData) -> Self {
return self.mutate(key: "aria-errormessage", value: value)
}
}
extension AriaErrorMessageAttribute where Self: EmptyNode {
- internal func mutate(ariaerrormessage value: String) -> Self {
+ internal func mutate(ariaerrormessage value: AttributeData) -> Self {
return self.mutate(key: "aria-errormessage", value: value)
}
}
@@ -380,14 +380,14 @@ public protocol AriaExpandedAttribute: Attribute {
extension AriaExpandedAttribute where Self: ContentNode {
- internal func mutate(ariaexpanded value: Bool) -> Self {
+ internal func mutate(ariaexpanded value: AttributeData) -> Self {
return self.mutate(key: "aria-expanded", value: value)
}
}
extension AriaExpandedAttribute where Self: EmptyNode {
- internal func mutate(ariaexpanded value: Bool) -> Self {
+ internal func mutate(ariaexpanded value: AttributeData) -> Self {
return self.mutate(key: "aria-expanded", value: value)
}
}
@@ -406,14 +406,14 @@ public protocol AriaFlowToAttribute: Attribute {
extension AriaFlowToAttribute where Self: ContentNode {
- internal func mutate(ariaflowto value: String) -> Self {
+ internal func mutate(ariaflowto value: AttributeData) -> Self {
return self.mutate(key: "aria-flowto", value: value)
}
}
extension AriaFlowToAttribute where Self: EmptyNode {
- internal func mutate(ariaflowto value: String) -> Self {
+ internal func mutate(ariaflowto value: AttributeData) -> Self {
return self.mutate(key: "aria-flowto", value: value)
}
}
@@ -432,14 +432,14 @@ public protocol AriaPopupAttribute: Attribute {
extension AriaPopupAttribute where Self: ContentNode {
- internal func mutate(ariahaspopup value: String) -> Self {
+ internal func mutate(ariahaspopup value: AttributeData) -> Self {
return self.mutate(key: "aria-haspopup", value: value)
}
}
extension AriaPopupAttribute where Self: EmptyNode {
- internal func mutate(ariahaspopup value: String) -> Self {
+ internal func mutate(ariahaspopup value: AttributeData) -> Self {
return self.mutate(key: "aria-haspopup", value: value)
}
}
@@ -458,14 +458,14 @@ public protocol AriaHiddenAttribute: Attribute {
extension AriaHiddenAttribute where Self: ContentNode {
- internal func mutate(ariahidden value: Bool) -> Self {
+ internal func mutate(ariahidden value: AttributeData) -> Self {
return self.mutate(key: "aria-hidden", value: value)
}
}
extension AriaHiddenAttribute where Self: EmptyNode {
- internal func mutate(ariahidden value: Bool) -> Self {
+ internal func mutate(ariahidden value: AttributeData) -> Self {
return self.mutate(key: "aria-hidden", value: value)
}
}
@@ -484,14 +484,14 @@ public protocol AriaInvalidAttribute: Attribute {
extension AriaInvalidAttribute where Self: ContentNode {
- internal func mutate(ariainvalid value: String) -> Self {
+ internal func mutate(ariainvalid value: AttributeData) -> Self {
return self.mutate(key: "aria-invalid", value: value)
}
}
extension AriaInvalidAttribute where Self: EmptyNode {
- internal func mutate(ariainvalid value: String) -> Self {
+ internal func mutate(ariainvalid value: AttributeData) -> Self {
return self.mutate(key: "aria-invalid", value: value)
}
}
@@ -510,14 +510,14 @@ public protocol AriaShortcutsAttribute: Attribute {
extension AriaShortcutsAttribute where Self: ContentNode {
- internal func mutate(ariakeyshortcuts value: String) -> Self {
+ internal func mutate(ariakeyshortcuts value: AttributeData) -> Self {
return self.mutate(key: "aria-keyshortcuts", value: value)
}
}
extension AriaShortcutsAttribute where Self: EmptyNode {
- internal func mutate(ariakeyshortcuts value: String) -> Self {
+ internal func mutate(ariakeyshortcuts value: AttributeData) -> Self {
return self.mutate(key: "aria-keyshortcuts", value: value)
}
}
@@ -536,14 +536,14 @@ public protocol AriaLabelAttribute: Attribute {
extension AriaLabelAttribute where Self: ContentNode {
- internal func mutate(arialabel value: String) -> Self {
+ internal func mutate(arialabel value: AttributeData) -> Self {
return self.mutate(key: "aria-label", value: value)
}
}
extension AriaLabelAttribute where Self: EmptyNode {
- internal func mutate(arialabel value: String) -> Self {
+ internal func mutate(arialabel value: AttributeData) -> Self {
return self.mutate(key: "aria-label", value: value)
}
}
@@ -562,14 +562,14 @@ public protocol AriaLabeledAttribute: Attribute {
extension AriaLabeledAttribute where Self: ContentNode {
- internal func mutate(arialabeledby value: String) -> Self {
+ internal func mutate(arialabeledby value: AttributeData) -> Self {
return self.mutate(key: "aria-labeledby", value: value)
}
}
extension AriaLabeledAttribute where Self: EmptyNode {
- internal func mutate(arialabeledby value: String) -> Self {
+ internal func mutate(arialabeledby value: AttributeData) -> Self {
return self.mutate(key: "aria-labeledby", value: value)
}
}
@@ -588,14 +588,14 @@ public protocol AriaLevelAttribute: Attribute {
extension AriaLevelAttribute where Self: ContentNode {
- internal func mutate(arialevel value: Int) -> Self {
+ internal func mutate(arialevel value: AttributeData) -> Self {
return self.mutate(key: "aria-level", value: value)
}
}
extension AriaLevelAttribute where Self: EmptyNode {
- internal func mutate(arialevel value: Int) -> Self {
+ internal func mutate(arialevel value: AttributeData) -> Self {
return self.mutate(key: "aria-level", value: value)
}
}
@@ -614,14 +614,14 @@ public protocol AriaLiveAttribute: Attribute {
extension AriaLiveAttribute where Self: ContentNode {
- internal func mutate(arialive value: String) -> Self {
+ internal func mutate(arialive value: AttributeData) -> Self {
return self.mutate(key: "aria-live", value: value)
}
}
extension AriaLiveAttribute where Self: EmptyNode {
- internal func mutate(arialive value: String) -> Self {
+ internal func mutate(arialive value: AttributeData) -> Self {
return self.mutate(key: "aria-live", value: value)
}
}
@@ -640,14 +640,14 @@ public protocol AriaModalAttribute: Attribute {
extension AriaModalAttribute where Self: ContentNode {
- internal func mutate(ariamodal value: Bool) -> Self {
+ internal func mutate(ariamodal value: AttributeData) -> Self {
return self.mutate(key: "aria-modal", value: value)
}
}
extension AriaModalAttribute where Self: EmptyNode {
- internal func mutate(ariamodal value: Bool) -> Self {
+ internal func mutate(ariamodal value: AttributeData) -> Self {
return self.mutate(key: "aria-modal", value: value)
}
}
@@ -666,14 +666,14 @@ public protocol AriaMultilineAttribute: Attribute {
extension AriaMultilineAttribute where Self: ContentNode {
- internal func mutate(ariamultiline value: Bool) -> Self {
+ internal func mutate(ariamultiline value: AttributeData) -> Self {
return self.mutate(key: "aria-multiline", value: value)
}
}
extension AriaMultilineAttribute where Self: EmptyNode {
- internal func mutate(ariamultiline value: Bool) -> Self {
+ internal func mutate(ariamultiline value: AttributeData) -> Self {
return self.mutate(key: "aria-multiline", value: value)
}
}
@@ -692,14 +692,14 @@ public protocol AriaMultiselectAttribute: Attribute {
extension AriaMultiselectAttribute where Self: ContentNode {
- internal func mutate(ariamultiselectable value: Bool) -> Self {
+ internal func mutate(ariamultiselectable value: AttributeData) -> Self {
return self.mutate(key: "aria-multiselectable", value: value)
}
}
extension AriaMultiselectAttribute where Self: EmptyNode {
- internal func mutate(ariamultiselectable value: Bool) -> Self {
+ internal func mutate(ariamultiselectable value: AttributeData) -> Self {
return self.mutate(key: "aria-multiselectable", value: value)
}
}
@@ -718,14 +718,14 @@ public protocol AriaOrientationAttribute: Attribute {
extension AriaOrientationAttribute where Self: ContentNode {
- internal func mutate(ariaorientation value: String) -> Self {
+ internal func mutate(ariaorientation value: AttributeData) -> Self {
return self.mutate(key: "aria-orientation", value: value)
}
}
extension AriaOrientationAttribute where Self: EmptyNode {
- internal func mutate(ariaorientation value: String) -> Self {
+ internal func mutate(ariaorientation value: AttributeData) -> Self {
return self.mutate(key: "aria-orientation", value: value)
}
}
@@ -744,14 +744,14 @@ public protocol AriaOwnsAttribute: Attribute {
extension AriaOwnsAttribute where Self: ContentNode {
- internal func mutate(ariaowns value: String) -> Self {
+ internal func mutate(ariaowns value: AttributeData) -> Self {
return self.mutate(key: "aria-owns", value: value)
}
}
extension AriaOwnsAttribute where Self: EmptyNode {
- internal func mutate(ariaowns value: String) -> Self {
+ internal func mutate(ariaowns value: AttributeData) -> Self {
return self.mutate(key: "aria-owns", value: value)
}
}
@@ -770,14 +770,14 @@ public protocol AriaPlaceholderAttribute: Attribute {
extension AriaPlaceholderAttribute where Self: ContentNode {
- internal func mutate(ariaplaceholder value: String) -> Self {
+ internal func mutate(ariaplaceholder value: AttributeData) -> Self {
return self.mutate(key: "aria-placeholder", value: value)
}
}
extension AriaPlaceholderAttribute where Self: EmptyNode {
- internal func mutate(ariaplaceholder value: String) -> Self {
+ internal func mutate(ariaplaceholder value: AttributeData) -> Self {
return self.mutate(key: "aria-placeholder", value: value)
}
}
@@ -796,14 +796,14 @@ public protocol AriaPositionInsetAttribute: Attribute {
extension AriaPositionInsetAttribute where Self: ContentNode {
- internal func mutate(ariaposinset value: Int) -> Self {
+ internal func mutate(ariaposinset value: AttributeData) -> Self {
return self.mutate(key: "aria-posinset", value: value)
}
}
extension AriaPositionInsetAttribute where Self: EmptyNode {
- internal func mutate(ariaposinset value: Int) -> Self {
+ internal func mutate(ariaposinset value: AttributeData) -> Self {
return self.mutate(key: "aria-posinset", value: value)
}
}
@@ -822,14 +822,14 @@ public protocol AriaPressedAttribute: Attribute {
extension AriaPressedAttribute where Self: ContentNode {
- internal func mutate(ariapressed value: String) -> Self {
+ internal func mutate(ariapressed value: AttributeData) -> Self {
return self.mutate(key: "aria-pressed", value: value)
}
}
extension AriaPressedAttribute where Self: EmptyNode {
- internal func mutate(ariapressed value: String) -> Self {
+ internal func mutate(ariapressed value: AttributeData) -> Self {
return self.mutate(key: "aria-pressed", value: value)
}
}
@@ -848,14 +848,14 @@ public protocol AriaReadonlyAttribute: Attribute {
extension AriaReadonlyAttribute where Self: ContentNode {
- internal func mutate(ariareadonly value: Bool) -> Self {
+ internal func mutate(ariareadonly value: AttributeData) -> Self {
return self.mutate(key: "aria-readonly", value: value)
}
}
extension AriaReadonlyAttribute where Self: EmptyNode {
- internal func mutate(ariareadonly value: Bool) -> Self {
+ internal func mutate(ariareadonly value: AttributeData) -> Self {
return self.mutate(key: "aria-readonly", value: value)
}
}
@@ -874,14 +874,14 @@ public protocol AriaRelevantAttribute: Attribute {
extension AriaRelevantAttribute where Self: ContentNode {
- internal func mutate(ariarelevant value: String) -> Self {
+ internal func mutate(ariarelevant value: AttributeData) -> Self {
return self.mutate(key: "aria-relevant", value: value)
}
}
extension AriaRelevantAttribute where Self: EmptyNode {
- internal func mutate(ariarelevant value: String) -> Self {
+ internal func mutate(ariarelevant value: AttributeData) -> Self {
return self.mutate(key: "aria-relevant", value: value)
}
}
@@ -900,14 +900,14 @@ public protocol AriaRequiredAttribute: Attribute {
extension AriaRequiredAttribute where Self: ContentNode {
- internal func mutate(ariarequired value: Bool) -> Self {
+ internal func mutate(ariarequired value: AttributeData) -> Self {
return self.mutate(key: "aria-required", value: value)
}
}
extension AriaRequiredAttribute where Self: EmptyNode {
- internal func mutate(ariarequired value: Bool) -> Self {
+ internal func mutate(ariarequired value: AttributeData) -> Self {
return self.mutate(key: "aria-required", value: value)
}
}
@@ -926,14 +926,14 @@ public protocol AriaRoleDescriptionAttribute: Attribute {
extension AriaRoleDescriptionAttribute where Self: ContentNode {
- internal func mutate(ariaroledescription value: String) -> Self {
+ internal func mutate(ariaroledescription value: AttributeData) -> Self {
return self.mutate(key: "aria-roledescription", value: value)
}
}
extension AriaRoleDescriptionAttribute where Self: EmptyNode {
- internal func mutate(ariaroledescription value: String) -> Self {
+ internal func mutate(ariaroledescription value: AttributeData) -> Self {
return self.mutate(key: "aria-roledescription", value: value)
}
}
@@ -952,14 +952,14 @@ public protocol AriaRowCountAttribute: Attribute {
extension AriaRowCountAttribute where Self: ContentNode {
- internal func mutate(ariarowcount value: Int) -> Self {
+ internal func mutate(ariarowcount value: AttributeData) -> Self {
return self.mutate(key: "aria-rowcount", value: value)
}
}
extension AriaRowCountAttribute where Self: EmptyNode {
- internal func mutate(ariarowcount value: Int) -> Self {
+ internal func mutate(ariarowcount value: AttributeData) -> Self {
return self.mutate(key: "aria-rowcount", value: value)
}
}
@@ -978,14 +978,14 @@ public protocol AriaRowIndexAttribute: Attribute {
extension AriaRowIndexAttribute where Self: ContentNode {
- internal func mutate(ariarowindex value: Int) -> Self {
+ internal func mutate(ariarowindex value: AttributeData) -> Self {
return self.mutate(key: "aria-rowindex", value: value)
}
}
extension AriaRowIndexAttribute where Self: EmptyNode {
- internal func mutate(ariarowindex value: Int) -> Self {
+ internal func mutate(ariarowindex value: AttributeData) -> Self {
return self.mutate(key: "aria-rowindex", value: value)
}
}
@@ -1004,14 +1004,14 @@ public protocol AriaRowSpanAttribute: Attribute {
extension AriaRowSpanAttribute where Self: ContentNode {
- internal func mutate(ariarowspan value: Int) -> Self {
+ internal func mutate(ariarowspan value: AttributeData) -> Self {
return self.mutate(key: "aria-rowspan", value: value)
}
}
extension AriaRowSpanAttribute where Self: EmptyNode {
- internal func mutate(ariarowspan value: Int) -> Self {
+ internal func mutate(ariarowspan value: AttributeData) -> Self {
return self.mutate(key: "aria-rowspan", value: value)
}
}
@@ -1030,14 +1030,14 @@ public protocol AriaSelectedAttribute: Attribute {
extension AriaSelectedAttribute where Self: ContentNode {
- internal func mutate(ariaselected value: String) -> Self {
+ internal func mutate(ariaselected value: AttributeData) -> Self {
return self.mutate(key: "aria-selected", value: value)
}
}
extension AriaSelectedAttribute where Self: EmptyNode {
- internal func mutate(ariaselected value: String) -> Self {
+ internal func mutate(ariaselected value: AttributeData) -> Self {
return self.mutate(key: "aria-selected", value: value)
}
}
@@ -1056,14 +1056,14 @@ public protocol AriaSetSizeAttribute: Attribute {
extension AriaSetSizeAttribute where Self: ContentNode {
- internal func mutate(ariasetsize value: Int) -> Self {
+ internal func mutate(ariasetsize value: AttributeData) -> Self {
return self.mutate(key: "aria-setsize", value: value)
}
}
extension AriaSetSizeAttribute where Self: EmptyNode {
- internal func mutate(ariasetsize value: Int) -> Self {
+ internal func mutate(ariasetsize value: AttributeData) -> Self {
return self.mutate(key: "aria-setsize", value: value)
}
}
@@ -1082,14 +1082,14 @@ public protocol AriaSortAttribute: Attribute {
extension AriaSortAttribute where Self: ContentNode {
- internal func mutate(ariasort value: String) -> Self {
+ internal func mutate(ariasort value: AttributeData) -> Self {
return self.mutate(key: "aria-sort", value: value)
}
}
extension AriaSortAttribute where Self: EmptyNode {
- internal func mutate(ariasort value: String) -> Self {
+ internal func mutate(ariasort value: AttributeData) -> Self {
return self.mutate(key: "aria-sort", value: value)
}
}
@@ -1108,14 +1108,14 @@ public protocol AriaValueMaximumAttribute: Attribute {
extension AriaValueMaximumAttribute where Self: ContentNode {
- internal func mutate(ariavaluemax value: Float) -> Self {
+ internal func mutate(ariavaluemax value: AttributeData) -> Self {
return self.mutate(key: "aria-valuemax", value: value)
}
}
extension AriaValueMaximumAttribute where Self: EmptyNode {
- internal func mutate(ariavaluemax value: Float) -> Self {
+ internal func mutate(ariavaluemax value: AttributeData) -> Self {
return self.mutate(key: "aria-valuemax", value: value)
}
}
@@ -1134,14 +1134,14 @@ public protocol AriaValueMininumAttribute: Attribute {
extension AriaValueMininumAttribute where Self: ContentNode {
- internal func mutate(ariavaluemin value: Float) -> Self {
+ internal func mutate(ariavaluemin value: AttributeData) -> Self {
return self.mutate(key: "aria-valuemin", value: value)
}
}
extension AriaValueMininumAttribute where Self: EmptyNode {
- internal func mutate(ariavaluemin value: Float) -> Self {
+ internal func mutate(ariavaluemin value: AttributeData) -> Self {
return self.mutate(key: "aria-valuemin", value: value)
}
}
@@ -1160,14 +1160,14 @@ public protocol AriaValueNowAttribute: Attribute {
extension AriaValueNowAttribute where Self: ContentNode {
- internal func mutate(ariavaluenow value: Float) -> Self {
+ internal func mutate(ariavaluenow value: AttributeData) -> Self {
return self.mutate(key: "aria-valuenow", value: value)
}
}
extension AriaValueNowAttribute where Self: EmptyNode {
- internal func mutate(ariavaluenow value: Float) -> Self {
+ internal func mutate(ariavaluenow value: AttributeData) -> Self {
return self.mutate(key: "aria-valuenow", value: value)
}
}
@@ -1186,14 +1186,14 @@ public protocol AriaValueTextAttribute: Attribute {
extension AriaValueTextAttribute where Self: ContentNode {
- internal func mutate(ariavaluetext value: String) -> Self {
+ internal func mutate(ariavaluetext value: AttributeData) -> Self {
return self.mutate(key: "aria-valuetext", value: value)
}
}
extension AriaValueTextAttribute where Self: EmptyNode {
- internal func mutate(ariavaluetext value: String) -> Self {
+ internal func mutate(ariavaluetext value: AttributeData) -> Self {
return self.mutate(key: "aria-valuetext", value: value)
}
}
diff --git a/Sources/HTMLKit/Abstraction/Attributes/BasicAttributes.swift b/Sources/HTMLKit/Abstraction/Attributes/BasicAttributes.swift
index f4b61eae..acb59338 100644
--- a/Sources/HTMLKit/Abstraction/Attributes/BasicAttributes.swift
+++ b/Sources/HTMLKit/Abstraction/Attributes/BasicAttributes.swift
@@ -26,14 +26,14 @@ public protocol AccessKeyAttribute: Attribute {
extension AccessKeyAttribute where Self: ContentNode {
- internal func mutate(accesskey value: Character) -> Self {
+ internal func mutate(accesskey value: AttributeData) -> Self {
return self.mutate(key: "accesskey", value: value)
}
}
extension AccessKeyAttribute where Self: EmptyNode {
- internal func mutate(accesskey value: Character) -> Self {
+ internal func mutate(accesskey value: AttributeData) -> Self {
return self.mutate(key: "accesskey", value: value)
}
}
@@ -97,14 +97,14 @@ public protocol AcceptAttribute: Attribute {
extension AcceptAttribute where Self: ContentNode {
- internal func mutate(accept value: String) -> Self {
+ internal func mutate(accept value: AttributeData) -> Self {
return self.mutate(key: "accept", value: value)
}
}
extension AcceptAttribute where Self: EmptyNode {
- internal func mutate(accept value: String) -> Self {
+ internal func mutate(accept value: AttributeData) -> Self {
return self.mutate(key: "accept", value: value)
}
}
@@ -140,14 +140,14 @@ public protocol ActionAttribute: Attribute {
extension ActionAttribute where Self: ContentNode {
- internal func mutate(action value: String) -> Self {
+ internal func mutate(action value: AttributeData) -> Self {
return self.mutate(key: "action", value: value)
}
}
extension ActionAttribute where Self: EmptyNode {
- internal func mutate(action value: String) -> Self {
+ internal func mutate(action value: AttributeData) -> Self {
return self.mutate(key: "action", value: value)
}
}
@@ -197,22 +197,14 @@ public protocol AlternateAttribute: Attribute {
extension AlternateAttribute where Self: ContentNode {
- internal func mutate(alternate value: String) -> Self {
- return self.mutate(key: "alt", value: value)
- }
-
- internal func mutate(alternate value: LocalizedString) -> Self {
+ internal func mutate(alternate value: AttributeData) -> Self {
return self.mutate(key: "alt", value: value)
}
}
extension AlternateAttribute where Self: EmptyNode {
- internal func mutate(alternate value: String) -> Self {
- return self.mutate(key: "alt", value: value)
- }
-
- internal func mutate(alternate value: LocalizedString) -> Self {
+ internal func mutate(alternate value: AttributeData) -> Self {
return self.mutate(key: "alt", value: value)
}
}
@@ -238,14 +230,14 @@ public protocol AsAttribute: Attribute {
extension AsAttribute where Self: ContentNode {
- internal func mutate(as value: String) -> Self {
+ internal func mutate(as value: AttributeData) -> Self {
return self.mutate(key: "as", value: value)
}
}
extension AsAttribute where Self: EmptyNode {
- internal func mutate(as value: String) -> Self {
+ internal func mutate(as value: AttributeData) -> Self {
return self.mutate(key: "as", value: value)
}
}
@@ -269,14 +261,14 @@ public protocol AsynchronouslyAttribute: Attribute {
extension AsynchronouslyAttribute where Self: ContentNode {
- internal func mutate(async value: String) -> Self {
+ internal func mutate(async value: AttributeData) -> Self {
return self.mutate(key: "async", value: value)
}
}
extension AsynchronouslyAttribute where Self: EmptyNode {
- internal func mutate(async value: String) -> Self {
+ internal func mutate(async value: AttributeData) -> Self {
return self.mutate(key: "async", value: value)
}
}
@@ -300,14 +292,14 @@ public protocol AutocapitalizeAttribute: Attribute {
extension AutocapitalizeAttribute where Self: ContentNode {
- internal func mutate(autocapitalize value: String) -> Self {
+ internal func mutate(autocapitalize value: AttributeData) -> Self {
return self.mutate(key: "autocapitalize", value: value)
}
}
extension AutocapitalizeAttribute where Self: EmptyNode {
- internal func mutate(autocapitalize value: String) -> Self {
+ internal func mutate(autocapitalize value: AttributeData) -> Self {
return self.mutate(key: "autocapitalize", value: value)
}
}
@@ -343,14 +335,14 @@ public protocol AutocompleteAttribute: Attribute {
extension AutocompleteAttribute where Self: ContentNode {
- internal func mutate(autocomplete value: String) -> Self {
+ internal func mutate(autocomplete value: AttributeData) -> Self {
return self.mutate(key: "autocomplete", value: value)
}
}
extension AutocompleteAttribute where Self: EmptyNode {
- internal func mutate(autocomplete value: String) -> Self {
+ internal func mutate(autocomplete value: AttributeData) -> Self {
return self.mutate(key: "autocomplete", value: value)
}
}
@@ -372,14 +364,14 @@ public protocol AutofocusAttribute: Attribute {
extension AutofocusAttribute where Self: ContentNode {
- internal func mutate(autofocus value: String) -> Self {
+ internal func mutate(autofocus value: AttributeData) -> Self {
return self.mutate(key: "autofocus", value: value)
}
}
extension AutofocusAttribute where Self: EmptyNode {
- internal func mutate(autofocus value: String) -> Self {
+ internal func mutate(autofocus value: AttributeData) -> Self {
return self.mutate(key: "autofocus", value: value)
}
}
@@ -405,14 +397,14 @@ public protocol AutoplayAttribute: Attribute {
extension AutoplayAttribute where Self: ContentNode {
- internal func mutate(autoplay value: String) -> Self {
+ internal func mutate(autoplay value: AttributeData) -> Self {
return self.mutate(key: "autoplay", value: value)
}
}
extension AutoplayAttribute where Self: EmptyNode {
- internal func mutate(autoplay value: String) -> Self {
+ internal func mutate(autoplay value: AttributeData) -> Self {
return self.mutate(key: "autoplay", value: value)
}
}
@@ -436,14 +428,14 @@ public protocol CharsetAttribute: Attribute {
extension CharsetAttribute where Self: ContentNode {
- internal func mutate(charset value: String) -> Self {
+ internal func mutate(charset value: AttributeData) -> Self {
return self.mutate(key: "charset", value: value)
}
}
extension CharsetAttribute where Self: EmptyNode {
- internal func mutate(charset value: String) -> Self {
+ internal func mutate(charset value: AttributeData) -> Self {
return self.mutate(key: "charset", value: value)
}
}
@@ -468,14 +460,14 @@ public protocol CheckedAttribute: Attribute {
extension CheckedAttribute where Self: ContentNode {
- internal func mutate(checked value: String) -> Self {
+ internal func mutate(checked value: AttributeData) -> Self {
return self.mutate(key: "checked", value: value)
}
}
extension CheckedAttribute where Self: EmptyNode {
- internal func mutate(checked value: String) -> Self {
+ internal func mutate(checked value: AttributeData) -> Self {
return self.mutate(key: "checked", value: value)
}
}
@@ -501,14 +493,14 @@ public protocol CiteAttribute: Attribute {
extension CiteAttribute where Self: ContentNode {
- internal func mutate(cite value: String) -> Self {
+ internal func mutate(cite value: AttributeData) -> Self {
return self.mutate(key: "cite", value: value)
}
}
extension CiteAttribute where Self: EmptyNode {
- internal func mutate(cite value: String) -> Self {
+ internal func mutate(cite value: AttributeData) -> Self {
return self.mutate(key: "cite", value: value)
}
}
@@ -534,14 +526,14 @@ public protocol ClassAttribute: Attribute{
extension ClassAttribute where Self: ContentNode {
- internal func mutate(class value: String) -> Self {
+ internal func mutate(class value: AttributeData) -> Self {
return self.mutate(key: "class", value: value)
}
}
extension ClassAttribute where Self: EmptyNode {
- internal func mutate(class value: String) -> Self {
+ internal func mutate(class value: AttributeData) -> Self {
return self.mutate(key: "class", value: value)
}
}
@@ -567,14 +559,14 @@ public protocol ColumnsAttribute: Attribute {
extension ColumnsAttribute where Self: ContentNode {
- internal func mutate(cols value: Int) -> Self {
+ internal func mutate(cols value: AttributeData) -> Self {
return self.mutate(key: "cols", value: value)
}
}
extension ColumnsAttribute where Self: EmptyNode {
- internal func mutate(cols value: Int) -> Self {
+ internal func mutate(cols value: AttributeData) -> Self {
return self.mutate(key: "cols", value: value)
}
}
@@ -601,14 +593,14 @@ public protocol ColumnSpanAttribute: Attribute {
extension ColumnSpanAttribute where Self: ContentNode {
- internal func mutate(colspan value: Int) -> Self {
+ internal func mutate(colspan value: AttributeData) -> Self {
return self.mutate(key: "colspan", value: value)
}
}
extension ColumnSpanAttribute where Self: EmptyNode {
- internal func mutate(colspan value: Int) -> Self {
+ internal func mutate(colspan value: AttributeData) -> Self {
return self.mutate(key: "colspan", value: value)
}
}
@@ -660,22 +652,14 @@ public protocol ContentAttribute: Attribute {
extension ContentAttribute where Self: ContentNode {
- internal func mutate(content value: String) -> Self {
- return self.mutate(key: "content", value: value)
- }
-
- internal func mutate(content value: LocalizedString) -> Self {
+ internal func mutate(content value: AttributeData) -> Self {
return self.mutate(key: "content", value: value)
}
}
extension ContentAttribute where Self: EmptyNode {
- internal func mutate(content value: String) -> Self {
- return self.mutate(key: "content", value: value)
- }
-
- internal func mutate(content value: LocalizedString) -> Self {
+ internal func mutate(content value: AttributeData) -> Self {
return self.mutate(key: "content", value: value)
}
}
@@ -701,14 +685,14 @@ public protocol EditAttribute: Attribute {
extension EditAttribute where Self: ContentNode {
- internal func mutate(contenteditable value: Bool) -> Self {
+ internal func mutate(contenteditable value: AttributeData) -> Self {
return self.mutate(key: "contenteditable", value: value)
}
}
extension EditAttribute where Self: EmptyNode {
- internal func mutate(contenteditable value: Bool) -> Self {
+ internal func mutate(contenteditable value: AttributeData) -> Self {
return self.mutate(key: "contenteditable", value: value)
}
}
@@ -732,14 +716,14 @@ public protocol ControlsAttribute: Attribute {
extension ControlsAttribute where Self: ContentNode {
- internal func mutate(controls value: String) -> Self {
+ internal func mutate(controls value: AttributeData) -> Self {
return self.mutate(key: "controls", value: value)
}
}
extension ControlsAttribute where Self: EmptyNode {
- internal func mutate(controls value: String) -> Self {
+ internal func mutate(controls value: AttributeData) -> Self {
return self.mutate(key: "controls", value: value)
}
}
@@ -764,14 +748,14 @@ public protocol CoordinatesAttribute: Attribute {
extension CoordinatesAttribute where Self: ContentNode {
- internal func mutate(coords value: String) -> Self {
+ internal func mutate(coords value: AttributeData) -> Self {
return self.mutate(key: "coords", value: value)
}
}
extension CoordinatesAttribute where Self: EmptyNode {
- internal func mutate(coords value: String) -> Self {
+ internal func mutate(coords value: AttributeData) -> Self {
return self.mutate(key: "coords", value: value)
}
}
@@ -796,14 +780,14 @@ public protocol CrossOriginAttribute: Attribute {
extension CrossOriginAttribute where Self: ContentNode {
- internal func mutate(crossorigin value: String) -> Self {
+ internal func mutate(crossorigin value: AttributeData) -> Self {
return self.mutate(key: "crossorigin", value: value)
}
}
extension CrossOriginAttribute where Self: EmptyNode {
- internal func mutate(crossorigin value: String) -> Self {
+ internal func mutate(crossorigin value: AttributeData) -> Self {
return self.mutate(key: "crossorigin", value: value)
}
}
@@ -828,14 +812,14 @@ public protocol DataAttribute: Attribute{
extension DataAttribute where Self: ContentNode {
- internal func mutate(data value: String) -> Self {
+ internal func mutate(data value: AttributeData) -> Self {
return self.mutate(key: "data", value: value)
}
}
extension DataAttribute where Self: EmptyNode {
- internal func mutate(data value: String) -> Self {
+ internal func mutate(data value: AttributeData) -> Self {
return self.mutate(key: "data", value: value)
}
}
@@ -861,14 +845,14 @@ public protocol DateTimeAttribute: Attribute {
extension DateTimeAttribute where Self: ContentNode {
- internal func mutate(datetime value: String) -> Self {
+ internal func mutate(datetime value: AttributeData) -> Self {
return self.mutate(key: "datetime", value: value)
}
}
extension DateTimeAttribute where Self: EmptyNode {
- internal func mutate(datetime value: String) -> Self {
+ internal func mutate(datetime value: AttributeData) -> Self {
return self.mutate(key: "datetime", value: value)
}
}
@@ -890,14 +874,14 @@ public protocol DefaultAttribute: Attribute {
extension DefaultAttribute where Self: ContentNode {
- internal func mutate(default value: String) -> Self {
+ internal func mutate(default value: AttributeData) -> Self {
return self.mutate(key: "default", value: value)
}
}
extension DefaultAttribute where Self: EmptyNode {
- internal func mutate(default value: String) -> Self {
+ internal func mutate(default value: AttributeData) -> Self {
return self.mutate(key: "default", value: value)
}
}
@@ -921,14 +905,14 @@ public protocol DeferAttribute: Attribute {
extension DeferAttribute where Self: ContentNode {
- internal func mutate(defer value: String) -> Self {
+ internal func mutate(defer value: AttributeData) -> Self {
return self.mutate(key: "defer", value: value)
}
}
extension DeferAttribute where Self: EmptyNode {
- internal func mutate(defer value: String) -> Self {
+ internal func mutate(defer value: AttributeData) -> Self {
return self.mutate(key: "defer", value: value)
}
}
@@ -954,14 +938,14 @@ public protocol DirectionAttribute: Attribute {
extension DirectionAttribute where Self: ContentNode {
- internal func mutate(dir value: String) -> Self {
+ internal func mutate(dir value: AttributeData) -> Self {
return self.mutate(key: "dir", value: value)
}
}
extension DirectionAttribute where Self: EmptyNode {
- internal func mutate(dir value: String) -> Self {
+ internal func mutate(dir value: AttributeData) -> Self {
return self.mutate(key: "dir", value: value)
}
}
@@ -985,14 +969,14 @@ public protocol DisabledAttribute: Attribute {
extension DisabledAttribute where Self: ContentNode {
- internal func mutate(disabled value: String) -> Self {
+ internal func mutate(disabled value: AttributeData) -> Self {
return self.mutate(key: "disabled", value: value)
}
}
extension DisabledAttribute where Self: EmptyNode {
- internal func mutate(disabled value: String) -> Self {
+ internal func mutate(disabled value: AttributeData) -> Self {
return self.mutate(key: "disabled", value: value)
}
}
@@ -1016,14 +1000,14 @@ public protocol DownloadAttribute: Attribute {
extension DownloadAttribute where Self: ContentNode {
- internal func mutate(download value: String) -> Self {
+ internal func mutate(download value: AttributeData) -> Self {
return self.mutate(key: "download", value: value)
}
}
extension DownloadAttribute where Self: EmptyNode {
- internal func mutate(download value: String) -> Self {
+ internal func mutate(download value: AttributeData) -> Self {
return self.mutate(key: "download", value: value)
}
}
@@ -1049,14 +1033,14 @@ public protocol DragAttribute: Attribute {
extension DragAttribute where Self: ContentNode {
- internal func mutate(draggable value: Bool) -> Self {
+ internal func mutate(draggable value: AttributeData) -> Self {
return self.mutate(key: "draggable", value: value)
}
}
extension DragAttribute where Self: EmptyNode {
- internal func mutate(draggable value: Bool) -> Self {
+ internal func mutate(draggable value: AttributeData) -> Self {
return self.mutate(key: "draggable", value: value)
}
}
@@ -1081,14 +1065,14 @@ public protocol EncodingAttribute: Attribute {
extension EncodingAttribute where Self: ContentNode {
- internal func mutate(enctype value: String) -> Self {
+ internal func mutate(enctype value: AttributeData) -> Self {
return self.mutate(key: "enctype", value: value)
}
}
extension EncodingAttribute where Self: EmptyNode {
- internal func mutate(enctype value: String) -> Self {
+ internal func mutate(enctype value: AttributeData) -> Self {
return self.mutate(key: "enctype", value: value)
}
}
@@ -1113,14 +1097,14 @@ public protocol EnterKeyAttribute: Attribute {
extension EnterKeyAttribute where Self: ContentNode {
- internal func mutate(enterkeyhint value: String) -> Self {
+ internal func mutate(enterkeyhint value: AttributeData) -> Self {
return self.mutate(key: "enterkeyhint", value: value)
}
}
extension EnterKeyAttribute where Self: EmptyNode {
- internal func mutate(enterkeyhint value: String) -> Self {
+ internal func mutate(enterkeyhint value: AttributeData) -> Self {
return self.mutate(key: "enterkeyhint", value: value)
}
}
@@ -1146,14 +1130,14 @@ public protocol ForAttribute: Attribute {
extension ForAttribute where Self: ContentNode {
- internal func mutate(for value: String) -> Self {
+ internal func mutate(for value: AttributeData) -> Self {
return self.mutate(key: "for", value: value)
}
}
extension ForAttribute where Self: EmptyNode {
- internal func mutate(for value: String) -> Self {
+ internal func mutate(for value: AttributeData) -> Self {
return self.mutate(key: "for", value: value)
}
}
@@ -1179,14 +1163,14 @@ public protocol FormAttribute: Attribute {
extension FormAttribute where Self: ContentNode {
- internal func mutate(form value: String) -> Self {
+ internal func mutate(form value: AttributeData) -> Self {
return self.mutate(key: "form", value: value)
}
}
extension FormAttribute where Self: EmptyNode {
- internal func mutate(form value: String) -> Self {
+ internal func mutate(form value: AttributeData) -> Self {
return self.mutate(key: "form", value: value)
}
}
@@ -1216,14 +1200,14 @@ public protocol FormActionAttribute: Attribute {
extension FormActionAttribute where Self: ContentNode {
- internal func mutate(formaction value: String) -> Self {
+ internal func mutate(formaction value: AttributeData) -> Self {
return self.mutate(key: "formaction", value: value)
}
}
extension FormActionAttribute where Self: EmptyNode {
- internal func mutate(formaction value: String) -> Self {
+ internal func mutate(formaction value: AttributeData) -> Self {
return self.mutate(key: "formaction", value: value)
}
}
@@ -1247,14 +1231,14 @@ public protocol EquivalentAttribute: Attribute {
extension EquivalentAttribute where Self: ContentNode {
- internal func mutate(httpequiv value: String) -> Self {
+ internal func mutate(httpequiv value: AttributeData) -> Self {
return self.mutate(key: "http-equiv", value: value)
}
}
extension EquivalentAttribute where Self: EmptyNode {
- internal func mutate(httpequiv value: String) -> Self {
+ internal func mutate(httpequiv value: AttributeData) -> Self {
return self.mutate(key: "http-equiv", value: value)
}
}
@@ -1294,14 +1278,14 @@ public protocol HeadersAttribute: Attribute {
extension HeadersAttribute where Self: ContentNode {
- internal func mutate(headers value: String) -> Self {
+ internal func mutate(headers value: AttributeData) -> Self {
return self.mutate(key: "headers", value: value)
}
}
extension HeadersAttribute where Self: EmptyNode {
- internal func mutate(headers value: String) -> Self {
+ internal func mutate(headers value: AttributeData) -> Self {
return self.mutate(key: "headers", value: value)
}
}
@@ -1325,14 +1309,14 @@ public protocol HeightAttribute: Attribute {
extension HeightAttribute where Self: ContentNode {
- internal func mutate(height value: Int) -> Self {
+ internal func mutate(height value: AttributeData) -> Self {
return self.mutate(key: "height", value: value)
}
}
extension HeightAttribute where Self: EmptyNode {
- internal func mutate(height value: Int) -> Self {
+ internal func mutate(height value: AttributeData) -> Self {
return self.mutate(key: "height", value: value)
}
}
@@ -1358,14 +1342,14 @@ public protocol HiddenAttribute: Attribute {
extension HiddenAttribute where Self: ContentNode {
- internal func mutate(hidden value: String) -> Self {
+ internal func mutate(hidden value: AttributeData) -> Self {
return self.mutate(key: "hidden", value: value)
}
}
extension HiddenAttribute where Self: EmptyNode {
- internal func mutate(hidden value: String) -> Self {
+ internal func mutate(hidden value: AttributeData) -> Self {
return self.mutate(key: "hidden", value: value)
}
}
@@ -1390,14 +1374,14 @@ public protocol HighAttribute: Attribute {
extension HighAttribute where Self: ContentNode {
- internal func mutate(high value: Float) -> Self {
+ internal func mutate(high value: AttributeData) -> Self {
return self.mutate(key: "high", value: value)
}
}
extension HighAttribute where Self: EmptyNode {
- internal func mutate(high value: Float) -> Self {
+ internal func mutate(high value: AttributeData) -> Self {
return self.mutate(key: "high", value: value)
}
}
@@ -1423,14 +1407,14 @@ public protocol ReferenceAttribute: Attribute {
extension ReferenceAttribute where Self: ContentNode {
- internal func mutate(href value: String) -> Self {
+ internal func mutate(href value: AttributeData) -> Self {
return self.mutate(key: "href", value: value)
}
}
extension ReferenceAttribute where Self: EmptyNode {
- internal func mutate(href value: String) -> Self {
+ internal func mutate(href value: AttributeData) -> Self {
return self.mutate(key: "href", value: value)
}
}
@@ -1456,14 +1440,14 @@ public protocol ReferenceLanguageAttribute: Attribute {
extension ReferenceLanguageAttribute where Self: ContentNode {
- internal func mutate(hreflang value: String) -> Self {
+ internal func mutate(hreflang value: AttributeData) -> Self {
return self.mutate(key: "hreflang", value: value)
}
}
extension ReferenceLanguageAttribute where Self: EmptyNode {
- internal func mutate(hreflang value: String) -> Self {
+ internal func mutate(hreflang value: AttributeData) -> Self {
return self.mutate(key: "hreflang", value: value)
}
}
@@ -1488,14 +1472,14 @@ public protocol IdentifierAttribute: Attribute {
extension IdentifierAttribute where Self: ContentNode {
- internal func mutate(id value: String) -> Self {
+ internal func mutate(id value: AttributeData) -> Self {
return self.mutate(key: "id", value: value)
}
}
extension IdentifierAttribute where Self: EmptyNode {
- internal func mutate(id value: String) -> Self {
+ internal func mutate(id value: AttributeData) -> Self {
return self.mutate(key: "id", value: value)
}
}
@@ -1522,14 +1506,14 @@ public protocol IsMapAttribute: Attribute {
extension IsMapAttribute where Self: ContentNode {
- internal func mutate(ismap value: String) -> Self {
+ internal func mutate(ismap value: AttributeData) -> Self {
return self.mutate(key: "ismap", value: value)
}
}
extension IsMapAttribute where Self: EmptyNode {
- internal func mutate(ismap value: String) -> Self {
+ internal func mutate(ismap value: AttributeData) -> Self {
return self.mutate(key: "ismap", value: value)
}
}
@@ -1551,14 +1535,14 @@ public protocol InputModeAttribute: Attribute {
extension InputModeAttribute where Self: ContentNode {
- internal func mutate(inputmode value: String) -> Self {
+ internal func mutate(inputmode value: AttributeData) -> Self {
return self.mutate(key: "inputmode", value: value)
}
}
extension InputModeAttribute where Self: EmptyNode {
- internal func mutate(inputmode value: String) -> Self {
+ internal func mutate(inputmode value: AttributeData) -> Self {
return self.mutate(key: "inputmode", value: value)
}
}
@@ -1596,14 +1580,14 @@ public protocol IntegrityAttribute: Attribute {
extension IntegrityAttribute where Self: ContentNode {
- internal func mutate(integrity value: String) -> Self {
+ internal func mutate(integrity value: AttributeData) -> Self {
return self.mutate(key: "integrity", value: value)
}
}
extension IntegrityAttribute where Self: EmptyNode {
- internal func mutate(integrity value: String) -> Self {
+ internal func mutate(integrity value: AttributeData) -> Self {
return self.mutate(key: "integrity", value: value)
}
}
@@ -1629,14 +1613,14 @@ public protocol IsAttribute: Attribute {
extension IsAttribute where Self: ContentNode {
- internal func mutate(is value: String) -> Self {
+ internal func mutate(is value: AttributeData) -> Self {
return self.mutate(key: "is", value: value)
}
}
extension IsAttribute where Self: EmptyNode {
- internal func mutate(is value: String) -> Self {
+ internal func mutate(is value: AttributeData) -> Self {
return self.mutate(key: "is", value: value)
}
}
@@ -1680,69 +1664,39 @@ public protocol ItemAttribute: Attribute {
extension ItemAttribute where Self: ContentNode {
- internal func mutate(itemscope value: String) -> Self {
+ internal func mutate(itemscope value: AttributeData) -> Self {
return self.mutate(key: "itemscope", value: value)
}
- internal func mutate(itemid value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "itemid", value: value)
- }
-
- return self
+ internal func mutate(itemid value: AttributeData) -> Self {
+ return self.mutate(key: "itemid", value: value)
}
- internal func mutate(itemtype value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "itemtype", value: value)
- }
-
- return self
+ internal func mutate(itemtype value: AttributeData) -> Self {
+ return self.mutate(key: "itemtype", value: value)
}
- internal func mutate(itemref value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "itemref", value: value)
- }
-
- return self
+ internal func mutate(itemref value: AttributeData) -> Self {
+ return self.mutate(key: "itemref", value: value)
}
}
extension ItemAttribute where Self: EmptyNode {
- internal func mutate(itemscope value: String) -> Self {
+ internal func mutate(itemscope value: AttributeData) -> Self {
return self.mutate(key: "itemscope", value: value)
}
- internal func mutate(itemid value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "itemid", value: value)
- }
-
- return self
+ internal func mutate(itemid value: AttributeData) -> Self {
+ return self.mutate(key: "itemid", value: value)
}
- internal func mutate(itemtype value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "itemtype", value: value)
- }
-
- return self
+ internal func mutate(itemtype value: AttributeData) -> Self {
+ return self.mutate(key: "itemtype", value: value)
}
- internal func mutate(itemref value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "itemref", value: value)
- }
-
- return self
+ internal func mutate(itemref value: AttributeData) -> Self {
+ return self.mutate(key: "itemref", value: value)
}
}
@@ -1767,14 +1721,14 @@ public protocol ItemPropertyAttribute: Attribute {
extension ItemPropertyAttribute where Self: ContentNode {
- internal func mutate(itemprop value: String) -> Self {
+ internal func mutate(itemprop value: AttributeData) -> Self {
return self.mutate(key: "itemprop", value: value)
}
}
extension ItemPropertyAttribute where Self: EmptyNode {
- internal func mutate(itemprop value: String) -> Self {
+ internal func mutate(itemprop value: AttributeData) -> Self {
return self.mutate(key: "itemprop", value: value)
}
}
@@ -1799,14 +1753,14 @@ public protocol KindAttribute: Attribute {
extension KindAttribute where Self: ContentNode {
- internal func mutate(kind value: String) -> Self {
+ internal func mutate(kind value: AttributeData) -> Self {
return self.mutate(key: "kind", value: value)
}
}
extension KindAttribute where Self: EmptyNode {
- internal func mutate(kind value: String) -> Self {
+ internal func mutate(kind value: AttributeData) -> Self {
return self.mutate(key: "kind", value: value)
}
}
@@ -1861,22 +1815,14 @@ public protocol LabelAttribute: Attribute {
extension LabelAttribute where Self: ContentNode {
- internal func mutate(label value: String) -> Self {
- return self.mutate(key: "label", value: value)
- }
-
- internal func mutate(label value: LocalizedString) -> Self {
+ internal func mutate(label value: AttributeData) -> Self {
return self.mutate(key: "label", value: value)
}
}
extension LabelAttribute where Self: EmptyNode {
- internal func mutate(label value: String) -> Self {
- return self.mutate(key: "label", value: value)
- }
-
- internal func mutate(label value: LocalizedString) -> Self {
+ internal func mutate(label value: AttributeData) -> Self {
return self.mutate(key: "label", value: value)
}
}
@@ -1902,14 +1848,14 @@ public protocol LanguageAttribute: Attribute {
extension LanguageAttribute where Self: ContentNode {
- internal func mutate(lang value: String) -> Self {
+ internal func mutate(lang value: AttributeData) -> Self {
return self.mutate(key: "lang", value: value)
}
}
extension LanguageAttribute where Self: EmptyNode {
- internal func mutate(lang value: String) -> Self {
+ internal func mutate(lang value: AttributeData) -> Self {
return self.mutate(key: "lang", value: value)
}
}
@@ -1933,14 +1879,14 @@ public protocol ListAttribute: Attribute {
extension ListAttribute where Self: ContentNode {
- internal func mutate(list value: String) -> Self {
+ internal func mutate(list value: AttributeData) -> Self {
return self.mutate(key: "list", value: value)
}
}
extension ListAttribute where Self: EmptyNode {
- internal func mutate(list value: String) -> Self {
+ internal func mutate(list value: AttributeData) -> Self {
return self.mutate(key: "list", value: value)
}
}
@@ -1967,14 +1913,14 @@ public protocol LoopAttribute: Attribute {
extension LoopAttribute where Self: ContentNode {
- internal func mutate(loop value: String) -> Self {
+ internal func mutate(loop value: AttributeData) -> Self {
return self.mutate(key: "loop", value: value)
}
}
extension LoopAttribute where Self: EmptyNode {
- internal func mutate(loop value: String) -> Self {
+ internal func mutate(loop value: AttributeData) -> Self {
return self.mutate(key: "loop", value: value)
}
}
@@ -1999,14 +1945,14 @@ public protocol LowAttribute: Attribute {
extension LowAttribute where Self: ContentNode {
- internal func mutate(low value: Float) -> Self {
+ internal func mutate(low value: AttributeData) -> Self {
return self.mutate(key: "low", value: value)
}
}
extension LowAttribute where Self: EmptyNode {
- internal func mutate(low value: Float) -> Self {
+ internal func mutate(low value: AttributeData) -> Self {
return self.mutate(key: "low", value: value)
}
}
@@ -2031,14 +1977,14 @@ public protocol MaximumValueAttribute: Attribute {
extension MaximumValueAttribute where Self: ContentNode {
- internal func mutate(max value: MaximumValueType) -> Self {
+ internal func mutate(max value: AttributeData) -> Self {
return self.mutate(key: "max", value: value)
}
}
extension MaximumValueAttribute where Self: EmptyNode {
- internal func mutate(max value: MaximumValueType) -> Self {
+ internal func mutate(max value: AttributeData) -> Self {
return self.mutate(key: "max", value: value)
}
}
@@ -2064,14 +2010,14 @@ public protocol MaximumLengthAttribute: Attribute {
extension MaximumLengthAttribute where Self: ContentNode {
- internal func mutate(maxlength value: Int) -> Self {
+ internal func mutate(maxlength value: AttributeData) -> Self {
return self.mutate(key: "maxlength", value: value)
}
}
extension MaximumLengthAttribute where Self: EmptyNode {
- internal func mutate(maxlength value: Int) -> Self {
+ internal func mutate(maxlength value: AttributeData) -> Self {
return self.mutate(key: "maxlength", value: value)
}
}
@@ -2116,14 +2062,14 @@ public protocol MediaAttribute: Attribute {
extension MediaAttribute where Self: ContentNode {
- internal func mutate(media value: String) -> Self {
+ internal func mutate(media value: AttributeData) -> Self {
return self.mutate(key: "media", value: value)
}
}
extension MediaAttribute where Self: EmptyNode {
- internal func mutate(media value: String) -> Self {
+ internal func mutate(media value: AttributeData) -> Self {
return self.mutate(key: "media", value: value)
}
}
@@ -2148,14 +2094,14 @@ public protocol MethodAttribute: Attribute {
extension MethodAttribute where Self: ContentNode {
- internal func mutate(method value: String) -> Self {
+ internal func mutate(method value: AttributeData) -> Self {
return self.mutate(key: "method", value: value)
}
}
extension MethodAttribute where Self: EmptyNode {
- internal func mutate(method value: String) -> Self {
+ internal func mutate(method value: AttributeData) -> Self {
return self.mutate(key: "method", value: value)
}
}
@@ -2181,14 +2127,14 @@ public protocol MinimumValueAttribute: Attribute {
extension MinimumValueAttribute where Self: ContentNode {
- internal func mutate(min value: MinimumValueType) -> Self {
+ internal func mutate(min value: AttributeData) -> Self {
return self.mutate(key: "min", value: value)
}
}
extension MinimumValueAttribute where Self: EmptyNode {
- internal func mutate(min value: MinimumValueType) -> Self {
+ internal func mutate(min value: AttributeData) -> Self {
return self.mutate(key: "min", value: value)
}
}
@@ -2213,14 +2159,14 @@ public protocol MinimumLengthAttribute: Attribute {
extension MinimumLengthAttribute where Self: ContentNode {
- internal func mutate(minlength value: Int) -> Self {
+ internal func mutate(minlength value: AttributeData) -> Self {
return self.mutate(key: "minlength", value: value)
}
}
extension MinimumLengthAttribute where Self: EmptyNode {
- internal func mutate(minlength value: Int) -> Self {
+ internal func mutate(minlength value: AttributeData) -> Self {
return self.mutate(key: "minlength", value: value)
}
}
@@ -2245,14 +2191,14 @@ public protocol MultipleAttribute: Attribute {
extension MultipleAttribute where Self: ContentNode {
- internal func mutate(multiple value: String) -> Self {
+ internal func mutate(multiple value: AttributeData) -> Self {
return self.mutate(key: "multiple", value: value)
}
}
extension MultipleAttribute where Self: EmptyNode {
- internal func mutate(multiple value: String) -> Self {
+ internal func mutate(multiple value: AttributeData) -> Self {
return self.mutate(key: "multiple", value: value)
}
}
@@ -2276,14 +2222,14 @@ public protocol MutedAttribute: Attribute {
extension MutedAttribute where Self: ContentNode {
- internal func mutate(muted value: String) -> Self {
+ internal func mutate(muted value: AttributeData) -> Self {
return self.mutate(key: "muted", value: value)
}
}
extension MutedAttribute where Self: EmptyNode {
- internal func mutate(muted value: String) -> Self {
+ internal func mutate(muted value: AttributeData) -> Self {
return self.mutate(key: "muted", value: value)
}
}
@@ -2311,14 +2257,14 @@ public protocol NameAttribute: Attribute {
extension NameAttribute where Self: ContentNode {
- internal func mutate(name value: String) -> Self {
+ internal func mutate(name value: AttributeData) -> Self {
return self.mutate(key: "name", value: value)
}
}
extension NameAttribute where Self: EmptyNode {
- internal func mutate(name value: String) -> Self {
+ internal func mutate(name value: AttributeData) -> Self {
return self.mutate(key: "name", value: value)
}
}
@@ -2344,14 +2290,14 @@ public protocol NonceAttribute: Attribute {
extension NonceAttribute where Self: ContentNode {
- internal func mutate(nonce value: String) -> Self {
+ internal func mutate(nonce value: AttributeData) -> Self {
return self.mutate(key: "nonce" , value: value)
}
}
extension NonceAttribute where Self: EmptyNode {
- internal func mutate(nonce value: String) -> Self {
+ internal func mutate(nonce value: AttributeData) -> Self {
return self.mutate(key: "nonce" , value: value)
}
}
@@ -2372,14 +2318,14 @@ public protocol NoValidateAttribute: Attribute {
extension NoValidateAttribute where Self: ContentNode {
- internal func mutate(novalidate value: String) -> Self {
+ internal func mutate(novalidate value: AttributeData) -> Self {
return self.mutate(key: "novalidate", value: value)
}
}
extension NoValidateAttribute where Self: EmptyNode {
- internal func mutate(novalidate value: String) -> Self {
+ internal func mutate(novalidate value: AttributeData) -> Self {
return self.mutate(key: "novalidate", value: value)
}
}
@@ -2410,14 +2356,14 @@ public protocol OpenAttribute: Attribute {
extension OpenAttribute where Self: ContentNode {
- internal func mutate(open value: String) -> Self {
+ internal func mutate(open value: AttributeData) -> Self {
return self.mutate(key: "open", value: value)
}
}
extension OpenAttribute where Self: EmptyNode {
- internal func mutate(open value: String) -> Self {
+ internal func mutate(open value: AttributeData) -> Self {
return self.mutate(key: "open", value: value)
}
}
@@ -2442,14 +2388,14 @@ public protocol OptimumAttribute: Attribute {
extension OptimumAttribute where Self: ContentNode {
- internal func mutate(optimum value: Float) -> Self {
+ internal func mutate(optimum value: AttributeData) -> Self {
return self.mutate(key: "optimum", value: value)
}
}
extension OptimumAttribute where Self: EmptyNode {
- internal func mutate(optimum value: Float) -> Self {
+ internal func mutate(optimum value: AttributeData) -> Self {
return self.mutate(key: "optimum", value: value)
}
}
@@ -2475,14 +2421,14 @@ public protocol PatternAttribute: Attribute {
extension PatternAttribute where Self: ContentNode {
- internal func mutate(pattern value: String) -> Self {
+ internal func mutate(pattern value: AttributeData) -> Self {
return self.mutate(key: "pattern", value: value)
}
}
extension PatternAttribute where Self: EmptyNode {
- internal func mutate(pattern value: String) -> Self {
+ internal func mutate(pattern value: AttributeData) -> Self {
return self.mutate(key: "pattern", value: value)
}
}
@@ -2509,14 +2455,14 @@ public protocol PartAttribute: Attribute {
extension PartAttribute where Self: ContentNode {
- internal func mutate(part value: String) -> Self {
+ internal func mutate(part value: AttributeData) -> Self {
return self.mutate(key: "part", value: value)
}
}
extension PartAttribute where Self: EmptyNode {
- internal func mutate(part value: String) -> Self {
+ internal func mutate(part value: AttributeData) -> Self {
return self.mutate(key: "part", value: value)
}
}
@@ -2543,14 +2489,14 @@ public protocol PingAttribute: Attribute {
extension PingAttribute where Self: ContentNode {
- internal func mutate(ping value: String) -> Self {
+ internal func mutate(ping value: AttributeData) -> Self {
return self.mutate(key: "ping", value: value)
}
}
extension PingAttribute where Self: EmptyNode {
- internal func mutate(ping value: String) -> Self {
+ internal func mutate(ping value: AttributeData) -> Self {
return self.mutate(key: "ping", value: value)
}
}
@@ -2599,22 +2545,14 @@ public protocol PlaceholderAttribute: Attribute {
extension PlaceholderAttribute where Self: ContentNode {
- internal func mutate(placeholder value: String) -> Self {
- return self.mutate(key: "placeholder", value: value)
- }
-
- internal func mutate(placeholder value: LocalizedString) -> Self {
+ internal func mutate(placeholder value: AttributeData) -> Self {
return self.mutate(key: "placeholder", value: value)
}
}
extension PlaceholderAttribute where Self: EmptyNode {
- internal func mutate(placeholder value: String) -> Self {
- return self.mutate(key: "placeholder", value: value)
- }
-
- internal func mutate(placeholder value: LocalizedString) -> Self {
+ internal func mutate(placeholder value: AttributeData) -> Self {
return self.mutate(key: "placeholder", value: value)
}
}
@@ -2640,14 +2578,14 @@ public protocol PosterAttribute: Attribute {
extension PosterAttribute where Self: ContentNode {
- internal func mutate(poster value: String) -> Self {
+ internal func mutate(poster value: AttributeData) -> Self {
return self.mutate(key: "poster", value: value)
}
}
extension PosterAttribute where Self: EmptyNode {
- internal func mutate(poster value: String) -> Self {
+ internal func mutate(poster value: AttributeData) -> Self {
return self.mutate(key: "poster", value: value)
}
}
@@ -2674,14 +2612,14 @@ public protocol PlaysInlineAttribute: Attribute {
extension PlaysInlineAttribute where Self: ContentNode {
- internal func mutate(playsinline value: String) -> Self {
+ internal func mutate(playsinline value: AttributeData) -> Self {
return self.mutate(key: "playsinline", value: value)
}
}
extension PlaysInlineAttribute where Self: EmptyNode {
- internal func mutate(playsinline value: String) -> Self {
+ internal func mutate(playsinline value: AttributeData) -> Self {
return self.mutate(key: "playsinline", value: value)
}
}
@@ -2709,14 +2647,14 @@ public protocol PreloadAttribute: Attribute {
extension PreloadAttribute where Self: ContentNode {
- internal func mutate(preload value: String) -> Self {
+ internal func mutate(preload value: AttributeData) -> Self {
return self.mutate(key: "preload", value: value)
}
}
extension PreloadAttribute where Self: EmptyNode {
- internal func mutate(preload value: String) -> Self {
+ internal func mutate(preload value: AttributeData) -> Self {
return self.mutate(key: "preload", value: value)
}
}
@@ -2740,14 +2678,14 @@ public protocol ReadOnlyAttribute: Attribute {
extension ReadOnlyAttribute where Self: ContentNode {
- internal func mutate(readonly value: String) -> Self {
+ internal func mutate(readonly value: AttributeData) -> Self {
return self.mutate(key: "readonly", value: value)
}
}
extension ReadOnlyAttribute where Self: EmptyNode {
- internal func mutate(readonly value: String) -> Self {
+ internal func mutate(readonly value: AttributeData) -> Self {
return self.mutate(key: "readonly", value: value)
}
}
@@ -2767,14 +2705,14 @@ public protocol ReferrerPolicyAttribute: Attribute {
extension ReferrerPolicyAttribute where Self: ContentNode {
- internal func mutate(referrerpolicy value: String) -> Self {
+ internal func mutate(referrerpolicy value: AttributeData) -> Self {
return self.mutate(key: "referrerpolicy", value: value)
}
}
extension ReferrerPolicyAttribute where Self: EmptyNode {
- internal func mutate(referrerpolicy value: String) -> Self {
+ internal func mutate(referrerpolicy value: AttributeData) -> Self {
return self.mutate(key: "referrerpolicy", value: value)
}
}
@@ -2801,14 +2739,14 @@ public protocol RelationshipAttribute: Attribute {
extension RelationshipAttribute where Self: ContentNode {
- internal func mutate(rel value: String) -> Self {
+ internal func mutate(rel value: AttributeData) -> Self {
return self.mutate(key: "rel", value: value)
}
}
extension RelationshipAttribute where Self: EmptyNode {
- internal func mutate(rel value: String) -> Self {
+ internal func mutate(rel value: AttributeData) -> Self {
return self.mutate(key: "rel", value: value)
}
}
@@ -2832,14 +2770,14 @@ public protocol RequiredAttribute: Attribute {
extension RequiredAttribute where Self: ContentNode {
- internal func mutate(required value: String) -> Self {
+ internal func mutate(required value: AttributeData) -> Self {
return self.mutate(key: "required", value: value)
}
}
extension RequiredAttribute where Self: EmptyNode {
- internal func mutate(required value: String) -> Self {
+ internal func mutate(required value: AttributeData) -> Self {
return self.mutate(key: "required", value: value)
}
}
@@ -2865,14 +2803,14 @@ public protocol ReversedAttribute: Attribute {
extension ReversedAttribute where Self: ContentNode {
- internal func mutate(reversed value: String) -> Self {
+ internal func mutate(reversed value: AttributeData) -> Self {
return self.mutate(key: "reversed", value: value)
}
}
extension ReversedAttribute where Self: EmptyNode {
- internal func mutate(reversed value: String) -> Self {
+ internal func mutate(reversed value: AttributeData) -> Self {
return self.mutate(key: "reversed", value: value)
}
}
@@ -2899,14 +2837,14 @@ public protocol RoleAttribute: Attribute {
extension RoleAttribute where Self: ContentNode {
- internal func mutate(role value: String) -> Self {
+ internal func mutate(role value: AttributeData) -> Self {
return self.mutate(key: "role", value: value)
}
}
extension RoleAttribute where Self: EmptyNode {
- internal func mutate(role value: String) -> Self {
+ internal func mutate(role value: AttributeData) -> Self {
return self.mutate(key: "role", value: value)
}
}
@@ -2932,14 +2870,14 @@ public protocol RowsAttribute: Attribute {
extension RowsAttribute where Self: ContentNode {
- internal func mutate(rows value: Int) -> Self {
+ internal func mutate(rows value: AttributeData) -> Self {
return self.mutate(key: "rows", value: value)
}
}
extension RowsAttribute where Self: EmptyNode {
- internal func mutate(rows value: Int) -> Self {
+ internal func mutate(rows value: AttributeData) -> Self {
return self.mutate(key: "rows", value: value)
}
}
@@ -2967,14 +2905,14 @@ public protocol RowSpanAttribute: Attribute {
extension RowSpanAttribute where Self: ContentNode {
- internal func mutate(rowspan value: Int) -> Self {
+ internal func mutate(rowspan value: AttributeData) -> Self {
return self.mutate(key: "rowspan", value: value)
}
}
extension RowSpanAttribute where Self: EmptyNode {
- internal func mutate(rowspan value: Int) -> Self {
+ internal func mutate(rowspan value: AttributeData) -> Self {
return self.mutate(key: "rowspan", value: value)
}
}
@@ -3016,14 +2954,14 @@ public protocol SandboxAttribute: Attribute {
extension SandboxAttribute where Self: ContentNode {
- internal func mutate(sandbox value: String) -> Self {
+ internal func mutate(sandbox value: AttributeData) -> Self {
return self.mutate(key: "sandbox", value: value)
}
}
extension SandboxAttribute where Self: EmptyNode {
- internal func mutate(sandbox value: String) -> Self {
+ internal func mutate(sandbox value: AttributeData) -> Self {
return self.mutate(key: "sandbox", value: value)
}
}
@@ -3052,14 +2990,14 @@ public protocol ScopeAttribute: Attribute {
extension ScopeAttribute where Self: ContentNode {
- internal func mutate(scope value: String) -> Self {
+ internal func mutate(scope value: AttributeData) -> Self {
return self.mutate(key: "scope", value: value)
}
}
extension ScopeAttribute where Self: EmptyNode {
- internal func mutate(scope value: String) -> Self {
+ internal func mutate(scope value: AttributeData) -> Self {
return self.mutate(key: "scope", value: value)
}
}
@@ -3094,14 +3032,14 @@ public protocol ShapeAttribute: Attribute {
extension ShapeAttribute where Self: ContentNode {
- internal func mutate(shape value: String) -> Self {
+ internal func mutate(shape value: AttributeData) -> Self {
return self.mutate(key: "shape", value: value)
}
}
extension ShapeAttribute where Self: EmptyNode {
- internal func mutate(shape value: String) -> Self {
+ internal func mutate(shape value: AttributeData) -> Self {
return self.mutate(key: "shape", value: value)
}
}
@@ -3125,14 +3063,14 @@ public protocol SizeAttribute: Attribute {
extension SizeAttribute where Self: ContentNode {
- internal func mutate(size value: Int) -> Self {
+ internal func mutate(size value: AttributeData) -> Self {
return self.mutate(key: "size", value: value)
}
}
extension SizeAttribute where Self: EmptyNode {
- internal func mutate(size value: Int) -> Self {
+ internal func mutate(size value: AttributeData) -> Self {
return self.mutate(key: "size", value: value)
}
}
@@ -3158,14 +3096,14 @@ public protocol SizesAttribute: Attribute {
extension SizesAttribute where Self: ContentNode {
- internal func mutate(sizes value: String) -> Self {
+ internal func mutate(sizes value: AttributeData) -> Self {
return self.mutate(key: "sizes", value: value)
}
}
extension SizesAttribute where Self: EmptyNode {
- internal func mutate(sizes value: String) -> Self {
+ internal func mutate(sizes value: AttributeData) -> Self {
return self.mutate(key: "sizes", value: value)
}
}
@@ -3198,14 +3136,14 @@ public protocol SlotAttribute: Attribute {
extension SlotAttribute where Self: ContentNode {
- internal func mutate(slot value: String) -> Self {
+ internal func mutate(slot value: AttributeData) -> Self {
return self.mutate(key: "slot", value: value)
}
}
extension SlotAttribute where Self: EmptyNode {
- internal func mutate(slot value: String) -> Self {
+ internal func mutate(slot value: AttributeData) -> Self {
return self.mutate(key: "slot", value: value)
}
}
@@ -3229,14 +3167,14 @@ public protocol SpanAttribute: Attribute {
extension SpanAttribute where Self: ContentNode {
- internal func mutate(span value: Int) -> Self {
+ internal func mutate(span value: AttributeData) -> Self {
return self.mutate(key: "span", value: value)
}
}
extension SpanAttribute where Self: EmptyNode {
- internal func mutate(span value: Int) -> Self {
+ internal func mutate(span value: AttributeData) -> Self {
return self.mutate(key: "span", value: value)
}
}
@@ -3260,14 +3198,14 @@ public protocol SpellCheckAttribute: Attribute {
extension SpellCheckAttribute where Self: ContentNode {
- internal func mutate(spellcheck value: Bool) -> Self {
+ internal func mutate(spellcheck value: AttributeData) -> Self {
return self.mutate(key: "spellcheck", value: value)
}
}
extension SpellCheckAttribute where Self: EmptyNode {
- internal func mutate(spellcheck value: Bool) -> Self {
+ internal func mutate(spellcheck value: AttributeData) -> Self {
return self.mutate(key: "spellcheck", value: value)
}
}
@@ -3307,22 +3245,14 @@ public protocol SourceAttribute: Attribute {
extension SourceAttribute where Self: ContentNode {
- internal func mutate(source value: String) -> Self {
- return self.mutate(key: "src", value: value)
- }
-
- internal func mutate(source value: EnvironmentValue) -> Self {
+ internal func mutate(source value: AttributeData) -> Self {
return self.mutate(key: "src", value: value)
}
}
extension SourceAttribute where Self: EmptyNode {
- internal func mutate(source value: String) -> Self {
- return self.mutate(key: "src", value: value)
- }
-
- internal func mutate(source value: EnvironmentValue) -> Self {
+ internal func mutate(source value: AttributeData) -> Self {
return self.mutate(key: "src", value: value)
}
}
@@ -3347,14 +3277,14 @@ public protocol SourceDocumentAttribute: Attribute {
extension SourceDocumentAttribute where Self: ContentNode {
- internal func mutate(sourcedocument value: String) -> Self {
+ internal func mutate(sourcedocument value: AttributeData) -> Self {
return self.mutate(key: "srcdoc", value: value)
}
}
extension SourceDocumentAttribute where Self: EmptyNode {
- internal func mutate(sourcedocument value: String) -> Self {
+ internal func mutate(sourcedocument value: AttributeData) -> Self {
return self.mutate(key: "srcdoc", value: value)
}
}
@@ -3385,14 +3315,14 @@ public protocol SourceLanguageAttribute: Attribute {
extension SourceLanguageAttribute where Self: ContentNode {
- internal func mutate(sourcelanguage value: String) -> Self {
+ internal func mutate(sourcelanguage value: AttributeData) -> Self {
return self.mutate(key: "srclang", value: value)
}
}
extension SourceLanguageAttribute where Self: EmptyNode {
- internal func mutate(sourcelanguage value: String) -> Self {
+ internal func mutate(sourcelanguage value: AttributeData) -> Self {
return self.mutate(key: "srclang", value: value)
}
}
@@ -3420,14 +3350,14 @@ public protocol StartAttribute: Attribute {
extension StartAttribute where Self: ContentNode {
- internal func mutate(start value: Int) -> Self {
+ internal func mutate(start value: AttributeData) -> Self {
return self.mutate(key: "start", value: value)
}
}
extension StartAttribute where Self: EmptyNode {
- internal func mutate(start value: Int) -> Self {
+ internal func mutate(start value: AttributeData) -> Self {
return self.mutate(key: "start", value: value)
}
}
@@ -3452,14 +3382,14 @@ public protocol StepAttribute: Attribute {
extension StepAttribute where Self: ContentNode {
- internal func mutate(step value: Int) -> Self {
+ internal func mutate(step value: AttributeData) -> Self {
return self.mutate(key: "step", value: value)
}
}
extension StepAttribute where Self: EmptyNode {
- internal func mutate(step value: Int) -> Self {
+ internal func mutate(step value: AttributeData) -> Self {
return self.mutate(key: "step", value: value)
}
}
@@ -3485,22 +3415,14 @@ public protocol StyleAttribute: Attribute {
extension StyleAttribute where Self: ContentNode {
- internal func mutate(style value: String) -> Self {
- return self.mutate(key: "style", value: value)
- }
-
- internal func mutate(style value: TaintedString) -> Self {
+ internal func mutate(style value: AttributeData) -> Self {
return self.mutate(key: "style", value: value)
}
}
extension StyleAttribute where Self: EmptyNode {
- internal func mutate(style value: String) -> Self {
- return self.mutate(key: "style", value: value)
- }
-
- internal func mutate(style value: TaintedString) -> Self {
+ internal func mutate(style value: AttributeData) -> Self {
return self.mutate(key: "style", value: value)
}
}
@@ -3525,14 +3447,14 @@ public protocol TabulatorAttribute: Attribute {
extension TabulatorAttribute where Self: ContentNode {
- internal func mutate(tabindex value: Int) -> Self {
+ internal func mutate(tabindex value: AttributeData) -> Self {
return self.mutate(key: "tabindex", value: value)
}
}
extension TabulatorAttribute where Self: EmptyNode {
- internal func mutate(tabindex value: Int) -> Self {
+ internal func mutate(tabindex value: AttributeData) -> Self {
return self.mutate(key: "tabindex", value: value)
}
}
@@ -3559,14 +3481,14 @@ public protocol TargetAttribute: Attribute {
extension TargetAttribute where Self: ContentNode {
- internal func mutate(target value: String) -> Self {
+ internal func mutate(target value: AttributeData) -> Self {
return self.mutate(key: "target", value: value)
}
}
extension TargetAttribute where Self: EmptyNode {
- internal func mutate(target value: String) -> Self {
+ internal func mutate(target value: AttributeData) -> Self {
return self.mutate(key: "target", value: value)
}
}
@@ -3621,22 +3543,14 @@ public protocol TitleAttribute: Attribute {
extension TitleAttribute where Self: ContentNode {
- internal func mutate(title value: String) -> Self {
- return self.mutate(key: "title", value: value)
- }
-
- internal func mutate(title value: LocalizedString) -> Self {
+ internal func mutate(title value: AttributeData) -> Self {
return self.mutate(key: "title", value: value)
}
}
extension TitleAttribute where Self: EmptyNode {
- internal func mutate(title value: String) -> Self {
- return self.mutate(key: "title", value: value)
- }
-
- internal func mutate(title value: LocalizedString) -> Self {
+ internal func mutate(title value: AttributeData) -> Self {
return self.mutate(key: "title", value: value)
}
}
@@ -3662,14 +3576,14 @@ public protocol TranslateAttribute: Attribute {
extension TranslateAttribute where Self: ContentNode {
- internal func mutate(translate value: String) -> Self {
+ internal func mutate(translate value: AttributeData) -> Self {
return self.mutate(key: "translate", value: value)
}
}
extension TranslateAttribute where Self: EmptyNode {
- internal func mutate(translate value: String) -> Self {
+ internal func mutate(translate value: AttributeData) -> Self {
return self.mutate(key: "translate", value: value)
}
}
@@ -3695,14 +3609,14 @@ public protocol TypeAttribute: Attribute {
extension TypeAttribute where Self: ContentNode {
- internal func mutate(type value: String) -> Self {
+ internal func mutate(type value: AttributeData) -> Self {
return self.mutate(key: "type", value: value)
}
}
extension TypeAttribute where Self: EmptyNode {
- internal func mutate(type value: String) -> Self {
+ internal func mutate(type value: AttributeData) -> Self {
return self.mutate(key: "type", value: value)
}
}
@@ -3729,15 +3643,15 @@ public protocol UseMapAttribute: Attribute {
extension UseMapAttribute where Self: ContentNode {
- internal func mutate(usemap value: String) -> Self {
- return self.mutate(key: "usemap", value: "#\(value)")
+ internal func mutate(usemap value: AttributeData) -> Self {
+ return self.mutate(key: "usemap", value: value)
}
}
extension UseMapAttribute where Self: EmptyNode {
- internal func mutate(usemap value: String) -> Self {
- return self.mutate(key: "usemap", value: "#\(value)")
+ internal func mutate(usemap value: AttributeData) -> Self {
+ return self.mutate(key: "usemap", value: value)
}
}
@@ -3788,22 +3702,14 @@ public protocol ValueAttribute: Attribute {
extension ValueAttribute where Self: ContentNode {
- internal func mutate(value: String) -> Self {
- return self.mutate(key: "value", value: value)
- }
-
- internal func mutate(value: LocalizedString) -> Self {
+ internal func mutate(value: AttributeData) -> Self {
return self.mutate(key: "value", value: value)
}
}
extension ValueAttribute where Self: EmptyNode {
- internal func mutate(value: String) -> Self {
- return self.mutate(key: "value", value: value)
- }
-
- internal func mutate(value: LocalizedString) -> Self {
+ internal func mutate(value: AttributeData) -> Self {
return self.mutate(key: "value", value: value)
}
}
@@ -3827,14 +3733,14 @@ public protocol WidthAttribute: Attribute {
extension WidthAttribute where Self: ContentNode {
- internal func mutate(width value: Int) -> Self {
+ internal func mutate(width value: AttributeData) -> Self {
return self.mutate(key: "width", value: value)
}
}
extension WidthAttribute where Self: EmptyNode {
- internal func mutate(width value: Int) -> Self {
+ internal func mutate(width value: AttributeData) -> Self {
return self.mutate(key: "width", value: value)
}
}
@@ -3860,14 +3766,14 @@ public protocol WrapAttribute: Attribute {
extension WrapAttribute where Self: ContentNode {
- internal func mutate(wrap value: String) -> Self {
+ internal func mutate(wrap value: AttributeData) -> Self {
return self.mutate(key: "wrap", value: value)
}
}
extension WrapAttribute where Self: EmptyNode {
- internal func mutate(wrap value: String) -> Self {
+ internal func mutate(wrap value: AttributeData) -> Self {
return self.mutate(key: "wrap", value: value)
}
}
@@ -3892,14 +3798,14 @@ public protocol PropertyAttribute: Attribute {
extension PropertyAttribute where Self: ContentNode {
- internal func mutate(property value: String) -> Self {
+ internal func mutate(property value: AttributeData) -> Self {
return self.mutate(key: "property", value: value)
}
}
extension PropertyAttribute where Self: EmptyNode {
- internal func mutate(property value: String) -> Self {
+ internal func mutate(property value: AttributeData) -> Self {
return self.mutate(key: "property", value: value)
}
}
@@ -3928,14 +3834,14 @@ public protocol SelectedAttribute: Attribute {
extension SelectedAttribute where Self: ContentNode {
- internal func mutate(selected value: String) -> Self {
+ internal func mutate(selected value: AttributeData) -> Self {
return self.mutate(key: "selected", value: value)
}
}
extension SelectedAttribute where Self: EmptyNode {
- internal func mutate(selected value: String) -> Self {
+ internal func mutate(selected value: AttributeData) -> Self {
return self.mutate(key: "selected", value: value)
}
}
@@ -3961,7 +3867,7 @@ public protocol ShadowRootModeAttribute: Attribute {
extension ShadowRootModeAttribute where Self: ContentNode {
- internal func mutate(shadowrootmode value: String) -> Self {
+ internal func mutate(shadowrootmode value: AttributeData) -> Self {
return self.mutate(key: "shadowrootmode", value: value)
}
}
@@ -3986,14 +3892,14 @@ public protocol InertAttribute: Attribute {
extension InertAttribute where Self: ContentNode {
- internal func mutate(inert value: String) -> Self {
+ internal func mutate(inert value: AttributeData) -> Self {
return self.mutate(key: "inert", value: value)
}
}
extension InertAttribute where Self: EmptyNode {
- internal func mutate(inert value: String) -> Self {
+ internal func mutate(inert value: AttributeData) -> Self {
return self.mutate(key: "inert", value: value)
}
}
@@ -4017,14 +3923,14 @@ public protocol FetchPriorityAttribute: Attribute {
extension FetchPriorityAttribute where Self: ContentNode {
- internal func mutate(fetchpriority value: String) -> Self {
+ internal func mutate(fetchpriority value: AttributeData) -> Self {
return self.mutate(key: "fetchpriority", value: value)
}
}
extension FetchPriorityAttribute where Self: EmptyNode {
- internal func mutate(fetchpriority value: String) -> Self {
+ internal func mutate(fetchpriority value: AttributeData) -> Self {
return self.mutate(key: "fetchpriority", value: value)
}
}
@@ -4049,14 +3955,14 @@ public protocol LoadingAttribute: Attribute {
extension LoadingAttribute where Self: ContentNode {
- internal func mutate(loading value: String) -> Self {
+ internal func mutate(loading value: AttributeData) -> Self {
return self.mutate(key: "loading", value: value)
}
}
extension LoadingAttribute where Self: EmptyNode {
- internal func mutate(loading value: String) -> Self {
+ internal func mutate(loading value: AttributeData) -> Self {
return self.mutate(key: "loading", value: value)
}
}
@@ -4096,14 +4002,14 @@ public protocol SourceSetAttribute: Attribute {
extension SourceSetAttribute where Self: ContentNode {
- internal func mutate(sourceset value: String) -> Self {
+ internal func mutate(sourceset value: AttributeData) -> Self {
return self.mutate(key: "srcset", value: value)
}
}
extension SourceSetAttribute where Self: EmptyNode {
- internal func mutate(sourceset value: String) -> Self {
+ internal func mutate(sourceset value: AttributeData) -> Self {
return self.mutate(key: "srcset", value: value)
}
}
@@ -4129,14 +4035,14 @@ public protocol DecodingAttribute: Attribute {
extension DecodingAttribute where Self: ContentNode {
- internal func mutate(decoding value: String) -> Self {
+ internal func mutate(decoding value: AttributeData) -> Self {
return self.mutate(key: "decoding", value: value)
}
}
extension DecodingAttribute where Self: EmptyNode {
- internal func mutate(decoding value: String) -> Self {
+ internal func mutate(decoding value: AttributeData) -> Self {
return self.mutate(key: "decoding", value: value)
}
}
@@ -4162,14 +4068,14 @@ public protocol BlockingAttribute: Attribute {
extension BlockingAttribute where Self: ContentNode {
- internal func mutate(blocking value: String) -> Self {
+ internal func mutate(blocking value: AttributeData) -> Self {
return self.mutate(key: "blocking", value: value)
}
}
extension BlockingAttribute where Self: EmptyNode {
- internal func mutate(blocking value: String) -> Self {
+ internal func mutate(blocking value: AttributeData) -> Self {
return self.mutate(key: "blocking", value: value)
}
}
@@ -4194,14 +4100,14 @@ public protocol PopoverAttribute: Attribute {
extension PopoverAttribute where Self: ContentNode {
- internal func mutate(popover value: String) -> Self {
+ internal func mutate(popover value: AttributeData) -> Self {
return self.mutate(key: "popover", value: value)
}
}
extension PopoverAttribute where Self: EmptyNode {
- internal func mutate(popover value: String) -> Self {
+ internal func mutate(popover value: AttributeData) -> Self {
return self.mutate(key: "popover", value: value)
}
}
@@ -4232,34 +4138,16 @@ public protocol PopoverTargetAttribute: Attribute {
extension PopoverTargetAttribute where Self: ContentNode {
- internal func mutate(popovertarget value: String) -> Self {
+ internal func mutate(popovertarget value: AttributeData) -> Self {
return self.mutate(key: "popovertarget", value: value)
}
-
- internal func mutate(popovertargetaction value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "popovertargetaction", value: value)
- }
-
- return self
- }
}
extension PopoverTargetAttribute where Self: EmptyNode {
- internal func mutate(popovertarget value: String) -> Self {
+ internal func mutate(popovertarget value: AttributeData) -> Self {
return self.mutate(key: "popovertarget", value: value)
}
-
- internal func mutate(popovertargetaction value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "popovertargetaction", value: value)
- }
-
- return self
- }
}
/// A type that provides the `popoverAction` modifier
@@ -4284,14 +4172,14 @@ public protocol PopoverActionAttribute: Attribute {
extension PopoverActionAttribute where Self: ContentNode {
- internal func mutate(popoveraction value: String) -> Self {
+ internal func mutate(popoveraction value: AttributeData) -> Self {
return self.mutate(key: "popovertargetaction", value: value)
}
}
extension PopoverActionAttribute where Self: EmptyNode {
- internal func mutate(popoveraction value: String) -> Self {
+ internal func mutate(popoveraction value: AttributeData) -> Self {
return self.mutate(key: "popovertargetaction", value: value)
}
}
diff --git a/Sources/HTMLKit/Abstraction/Attributes/VectorAttributes.swift b/Sources/HTMLKit/Abstraction/Attributes/VectorAttributes.swift
index 902ed1d5..f7ca6192 100644
--- a/Sources/HTMLKit/Abstraction/Attributes/VectorAttributes.swift
+++ b/Sources/HTMLKit/Abstraction/Attributes/VectorAttributes.swift
@@ -25,7 +25,7 @@ public protocol DrawAttribute: Attribute {
extension DrawAttribute where Self: ContentNode {
- internal func mutate(draw value: String) -> Self {
+ internal func mutate(draw value: AttributeData) -> Self {
return self.mutate(key: "d", value: value)
}
}
@@ -53,18 +53,9 @@ public protocol FillAttribute: Attribute {
extension FillAttribute where Self: ContentNode {
- internal func mutate(fill value: String) -> Self {
+ internal func mutate(fill value: AttributeData) -> Self {
return self.mutate(key: "fill", value: value)
}
-
- internal func mutate(fillopacity value: Double?) -> Self {
-
- if let value = value {
- return self.mutate(key: "fill-opacity", value: value)
- }
-
- return self
- }
}
/// A type that provides the `fillOpacity` modifier.
@@ -89,7 +80,7 @@ public protocol FillOpacityAttribute: Attribute {
extension FillOpacityAttribute where Self: ContentNode {
- internal func mutate(fillopacity value: Double) -> Self {
+ internal func mutate(fillopacity value: AttributeData) -> Self {
return self.mutate(key: "fill-opacity", value: value)
}
}
@@ -120,44 +111,24 @@ public protocol StrokeAttribute: Attribute {
extension StrokeAttribute where Self: ContentNode {
- internal func mutate(stroke value: String) -> Self {
+ internal func mutate(stroke value: AttributeData) -> Self {
return self.mutate(key: "stroke", value: value)
}
- internal func mutate(strokewidth value: Int?) -> Self {
-
- if let value = value {
- return self.mutate(key: "stroke-width", value: value)
- }
-
- return self
+ internal func mutate(strokewidth value: AttributeData) -> Self {
+ return self.mutate(key: "stroke-width", value: value)
}
- internal func mutate(strokeopacity value: Double?) -> Self {
-
- if let value = value {
- return self.mutate(key: "stroke-opacity", value: value)
- }
-
- return self
+ internal func mutate(strokeopacity value: AttributeData) -> Self {
+ return self.mutate(key: "stroke-opacity", value: value)
}
- internal func mutate(strokelinecap value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "stroke-linecap", value: value)
- }
-
- return self
+ internal func mutate(strokelinecap value: AttributeData) -> Self {
+ return self.mutate(key: "stroke-linecap", value: value)
}
- internal func mutate(strokelinejoin value: String?) -> Self {
-
- if let value = value {
- return self.mutate(key: "stroke-linejoin", value: value)
- }
-
- return self
+ internal func mutate(strokelinejoin value: AttributeData) -> Self {
+ return self.mutate(key: "stroke-linejoin", value: value)
}
}
@@ -181,13 +152,6 @@ public protocol StrokeWidthAttribute: Attribute {
func strokeWidth(_ size: Int) -> Self
}
-extension StrokeWidthAttribute where Self: ContentNode {
-
- internal func mutate(strokewidth value: Int) -> Self {
- return self.mutate(key: "stroke-width", value: value)
- }
-}
-
/// A type that provides the `strokeOpacity` modifier.
@_documentation(visibility: internal)
public protocol StrokeOpacityAttribute: Attribute {
@@ -208,13 +172,6 @@ public protocol StrokeOpacityAttribute: Attribute {
func strokeOpacity(_ value: Double) -> Self
}
-extension StrokeOpacityAttribute where Self: ContentNode {
-
- internal func mutate(strokeopacity value: Double) -> Self {
- return self.mutate(key: "stroke-opacity", value: value)
- }
-}
-
/// A type that provides the `strokeLineCap` modifier.
@_documentation(visibility: internal)
public protocol StrokeLineCapAttribute: Attribute {
@@ -235,13 +192,6 @@ public protocol StrokeLineCapAttribute: Attribute {
func strokeLineCap(_ value: Values.Linecap) -> Self
}
-extension StrokeLineCapAttribute where Self: ContentNode {
-
- internal func mutate(strokelinecap value: String) -> Self {
- return self.mutate(key: "stroke-linecap", value: value)
- }
-}
-
/// A type that provides the `strokeLineJoin` modifier.
@_documentation(visibility: internal)
public protocol StrokeLineJoinAttribute: Attribute {
@@ -262,12 +212,6 @@ public protocol StrokeLineJoinAttribute: Attribute {
func strokeLineJoin(_ value: Values.Linejoin) -> Self
}
-extension StrokeLineJoinAttribute where Self: ContentNode {
-
- internal func mutate(strokelinejoin value: String) -> Self {
- return self.mutate(key: "stroke-linejoin", value: value)
- }
-}
/// A type that provides the `radius` modifier.
@_documentation(visibility: internal)
@@ -291,7 +235,7 @@ public protocol RadiusAttribute: Attribute {
extension RadiusAttribute where Self: ContentNode {
- internal func mutate(radius value: Int) -> Self {
+ internal func mutate(radius value: AttributeData) -> Self {
return self.mutate(key: "r", value: value)
}
}
@@ -351,11 +295,11 @@ public protocol PositionPointAttribute: Attribute {
extension PositionPointAttribute where Self: ContentNode {
- internal func mutate(x value: String) -> Self {
+ internal func mutate(x value: AttributeData) -> Self {
return self.mutate(key: "x", value: value)
}
- internal func mutate(y value: String) -> Self {
+ internal func mutate(y value: AttributeData) -> Self {
return self.mutate(key: "y", value: value)
}
}
@@ -415,11 +359,11 @@ public protocol RadiusPointAttribute: Attribute {
extension RadiusPointAttribute where Self: ContentNode {
- internal func mutate(rx value: String) -> Self {
+ internal func mutate(rx value: AttributeData) -> Self {
return self.mutate(key: "rx", value: value)
}
- internal func mutate(ry value: String) -> Self {
+ internal func mutate(ry value: AttributeData) -> Self {
return self.mutate(key: "ry", value: value)
}
}
@@ -481,11 +425,11 @@ public protocol CenterPointAttribute: Attribute {
extension CenterPointAttribute where Self: ContentNode {
- internal func mutate(cx value: String) -> Self {
+ internal func mutate(cx value: AttributeData) -> Self {
return self.mutate(key: "cx", value: value)
}
- internal func mutate(cy value: String) -> Self {
+ internal func mutate(cy value: AttributeData) -> Self {
return self.mutate(key: "cy", value: value)
}
}
@@ -531,7 +475,7 @@ public protocol ViewBoxAttribute: Attribute {
extension ViewBoxAttribute where Self: ContentNode {
- internal func mutate(viewbox value: String) -> Self {
+ internal func mutate(viewbox value: AttributeData) -> Self {
return self.mutate(key: "viewbox", value: value)
}
}
@@ -556,7 +500,7 @@ public protocol NamespaceAttribute: Attribute {
extension NamespaceAttribute where Self: ContentNode {
- internal func mutate(namespace value: String) -> Self {
+ internal func mutate(namespace value: AttributeData) -> Self {
return self.mutate(key: "xmlns", value: value)
}
}
@@ -583,7 +527,7 @@ public protocol PointsAttribute: Attribute {
extension PointsAttribute where Self: ContentNode {
- internal func mutate(points value: String) -> Self {
+ internal func mutate(points value: AttributeData) -> Self {
return self.mutate(key: "points", value: value)
}
}
diff --git a/Sources/HTMLKit/Abstraction/Elements/BasicElements.swift b/Sources/HTMLKit/Abstraction/Elements/BasicElements.swift
index 1b1725e0..7616183d 100644
--- a/Sources/HTMLKit/Abstraction/Elements/BasicElements.swift
+++ b/Sources/HTMLKit/Abstraction/Elements/BasicElements.swift
@@ -8,14 +8,18 @@ import OrderedCollections
/// ```swift
/// Comment("Lorem ipsum")
/// ```
-public struct Comment: CommentNode, GlobalElement {
+public struct Comment: CommentNode, GlobalElement {
internal var content: String
+ internal var context: EscapeContext
+
/// Create a comment.
///
/// - Parameter content: The text of the comment.
public init(_ content: String) {
+
+ self.context = .tainted(.html)
self.content = content
}
}
@@ -37,10 +41,14 @@ public struct Document: DocumentNode, BasicElement {
internal var content: String
+ internal var context: EscapeContext
+
/// Create a document.
///
/// - Parameter value: The type to declare.
public init(_ value: Values.Doctype) {
+
+ self.context = .trusted
self.content = value.rawValue
}
}
@@ -71,19 +79,25 @@ public struct Html: ContentNode, BasicElement {
internal var name: String { "html" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [HtmlElement]
+
+ internal var context: EscapeContext
/// Create a html.
///
/// - Parameter content: The html's content.
public init(@ContentBuilder content: () -> [HtmlElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [HtmlElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [HtmlElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -109,196 +123,248 @@ public struct Html: ContentNode, BasicElement {
extension Html: GlobalAttributes, GlobalEventAttributes {
public func accessKey(_ value: Character) -> Html {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Html {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Html {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Html {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Html {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Html {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Html {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Html {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Html {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Html {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Html {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Html {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Html {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Html {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Html {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Html {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Html {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Html {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Html {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Html {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Html {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Html {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Html {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Html {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Html {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Html {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Html {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Html {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Html {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Html {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Html {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Html {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Html {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Html {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Html {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Html {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Html {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Html {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Html {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Html {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Html {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Html {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Html {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Html {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Html {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Html {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Html {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Html {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
}
@@ -314,25 +380,29 @@ public struct Custom: CustomNode, GlobalElement {
public var name: String
- public var attributes: OrderedDictionary?
+ public var attributes: OrderedDictionary?
public var content: [Content]
+
+ public var context: EscapeContext
/// Create a custom.
///
/// - Parameters:
/// - name: The tag to use for the element.
/// - content: The custom's content.
- public init(name: String, @ContentBuilder content: () -> [Content]) {
+ public init(name: String, context: EscapeContext = .tainted(.html), @ContentBuilder content: () -> [Content]) {
self.name = name
+ self.context = context
self.content = content()
}
- public init(name: String, attributes: OrderedDictionary?, content: [Content]) {
+ public init(name: String, attributes: OrderedDictionary?, context: EscapeContext = .tainted(.html), content: [Content]) {
self.name = name
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -357,7 +427,27 @@ public struct Custom: CustomNode, GlobalElement {
extension Custom: Attribute {
- public func custom(key: String, value: Any) -> Custom {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Custom {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Custom {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Custom {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Custom {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Custom {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Custom {
+ return mutate(key: key, value: .init(value, context: context))
}
}
diff --git a/Sources/HTMLKit/Abstraction/Elements/BodyElements.swift b/Sources/HTMLKit/Abstraction/Elements/BodyElements.swift
index e7b1bb27..88d04660 100644
--- a/Sources/HTMLKit/Abstraction/Elements/BodyElements.swift
+++ b/Sources/HTMLKit/Abstraction/Elements/BodyElements.swift
@@ -163,19 +163,25 @@ public struct Article: ContentNode, HtmlElement, BodyElement, FormElement, Figur
internal var name: String { "article" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a article.
///
/// - Parameter content: The article's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -201,272 +207,324 @@ public struct Article: ContentNode, HtmlElement, BodyElement, FormElement, Figur
extension Article: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Article {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Article {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Article {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Article {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Article {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Article {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Article {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Article {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Article {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Article {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Article {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Article {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Article {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Article {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Article {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Article {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Article {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Article {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Article {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Article {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Article {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Article {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Article {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Article {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Article {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Article {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Article {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Article {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Article {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Article {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Article {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Article {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Article {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Article {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Article {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Article {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Article {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Article {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Article {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Article {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Article {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Article {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Article {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Article {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Article {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Article {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Article {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Article {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Article {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Article {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Article {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Article {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Article {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Article {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Article {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Article {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Article {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Article {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Article {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Article {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Article {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Article {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Article {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Article {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Article {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Article {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Article {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -488,19 +546,25 @@ public struct Section: ContentNode, HtmlElement, BodyElement, FigureElement, For
internal var name: String { "section" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a section.
///
/// - Parameter content: The section's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -526,272 +590,324 @@ public struct Section: ContentNode, HtmlElement, BodyElement, FigureElement, For
extension Section: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Section {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Section {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Section {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Section {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Section {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Section {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Section {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Section {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Section {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Section {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Section {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Section {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Section {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Section {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Section {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Section {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Section {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Section {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Section {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Section {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Section {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Section {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Section {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Section {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Section {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Section {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Section {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Section {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Section {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Section {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Section {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Section {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Section {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Section {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Section {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Section {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Section {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Section {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Section {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Section {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Section {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Section {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Section {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Section {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Section {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Section {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Section {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Section {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Section {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Section {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Section {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Section {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Section {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Section {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Section {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Section {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Section {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Section {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Section {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Section {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Section {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Section {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Section {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Section {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Section {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Section {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Section {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -815,19 +931,25 @@ public struct Navigation: ContentNode, HtmlElement, BodyElement, FormElement, Fi
internal var name: String { "nav" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a navigation.
///
/// - Parameter content: The navigation's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -853,272 +975,324 @@ public struct Navigation: ContentNode, HtmlElement, BodyElement, FormElement, Fi
extension Navigation: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Navigation {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Navigation {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Navigation {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Navigation {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Navigation {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Navigation {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Navigation {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Navigation {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Navigation {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Navigation {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Navigation {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Navigation {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Navigation {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Navigation {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Navigation {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Navigation {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Navigation {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Navigation {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Navigation {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Navigation {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Navigation {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Navigation {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Navigation {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Navigation {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Navigation {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Navigation {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Navigation {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Navigation {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Navigation {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Navigation {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Navigation {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Navigation {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Navigation {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Navigation {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Navigation {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Navigation {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Navigation {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Navigation {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Navigation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Navigation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Navigation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Navigation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Navigation {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Navigation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Navigation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Navigation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Navigation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Navigation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Navigation {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Navigation {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Navigation {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Navigation {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Navigation {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Navigation {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Navigation {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Navigation {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Navigation {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Navigation {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Navigation {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Navigation {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Navigation {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Navigation {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Navigation {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Navigation {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Navigation {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Navigation {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Navigation {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -1138,19 +1312,25 @@ public struct Aside: ContentNode, HtmlElement, BodyElement, FormElement, FigureE
internal var name: String { "aside" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a aside.
///
/// - Parameter content: The aside's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -1176,272 +1356,324 @@ public struct Aside: ContentNode, HtmlElement, BodyElement, FormElement, FigureE
extension Aside: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Aside {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Aside {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Aside {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Aside {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Aside {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Aside {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Aside {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Aside {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Aside {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Aside {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Aside {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Aside {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Aside {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Aside {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Aside {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Aside {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Aside {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Aside {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Aside {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Aside {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Aside {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Aside {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Aside {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Aside {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Aside {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Aside {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Aside {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Aside {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Aside {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Aside {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Aside {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Aside {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Aside {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Aside {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Aside {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Aside {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Aside {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func custom(key: String, value: Any) -> Aside {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Int) -> Aside {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Aside {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Aside {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Aside {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Aside {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Aside {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Aside {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Aside {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Aside {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Aside {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Aside {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Aside {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Aside {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Aside {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Aside {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Aside {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Aside {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Aside {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Aside {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Aside {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Aside {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Aside {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Aside {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Aside {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Aside {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Aside {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Aside {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Aside {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Aside {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -1458,19 +1690,25 @@ public struct Heading1: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "h1" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading.
///
/// - Parameter content: The heading's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -1496,278 +1734,332 @@ public struct Heading1: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Heading1: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Heading1 {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Heading1 {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Heading1 {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Heading1 {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Heading1 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Heading1 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Heading1 {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Heading1 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Heading1 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Heading1 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Heading1 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Heading1 {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Heading1 {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Heading1 {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Heading1 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Heading1 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Heading1 {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Heading1 {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Heading1 {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Heading1 {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Heading1 {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Heading1 {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Heading1 {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Heading1 {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Heading1 {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Heading1 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Heading1 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Heading1 {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Heading1 {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Heading1 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Heading1 {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Heading1 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Heading1 {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Heading1 {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Heading1 {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Heading1 {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Heading1 {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Heading1 {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Heading1 {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Heading1 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Heading1 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Heading1 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Heading1 {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Heading1 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Heading1 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Heading1 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Heading1 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Heading1 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Heading1 {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Heading1 {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Heading1 {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Heading1 {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Heading1 {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Heading1 {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Heading1 {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Heading1 {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Heading1 {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Heading1 {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Heading1 {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Heading1 {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Heading1 {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Heading1 {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Heading1 {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Heading1 {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Heading1 {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Heading1 {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Heading1 {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Heading1: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -1785,19 +2077,25 @@ public struct Heading2: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "h2" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading.
///
/// - Parameter content: The heading's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -1823,278 +2121,332 @@ public struct Heading2: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Heading2: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Heading2 {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Heading2 {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Heading2 {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Heading2 {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Heading2 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Heading2 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Heading2 {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Heading2 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Heading2 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Heading2 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Heading2 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Heading2 {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Heading2 {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Heading2 {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Heading2 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Heading2 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Heading2 {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Heading2 {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Heading2 {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Heading2 {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Heading2 {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Heading2 {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Heading2 {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Heading2 {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Heading2 {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Heading2 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Heading2 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Heading2 {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Heading2 {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Heading2 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Heading2 {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Heading2 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Heading2 {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Heading2 {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Heading2 {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Heading2 {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Heading2 {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Heading2 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Heading2 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Heading2 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Heading2 {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Heading2 {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Heading2 {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Heading2 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Heading2 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Heading2 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Heading2 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Heading2 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Heading2 {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Heading2 {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Heading2 {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Heading2 {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Heading2 {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Heading2 {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Heading2 {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Heading2 {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Heading2 {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Heading2 {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Heading2 {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Heading2 {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Heading2 {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Heading2 {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Heading2 {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Heading2 {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Heading2 {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Heading2 {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Heading2 {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Heading2: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -2112,19 +2464,25 @@ public struct Heading3: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "h3" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading.
///
/// - Parameter content: The heading's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -2150,278 +2508,332 @@ public struct Heading3: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Heading3: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Heading3 {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Heading3 {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Heading3 {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Heading3 {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Heading3 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Heading3 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Heading3 {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Heading3 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Heading3 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Heading3 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Heading3 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Heading3 {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Heading3 {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Heading3 {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Heading3 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Heading3 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Heading3 {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Heading3 {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Heading3 {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Heading3 {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Heading3 {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Heading3 {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Heading3 {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Heading3 {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Heading3 {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Heading3 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Heading3 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Heading3 {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Heading3 {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Heading3 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Heading3 {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Heading3 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Heading3 {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Heading3 {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Heading3 {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Heading3 {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Heading3 {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Heading3 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Heading3 {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Heading3 {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Heading3 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Heading3 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Heading3 {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Heading3 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Heading3 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Heading3 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Heading3 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Heading3 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Heading3 {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Heading3 {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Heading3 {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Heading3 {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Heading3 {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Heading3 {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Heading3 {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Heading3 {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Heading3 {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Heading3 {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Heading3 {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Heading3 {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Heading3 {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Heading3 {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Heading3 {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Heading3 {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Heading3 {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Heading3 {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Heading3 {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Heading3: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -2439,19 +2851,25 @@ public struct Heading4: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "h4" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading.
///
/// - Parameter content: The heading's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -2477,278 +2895,332 @@ public struct Heading4: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Heading4: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Heading4 {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Heading4 {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Heading4 {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Heading4 {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Heading4 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Heading4 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Heading4 {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Heading4 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Heading4 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Heading4 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Heading4 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Heading4 {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Heading4 {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Heading4 {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Heading4 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Heading4 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Heading4 {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Heading4 {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Heading4 {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Heading4 {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Heading4 {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Heading4 {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Heading4 {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Heading4 {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Heading4 {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Heading4 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Heading4 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Heading4 {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Heading4 {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Heading4 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Heading4 {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Heading4 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Heading4 {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Heading4 {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Heading4 {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Heading4 {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Heading4 {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Heading4 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Heading4 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Heading4 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Heading4 {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Heading4 {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Heading4 {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Heading4 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Heading4 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Heading4 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Heading4 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Heading4 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Heading4 {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Heading4 {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Heading4 {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Heading4 {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Heading4 {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Heading4 {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Heading4 {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Heading4 {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Heading4 {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Heading4 {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Heading4 {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Heading4 {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Heading4 {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Heading4 {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Heading4 {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Heading4 {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Heading4 {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Heading4 {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Heading4 {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Heading4: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -2766,19 +3238,25 @@ public struct Heading5: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "h5" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading.
///
/// - Parameter content: The heading's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -2804,278 +3282,332 @@ public struct Heading5: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Heading5: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Heading5 {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Heading5 {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Heading5 {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Heading5 {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Heading5 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Heading5 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Heading5 {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Heading5 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Heading5 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Heading5 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Heading5 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Heading5 {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Heading5 {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Heading5 {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Heading5 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Heading5 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Heading5 {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Heading5 {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Heading5 {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Heading5 {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Heading5 {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Heading5 {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Heading5 {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Heading5 {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Heading5 {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Heading5 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Heading5 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Heading5 {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Heading5 {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Heading5 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Heading5 {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Heading5 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Heading5 {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Heading5 {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Heading5 {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Heading5 {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Heading5 {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Heading5 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Heading5 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Heading5 {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Heading5 {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Float) -> Heading5 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Heading5 {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Heading5 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Heading5 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Heading5 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Heading5 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Heading5 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Heading5 {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Heading5 {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Heading5 {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Heading5 {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Heading5 {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Heading5 {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Heading5 {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Heading5 {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Heading5 {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Heading5 {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Heading5 {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Heading5 {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Heading5 {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Heading5 {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Heading5 {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Heading5 {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Heading5 {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Heading5 {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Heading5 {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Heading5: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -3093,19 +3625,25 @@ public struct Heading6: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "h6" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading.
///
/// - Parameter content: The heading's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -3131,278 +3669,332 @@ public struct Heading6: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Heading6: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Heading6 {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Heading6 {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Heading6 {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Heading6 {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Heading6 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Heading6 {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Heading6 {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Heading6 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Heading6 {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Heading6 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Heading6 {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Heading6 {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Heading6 {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Heading6 {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Heading6 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Heading6 {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Heading6 {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Heading6 {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Heading6 {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Heading6 {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Heading6 {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Heading6 {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Heading6 {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Heading6 {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Heading6 {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Heading6 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Heading6 {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Heading6 {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Heading6 {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Heading6 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Heading6 {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Heading6 {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Heading6 {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Heading6 {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Heading6 {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Heading6 {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Heading6 {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Heading6 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Heading6 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Heading6 {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Heading6 {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Heading6 {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Heading6 {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Heading6 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Heading6 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Heading6 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Heading6 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Heading6 {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Heading6 {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Heading6 {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Heading6 {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Heading6 {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Heading6 {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Heading6 {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Heading6 {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Heading6 {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Heading6 {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Heading6 {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Heading6 {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Heading6 {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Heading6 {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Heading6 {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Heading6 {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Heading6 {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Heading6 {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Heading6 {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Heading6 {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Heading6: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -3425,19 +4017,25 @@ public struct HeadingGroup: ContentNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "hgroup" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a heading group.
///
/// - Parameter content: The group's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -3463,272 +4061,324 @@ public struct HeadingGroup: ContentNode, HtmlElement, BodyElement, FormElement,
extension HeadingGroup: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> HeadingGroup {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> HeadingGroup {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> HeadingGroup {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> HeadingGroup {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> HeadingGroup {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> HeadingGroup {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> HeadingGroup {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> HeadingGroup {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> HeadingGroup {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> HeadingGroup {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> HeadingGroup {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> HeadingGroup {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> HeadingGroup {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> HeadingGroup {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> HeadingGroup {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> HeadingGroup {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> HeadingGroup {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> HeadingGroup {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> HeadingGroup {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> HeadingGroup {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> HeadingGroup {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> HeadingGroup {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> HeadingGroup {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> HeadingGroup {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> HeadingGroup {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> HeadingGroup {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> HeadingGroup {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> HeadingGroup {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> HeadingGroup {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> HeadingGroup {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> HeadingGroup {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> HeadingGroup {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> HeadingGroup {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> HeadingGroup {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> HeadingGroup {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> HeadingGroup {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> HeadingGroup {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> HeadingGroup {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> HeadingGroup {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> HeadingGroup {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> HeadingGroup {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> HeadingGroup {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> HeadingGroup {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> HeadingGroup {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> HeadingGroup {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> HeadingGroup {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> HeadingGroup {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> HeadingGroup {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> HeadingGroup {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> HeadingGroup {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> HeadingGroup {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> HeadingGroup {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> HeadingGroup {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> HeadingGroup {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> HeadingGroup {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> HeadingGroup {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> HeadingGroup {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> HeadingGroup {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> HeadingGroup {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> HeadingGroup {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> HeadingGroup {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> HeadingGroup {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> HeadingGroup {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> HeadingGroup {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> HeadingGroup {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> HeadingGroup {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> HeadingGroup {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -3746,19 +4396,25 @@ public struct Header: ContentNode, HtmlElement, BodyElement, FormElement, Figure
internal var name: String { "header" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a header.
///
/// - Parameter content: The header's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -3784,272 +4440,324 @@ public struct Header: ContentNode, HtmlElement, BodyElement, FormElement, Figure
extension Header: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Header {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Header {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Header {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Header {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Header {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Header {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Header {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Header {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Header {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Header {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Header {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Header {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Header {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Header {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Header {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Header {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Header {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Header {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Header {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Header {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Header {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Header {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Header {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Header {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Header {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Header {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Header {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Header {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Header {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Header {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Header {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Header {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Header {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Header {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Header {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Header {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Header {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Header {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Header {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Header {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Header {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Header {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Header {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Header {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Header {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Header {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Header {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Header {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Header {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Header {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Header {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Header {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Header {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Header {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Header {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Header {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Header {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Header {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Header {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Header {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Header {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Header {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Header {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Header {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Header {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Header {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Header {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -4065,19 +4773,25 @@ public struct Footer: ContentNode, HtmlElement, BodyElement, FormElement, Figure
internal var name: String { "footer" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a footer.
///
/// - Parameter content: The footer's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -4103,272 +4817,324 @@ public struct Footer: ContentNode, HtmlElement, BodyElement, FormElement, Figure
extension Footer: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Footer {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Footer {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Footer {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Footer {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Footer {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Footer {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Footer {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Footer {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Footer {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Footer {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Footer {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Footer {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Footer {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Footer {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Footer {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Footer {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Footer {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Footer {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Footer {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Footer {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Footer {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Footer {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Footer {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Footer {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Footer {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Footer {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Footer {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Footer {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Footer {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Footer {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Footer {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Footer {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Footer {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Footer {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Footer {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Footer {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Footer {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Footer {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Footer {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Footer {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Footer {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Footer {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Footer {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Footer {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Footer {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Footer {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Footer {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Footer {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Footer {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Footer {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Footer {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Footer {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Footer {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Footer {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Footer {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Footer {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Footer {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Footer {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Footer {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Footer {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Footer {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Footer {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Footer {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Footer {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Footer {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Footer {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Footer {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -4391,19 +5157,25 @@ public struct Address: ContentNode, HtmlElement, BodyElement, FormElement, Figur
internal var name: String { "address" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create an address.
///
/// - Parameter content: The address's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -4429,272 +5201,324 @@ public struct Address: ContentNode, HtmlElement, BodyElement, FormElement, Figur
extension Address: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Address {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Address {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Address {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Address {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Address {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Address {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Address {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Address {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Address {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Address {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Address {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Address {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Address {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Address {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Address {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Address {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Address {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Address {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Address {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Address {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Address {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Address {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Address {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Address {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Address {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Address {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Address {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Address {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Address {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Address {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Address {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Address {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Address {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Address {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Address {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Address {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Address {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Address {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Address {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Address {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Address {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Address {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Address {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Address {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Address {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Address {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Address {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Address {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Address {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Address {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Address {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Address {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Address {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Address {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Address {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Address {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Address {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Address {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Address {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Address {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Address {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Address {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Address {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Address {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Address {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Address {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Address {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -4711,19 +5535,25 @@ public struct Paragraph: ContentNode, HtmlElement, BodyElement, FormElement, Fig
internal var name: String { "p" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a paragraph.
///
/// - Parameter content: The paragraph's content
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -4749,278 +5579,332 @@ public struct Paragraph: ContentNode, HtmlElement, BodyElement, FormElement, Fig
extension Paragraph: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Paragraph {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Paragraph {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Paragraph {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Paragraph {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Paragraph {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Paragraph {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Paragraph {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Paragraph {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Paragraph {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Paragraph {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Paragraph {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Paragraph {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Paragraph {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Paragraph {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Paragraph {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Paragraph {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Paragraph {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Paragraph {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Paragraph {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Paragraph {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Paragraph {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Paragraph {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Paragraph {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Paragraph {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Paragraph {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Paragraph {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Paragraph {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Paragraph {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Paragraph {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Paragraph {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Paragraph {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Paragraph {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Paragraph {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Paragraph {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Paragraph {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Paragraph {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Paragraph {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func custom(key: String, value: Any) -> Paragraph {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Int) -> Paragraph {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Paragraph {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Paragraph {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Paragraph {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Paragraph {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Paragraph {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Paragraph {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Paragraph {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Paragraph {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Paragraph {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Paragraph {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Paragraph {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Paragraph {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Paragraph {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Paragraph {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Paragraph {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Paragraph {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Paragraph {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Paragraph {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Paragraph {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Paragraph {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Paragraph {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Paragraph {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Paragraph {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Paragraph {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Paragraph {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Paragraph {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Paragraph {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Paragraph {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Paragraph: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -5042,12 +5926,12 @@ public struct HorizontalRule: EmptyNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "hr" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
/// Create a horizontal rule.
public init() {}
- internal init(attributes: OrderedDictionary?) {
+ internal init(attributes: OrderedDictionary?) {
self.attributes = attributes
}
@@ -5073,272 +5957,324 @@ public struct HorizontalRule: EmptyNode, HtmlElement, BodyElement, FormElement,
extension HorizontalRule: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> HorizontalRule {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> HorizontalRule {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> HorizontalRule {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> HorizontalRule {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> HorizontalRule {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> HorizontalRule {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> HorizontalRule {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> HorizontalRule {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> HorizontalRule {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> HorizontalRule {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> HorizontalRule {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> HorizontalRule {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> HorizontalRule {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> HorizontalRule {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> HorizontalRule {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> HorizontalRule {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> HorizontalRule {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> HorizontalRule {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> HorizontalRule {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> HorizontalRule {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> HorizontalRule {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> HorizontalRule {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> HorizontalRule {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> HorizontalRule {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> HorizontalRule {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> HorizontalRule {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> HorizontalRule {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> HorizontalRule {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> HorizontalRule {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> HorizontalRule {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> HorizontalRule {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> HorizontalRule {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> HorizontalRule {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> HorizontalRule {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> HorizontalRule {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> HorizontalRule {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> HorizontalRule {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> HorizontalRule {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> HorizontalRule {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> HorizontalRule {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> HorizontalRule {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> HorizontalRule {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> HorizontalRule {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> HorizontalRule {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> HorizontalRule {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> HorizontalRule {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> HorizontalRule {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> HorizontalRule {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> HorizontalRule {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> HorizontalRule {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> HorizontalRule {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> HorizontalRule {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> HorizontalRule {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> HorizontalRule {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> HorizontalRule {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> HorizontalRule {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> HorizontalRule {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> HorizontalRule {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> HorizontalRule {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> HorizontalRule {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> HorizontalRule {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> HorizontalRule {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> HorizontalRule {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> HorizontalRule {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> HorizontalRule {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> HorizontalRule {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> HorizontalRule {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -5361,19 +6297,25 @@ public struct PreformattedText: ContentNode, HtmlElement, BodyElement, FormEleme
internal var name: String { "pre" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a preformatted text.
///
/// - Parameter content: The text's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -5399,272 +6341,324 @@ public struct PreformattedText: ContentNode, HtmlElement, BodyElement, FormEleme
extension PreformattedText: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> PreformattedText {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> PreformattedText {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> PreformattedText {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> PreformattedText {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> PreformattedText {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> PreformattedText {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> PreformattedText {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> PreformattedText {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> PreformattedText {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> PreformattedText {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> PreformattedText {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> PreformattedText {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> PreformattedText {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> PreformattedText {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> PreformattedText {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> PreformattedText {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> PreformattedText {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> PreformattedText {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> PreformattedText {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> PreformattedText {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> PreformattedText {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> PreformattedText {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> PreformattedText {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> PreformattedText {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> PreformattedText {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> PreformattedText {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> PreformattedText {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> PreformattedText {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> PreformattedText {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> PreformattedText {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> PreformattedText {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> PreformattedText {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> PreformattedText {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> PreformattedText {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> PreformattedText {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> PreformattedText {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> PreformattedText {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> PreformattedText {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func on(event: Events.Drag, _ value: String) -> PreformattedText {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Int) -> PreformattedText {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Clipboard, _ value: String) -> PreformattedText {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Double) -> PreformattedText {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Keyboard, _ value: String) -> PreformattedText {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Bool) -> PreformattedText {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Mouse, _ value: String) -> PreformattedText {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Float) -> PreformattedText {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Wheel, _ value: String) -> PreformattedText {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> PreformattedText {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func aria(atomic value: Bool) -> PreformattedText {
- return mutate(ariaatomic: value)
+ public func on(event: Events.Drag, _ value: String) -> PreformattedText {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
- public func aria(busy value: Bool) -> PreformattedText {
- return mutate(ariabusy: value)
+ public func on(event: Events.Clipboard, _ value: String) -> PreformattedText {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Keyboard, _ value: String) -> PreformattedText {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Mouse, _ value: String) -> PreformattedText {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Wheel, _ value: String) -> PreformattedText {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func aria(atomic value: Bool) -> PreformattedText {
+ return mutate(ariaatomic: .init(value, context: .trusted))
+ }
+
+ public func aria(busy value: Bool) -> PreformattedText {
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> PreformattedText {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> PreformattedText {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> PreformattedText {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> PreformattedText {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> PreformattedText {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> PreformattedText {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> PreformattedText {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> PreformattedText {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> PreformattedText {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> PreformattedText {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> PreformattedText {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> PreformattedText {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> PreformattedText {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> PreformattedText {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> PreformattedText {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> PreformattedText {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> PreformattedText {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -5681,19 +6675,25 @@ public struct Blockquote: ContentNode, HtmlElement, BodyElement, FormElement, Fi
internal var name: String { "blockquote" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a block quote.
///
/// - Parameter content: The quote's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -5719,282 +6719,336 @@ public struct Blockquote: ContentNode, HtmlElement, BodyElement, FormElement, Fi
extension Blockquote: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, CiteAttribute {
public func accessKey(_ value: Character) -> Blockquote {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Blockquote {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Blockquote {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Blockquote {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Blockquote {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Blockquote {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Blockquote {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Blockquote {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Blockquote {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Blockquote {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Blockquote {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Blockquote {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Blockquote {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Blockquote {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Blockquote {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Blockquote {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Blockquote {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Blockquote {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Blockquote {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Blockquote {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Blockquote {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Blockquote {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Blockquote {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Blockquote {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Blockquote {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Blockquote {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Blockquote {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Blockquote {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Blockquote {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Blockquote {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Blockquote {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Blockquote {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Blockquote {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Blockquote {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Blockquote {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func cite(_ value: String) -> Blockquote {
- return mutate(cite: value)
+ return mutate(cite: .init(value, context: .tainted(.html)))
}
public func popover(_ value: Values.Popover.State) -> Blockquote {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Blockquote {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Blockquote {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Blockquote {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Blockquote {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Blockquote {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Blockquote {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Blockquote {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Blockquote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Blockquote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Blockquote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Blockquote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Blockquote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Blockquote {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Blockquote {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Blockquote {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Blockquote {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Blockquote {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Blockquote {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Blockquote {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Blockquote {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Blockquote {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Blockquote {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Blockquote {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Blockquote {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Blockquote {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Blockquote {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Blockquote {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Blockquote {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Blockquote {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Blockquote {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Blockquote {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Blockquote: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -6017,19 +7071,25 @@ public struct OrderedList: ContentNode, HtmlElement, BodyElement, FormElement, F
internal var name: String { "ol" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [ListElement]
+
+ internal var context: EscapeContext
/// Create a ordered list.
///
/// - Parameter content: The list's content.
public init(@ContentBuilder content: () -> [ListElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [ListElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [ListElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -6055,284 +7115,336 @@ public struct OrderedList: ContentNode, HtmlElement, BodyElement, FormElement, F
extension OrderedList: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, ReversedAttribute, StartAttribute, TypeAttribute {
public func accessKey(_ value: Character) -> OrderedList {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> OrderedList {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> OrderedList {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> OrderedList {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> OrderedList {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> OrderedList {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> OrderedList {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> OrderedList {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> OrderedList {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> OrderedList {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> OrderedList {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> OrderedList {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> OrderedList {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> OrderedList {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> OrderedList {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> OrderedList {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> OrderedList {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> OrderedList {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> OrderedList {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> OrderedList {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> OrderedList {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> OrderedList {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> OrderedList {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> OrderedList {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> OrderedList {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> OrderedList {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> OrderedList {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> OrderedList {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> OrderedList {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> OrderedList {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> OrderedList {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> OrderedList {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> OrderedList {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> OrderedList {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> OrderedList {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func reversed() -> OrderedList {
- return mutate(reversed: "reversed")
+ return mutate(reversed: .init("reversed", context: .trusted))
}
public func start(_ size: Int) -> OrderedList {
- return mutate(start: size)
+ return mutate(start: .init(size, context: .trusted))
}
public func type(_ value: Values.Marker) -> OrderedList {
- return mutate(type: value.rawValue)
+ return mutate(type: .init(value.rawValue, context: .trusted))
}
public func popover(_ value: Values.Popover.State) -> OrderedList {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> OrderedList {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> OrderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> OrderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> OrderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> OrderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> OrderedList {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> OrderedList {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> OrderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> OrderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> OrderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> OrderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> OrderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> OrderedList {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> OrderedList {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> OrderedList {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> OrderedList {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> OrderedList {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> OrderedList {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> OrderedList {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> OrderedList {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> OrderedList {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> OrderedList {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> OrderedList {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> OrderedList {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> OrderedList {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> OrderedList {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> OrderedList {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> OrderedList {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> OrderedList {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> OrderedList {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> OrderedList {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -6354,19 +7466,25 @@ public struct UnorderedList: ContentNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "ul" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [ListElement]
+
+ internal var context: EscapeContext
/// Create a unordered list.
///
/// - Parameter content: The list's content.
public init(@ContentBuilder content: () -> [ListElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [ListElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [ListElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -6392,272 +7510,324 @@ public struct UnorderedList: ContentNode, HtmlElement, BodyElement, FormElement,
extension UnorderedList: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> UnorderedList {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> UnorderedList {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> UnorderedList {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> UnorderedList {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> UnorderedList {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> UnorderedList {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> UnorderedList {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> UnorderedList {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> UnorderedList {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> UnorderedList {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> UnorderedList {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> UnorderedList {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> UnorderedList {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> UnorderedList {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> UnorderedList {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> UnorderedList {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> UnorderedList {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> UnorderedList {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> UnorderedList {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> UnorderedList {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> UnorderedList {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> UnorderedList {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> UnorderedList {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> UnorderedList {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> UnorderedList {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> UnorderedList {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> UnorderedList {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> UnorderedList {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> UnorderedList {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> UnorderedList {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> UnorderedList {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> UnorderedList {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> UnorderedList {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> UnorderedList {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> UnorderedList {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> UnorderedList {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> UnorderedList {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> UnorderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> UnorderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> UnorderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> UnorderedList {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> UnorderedList {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> UnorderedList {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> UnorderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> UnorderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> UnorderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> UnorderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> UnorderedList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> UnorderedList {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> UnorderedList {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> UnorderedList {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> UnorderedList {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> UnorderedList {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> UnorderedList {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> UnorderedList {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> UnorderedList {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> UnorderedList {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> UnorderedList {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> UnorderedList {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> UnorderedList {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> UnorderedList {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> UnorderedList {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> UnorderedList {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> UnorderedList {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> UnorderedList {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> UnorderedList {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> UnorderedList {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -6685,19 +7855,25 @@ public struct Menu: ContentNode, HtmlElement, BodyElement {
internal var name: String { "menu" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [ListElement]
+
+ internal var context: EscapeContext
/// Create a menu.
///
/// - Parameter content: The menu's content.
public init(@ContentBuilder content: () -> [ListElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [ListElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [ListElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -6723,176 +7899,228 @@ public struct Menu: ContentNode, HtmlElement, BodyElement {
extension Menu: GlobalAttributes {
public func accessKey(_ value: Character) -> Menu {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Menu {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Menu {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Menu {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Menu {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Menu {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Menu {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Menu {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Menu {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Menu {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Menu {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Menu {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Menu {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Menu {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Menu {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Menu {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Menu {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Menu {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Menu {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Menu {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Menu {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Menu {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Menu {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Menu {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Menu {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Menu {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Menu {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Menu {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Menu {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Menu {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Menu {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Menu {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Menu {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Menu {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Menu {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Menu {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Menu {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Menu {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Menu {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Menu {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Menu {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Menu {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Menu {
+ return mutate(key: key, value: .init(value, context: context))
}
}
@@ -6916,19 +8144,25 @@ public struct DescriptionList: ContentNode, HtmlElement, BodyElement, FormElemen
internal var name: String { "dl" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [DescriptionElement]
+
+ internal var context: EscapeContext
/// Create a description list
///
/// - Parameter content: The list's content.
public init(@ContentBuilder content: () -> [DescriptionElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [DescriptionElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [DescriptionElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -6954,272 +8188,324 @@ public struct DescriptionList: ContentNode, HtmlElement, BodyElement, FormElemen
extension DescriptionList: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> DescriptionList {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> DescriptionList {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> DescriptionList {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> DescriptionList {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> DescriptionList {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> DescriptionList {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> DescriptionList {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> DescriptionList {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> DescriptionList {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> DescriptionList {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> DescriptionList {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> DescriptionList {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> DescriptionList {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> DescriptionList {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> DescriptionList {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> DescriptionList {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> DescriptionList {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> DescriptionList {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> DescriptionList {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> DescriptionList {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> DescriptionList {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> DescriptionList {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> DescriptionList {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> DescriptionList {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> DescriptionList {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> DescriptionList {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> DescriptionList {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> DescriptionList {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> DescriptionList {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> DescriptionList {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> DescriptionList {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> DescriptionList {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> DescriptionList {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> DescriptionList {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> DescriptionList {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> DescriptionList {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> DescriptionList {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> DescriptionList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> DescriptionList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> DescriptionList {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> DescriptionList {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> DescriptionList {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> DescriptionList {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> DescriptionList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> DescriptionList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> DescriptionList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> DescriptionList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> DescriptionList {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> DescriptionList {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> DescriptionList {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> DescriptionList {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> DescriptionList {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> DescriptionList {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> DescriptionList {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> DescriptionList {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> DescriptionList {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> DescriptionList {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> DescriptionList {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> DescriptionList {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> DescriptionList {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> DescriptionList {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> DescriptionList {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> DescriptionList {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> DescriptionList {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> DescriptionList {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> DescriptionList {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> DescriptionList {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -7241,19 +8527,25 @@ public struct Figure: ContentNode, HtmlElement, BodyElement, FormElement, Figure
internal var name: String { "figure" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [FigureElement]
+
+ internal var context: EscapeContext
/// Create a figure.
///
/// - Parameter content: The figure's content.
public init(@ContentBuilder content: () -> [FigureElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [FigureElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [FigureElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -7279,272 +8571,324 @@ public struct Figure: ContentNode, HtmlElement, BodyElement, FormElement, Figure
extension Figure: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Figure {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Figure {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Figure {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Figure {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Figure {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Figure {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Figure {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Figure {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Figure {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Figure {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Figure {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Figure {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Figure {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Figure {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Figure {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Figure {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Figure {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Figure {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Figure {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Figure {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Figure {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Figure {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Figure {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Figure {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Figure {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Figure {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Figure {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Figure {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Figure {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Figure {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Figure {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Figure {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Figure {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Figure {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Figure {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Figure {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Figure {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Figure {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Figure {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Figure {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Figure {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Figure {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Figure {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Figure {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Figure {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Figure {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Figure {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Figure {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Figure {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Figure {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Figure {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Figure {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Figure {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Figure {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Figure {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Figure {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Figure {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Figure {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Figure {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Figure {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Figure {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Figure {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Figure {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Figure {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Figure {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Figure {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Figure {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -7563,19 +8907,25 @@ public struct Anchor: ContentNode, HtmlElement, BodyElement, FormElement, Figure
internal var name: String { "a" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create an anchor.
///
/// - Parameter content: The anchor's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -7601,322 +8951,376 @@ public struct Anchor: ContentNode, HtmlElement, BodyElement, FormElement, Figure
extension Anchor: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, DownloadAttribute, ReferenceAttribute, ReferenceLanguageAttribute, MediaAttribute, PingAttribute, ReferrerPolicyAttribute, RelationshipAttribute, TargetAttribute, TypeAttribute {
public func accessKey(_ value: Character) -> Anchor {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Anchor {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Anchor {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Anchor {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Anchor {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Anchor {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Anchor {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Anchor {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Anchor {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Anchor {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Anchor {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Anchor {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Anchor {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Anchor {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Anchor {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Anchor {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Anchor {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Anchor {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Anchor {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Anchor {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Anchor {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Anchor {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Anchor {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Anchor {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Anchor {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Anchor {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Anchor {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Anchor {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Anchor {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Anchor {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Anchor {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Anchor {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Anchor {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Anchor {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Anchor {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func download() -> Anchor {
- return mutate(download: "download")
+ return mutate(download: .init("download", context: .trusted))
}
public func reference(_ value: String) -> Anchor {
- return mutate(href: value)
+ return mutate(href: .init(value, context: .tainted(.url)))
}
public func referenceLanguage(_ value: Values.Language) -> Anchor {
- return mutate(hreflang: value.rawValue)
+ return mutate(hreflang: .init(value.rawValue, context: .trusted))
}
public func media(_ value: String) -> Anchor {
- return mutate(media: value)
+ return mutate(media: .init(value, context: .tainted(.html)))
}
public func media(_ queries: [MediaQuery]) -> Anchor {
- return mutate(media: queries.map { $0.rawValue }.joined(separator: ", "))
+ return mutate(media: .init(queries.map { $0.rawValue }.joined(separator: ", "), context: .tainted(.html)))
}
public func media(_ queries: MediaQuery...) -> Anchor {
- return mutate(media: queries.map { $0.rawValue }.joined(separator: ", "))
+ return mutate(media: .init(queries.map { $0.rawValue }.joined(separator: ", "), context: .tainted(.html)))
}
public func ping(_ value: String) -> Anchor {
- return mutate(ping: value)
+ return mutate(ping: .init(value, context: .tainted(.html)))
}
public func referrerPolicy(_ value: Values.Policy) -> Anchor {
- return mutate(referrerpolicy: value.rawValue)
+ return mutate(referrerpolicy: .init(value.rawValue, context: .trusted))
}
public func relationship(_ value: Values.Relation) -> Anchor {
- return mutate(rel: value.rawValue)
+ return mutate(rel: .init(value.rawValue, context: .trusted))
}
public func target(_ value: Values.Target) -> Anchor {
- return mutate(target: value.rawValue)
+ return mutate(target: .init(value.rawValue, context: .trusted))
}
public func type(_ value: String) -> Anchor {
- return mutate(type: value)
+ return mutate(type: .init(value, context: .tainted(.html)))
}
public func popover(_ value: Values.Popover.State) -> Anchor {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Anchor {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Anchor {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Anchor {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Anchor {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Anchor {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Anchor {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Anchor {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Anchor {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Anchor {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Anchor {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Anchor {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Anchor {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Anchor {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Anchor {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Anchor {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Anchor {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Anchor {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Anchor {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Anchor {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Anchor {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Anchor {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Anchor {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Anchor {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Anchor {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Anchor {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Anchor {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Anchor {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Anchor {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Anchor {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Anchor {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Anchor {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Anchor: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -7938,19 +9342,25 @@ public struct Emphasize: ContentNode, HtmlElement, BodyElement, FormElement, Fig
internal var name: String { "em" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a emphasize.
///
/// - Parameter content: The emphasize's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -7976,272 +9386,324 @@ public struct Emphasize: ContentNode, HtmlElement, BodyElement, FormElement, Fig
extension Emphasize: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Emphasize {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Emphasize {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Emphasize {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Emphasize {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Emphasize {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Emphasize {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Emphasize {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Emphasize {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Emphasize {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Emphasize {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Emphasize {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Emphasize {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Emphasize {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Emphasize {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Emphasize {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Emphasize {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Emphasize {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Emphasize {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Emphasize {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Emphasize {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Emphasize {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Emphasize {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Emphasize {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Emphasize {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Emphasize {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Emphasize {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Emphasize {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Emphasize {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Emphasize {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Emphasize {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Emphasize {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Emphasize {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Emphasize {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Emphasize {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Emphasize {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Emphasize {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Emphasize {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Emphasize {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func on(event: Events.Drag, _ value: String) -> Emphasize {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Int) -> Emphasize {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Clipboard, _ value: String) -> Emphasize {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Double) -> Emphasize {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Keyboard, _ value: String) -> Emphasize {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Bool) -> Emphasize {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Mouse, _ value: String) -> Emphasize {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Float) -> Emphasize {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Wheel, _ value: String) -> Emphasize {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Emphasize {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func aria(atomic value: Bool) -> Emphasize {
- return mutate(ariaatomic: value)
+ public func on(event: Events.Drag, _ value: String) -> Emphasize {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
- public func aria(busy value: Bool) -> Emphasize {
- return mutate(ariabusy: value)
+ public func on(event: Events.Clipboard, _ value: String) -> Emphasize {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Keyboard, _ value: String) -> Emphasize {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Mouse, _ value: String) -> Emphasize {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Wheel, _ value: String) -> Emphasize {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func aria(atomic value: Bool) -> Emphasize {
+ return mutate(ariaatomic: .init(value, context: .trusted))
+ }
+
+ public func aria(busy value: Bool) -> Emphasize {
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Emphasize {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Emphasize {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Emphasize {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Emphasize {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Emphasize {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Emphasize {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Emphasize {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Emphasize {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Emphasize {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Emphasize {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Emphasize {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Emphasize {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Emphasize {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Emphasize {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Emphasize {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Emphasize {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Emphasize {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -8260,19 +9722,25 @@ public struct Strong: ContentNode, HtmlElement, BodyElement, FormElement, Figure
internal var name: String { "strong" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a strong.
///
/// - Parameter content: The strong's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -8298,272 +9766,324 @@ public struct Strong: ContentNode, HtmlElement, BodyElement, FormElement, Figure
extension Strong: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Strong {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Strong {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Strong {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Strong {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Strong {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Strong {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Strong {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Strong {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Strong {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Strong {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Strong {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Strong {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Strong {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Strong {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Strong {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Strong {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Strong {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Strong {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Strong {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Strong {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Strong {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Strong {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Strong {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Strong {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Strong {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Strong {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Strong {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Strong {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Strong {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Strong {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Strong {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Strong {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Strong {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Strong {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Strong {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Strong {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Strong {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Strong {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Strong {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Strong {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Strong {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Strong {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Strong {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Strong {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Strong {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Strong {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Strong {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Strong {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Strong {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Strong {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Strong {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Strong {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Strong {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Strong {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Strong {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Strong {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Strong {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Strong {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Strong {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Strong {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Strong {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Strong {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Strong {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Strong {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Strong {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Strong {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Strong {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -8582,19 +10102,25 @@ public struct Small: ContentNode, HtmlElement, BodyElement, FormElement, FigureE
internal var name: String { "small" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a small.
///
/// - Parameter content: The small's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -8620,278 +10146,332 @@ public struct Small: ContentNode, HtmlElement, BodyElement, FormElement, FigureE
extension Small: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Small {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Small {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Small {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Small {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Small {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Small {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Small {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Small {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Small {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Small {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Small {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Small {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Small {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Small {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Small {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Small {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Small {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Small {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Small {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Small {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Small {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Small {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Small {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Small {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Small {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Small {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Small {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Small {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Small {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Small {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Small {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Small {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Small {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Small {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Small {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Small {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Small {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Small {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Small {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Small {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Small {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Small {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Small {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Small {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Small {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Small {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Small {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Small {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Small {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Small {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Small {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Small {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Small {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Small {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Small {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Small {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Small {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Small {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Small {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Small {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Small {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Small {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Small {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Small {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Small {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Small {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Small {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Small: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -8911,19 +10491,25 @@ public struct StrikeThrough: ContentNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "s" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a strike through.
///
/// - Parameter content: The strike through's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -8949,202 +10535,256 @@ public struct StrikeThrough: ContentNode, HtmlElement, BodyElement, FormElement,
extension StrikeThrough: GlobalAttributes, GlobalEventAttributes {
public func accessKey(_ value: Character) -> StrikeThrough {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> StrikeThrough {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> StrikeThrough {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> StrikeThrough {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> StrikeThrough {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> StrikeThrough {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> StrikeThrough {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> StrikeThrough {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> StrikeThrough {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> StrikeThrough {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> StrikeThrough {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> StrikeThrough {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> StrikeThrough {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> StrikeThrough {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> StrikeThrough {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> StrikeThrough {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> StrikeThrough {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> StrikeThrough {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> StrikeThrough {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> StrikeThrough {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> StrikeThrough {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> StrikeThrough {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> StrikeThrough {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> StrikeThrough {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> StrikeThrough {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> StrikeThrough {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> StrikeThrough {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> StrikeThrough {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> StrikeThrough {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> StrikeThrough {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> StrikeThrough {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> StrikeThrough {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> StrikeThrough {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> StrikeThrough {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> StrikeThrough {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> StrikeThrough {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> StrikeThrough {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> StrikeThrough {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> StrikeThrough {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> StrikeThrough {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> StrikeThrough {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> StrikeThrough {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> StrikeThrough {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> StrikeThrough {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> StrikeThrough {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> StrikeThrough {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> StrikeThrough {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> StrikeThrough {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
}
extension StrikeThrough: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -9172,19 +10812,25 @@ public struct Main: ContentNode, HtmlElement, BodyElement, FormElement {
internal var name: String { "main" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a main.
///
/// - Parameter content: The main's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -9210,272 +10856,324 @@ public struct Main: ContentNode, HtmlElement, BodyElement, FormElement {
extension Main: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Main {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Main {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Main {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Main {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Main {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Main {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Main {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Main {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Main {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Main {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Main {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Main {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Main {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Main {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Main {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Main {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Main {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Main {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Main {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Main {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Main {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Main {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Main {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Main {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Main {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Main {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Main {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Main {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Main {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Main {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Main {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Main {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Main {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Main {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Main {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Main {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Main {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Main {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Main {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Main {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Main {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Main {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Main {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Main {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Main {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Main {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Main {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Main {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Main {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Main {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Main {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Main {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Main {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Main {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Main {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Main {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Main {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Main {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Main {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Main {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Main {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Main {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Main {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Main {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Main {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Main {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Main {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -9499,19 +11197,25 @@ public struct Search: ContentNode, HtmlElement, BodyElement {
internal var name: String { "search" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a search.
///
/// - Parameter content: The search's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -9537,176 +11241,228 @@ public struct Search: ContentNode, HtmlElement, BodyElement {
extension Search: GlobalAttributes {
public func accessKey(_ value: Character) -> Search {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Search {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Search {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Search {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Search {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Search {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Search {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Search {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Search {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Search {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Search {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Search {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Search {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Search {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Search {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Search {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Search {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Search {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Search {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Search {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Search {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Search {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Search {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Search {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Search {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Search {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Search {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Search {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Search {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Search {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Search {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Search {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Search {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Search {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Search {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Search {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Search {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func custom(key: String, value: Any) -> Search {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Int) -> Search {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Search {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Search {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Search {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Search {
+ return mutate(key: key, value: .init(value, context: context))
}
}
@@ -9723,19 +11479,25 @@ public struct Division: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "div" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a division.
///
/// - Parameter content: The division's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -9761,272 +11523,324 @@ public struct Division: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Division: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Division {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Division {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Division {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Division {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Division {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Division {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Division {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Division {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Division {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Division {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Division {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Division {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Division {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Division {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Division {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Division {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Division {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Division {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Division {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Division {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Division {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Division {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Division {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Division {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Division {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Division {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Division {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Division {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Division {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Division {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Division {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Division {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Division {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Division {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Division {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Division {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Division {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Division {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Division {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Division {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Division {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Division {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Division {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Division {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Division {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Division {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Division {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Division {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Division {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Division {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Division {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Division {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Division {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Division {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Division {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Division {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Division {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Division {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Division {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Division {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Division {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Division {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Division {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Division {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Division {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Division {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Division {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -10048,19 +11862,25 @@ public struct Definition: ContentNode, HtmlElement, BodyElement, FormElement, Fi
internal var name: String { "dfn" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a definition.
///
/// - Parameter content: The definition's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -10086,272 +11906,324 @@ public struct Definition: ContentNode, HtmlElement, BodyElement, FormElement, Fi
extension Definition: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Definition {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Definition {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Definition {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Definition {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Definition {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Definition {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Definition {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Definition {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Definition {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Definition {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Definition {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Definition {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Definition {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Definition {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Definition {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Definition {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Definition {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Definition {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Definition {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Definition {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Definition {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Definition {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Definition {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Definition {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Definition {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Definition {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Definition {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Definition {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Definition {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Definition {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Definition {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Definition {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Definition {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Definition {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Definition {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Definition {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Definition {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Definition {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Definition {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Definition {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Definition {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Definition {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Definition {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Definition {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Definition {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Definition {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Definition {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Definition {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Definition {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Definition {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Definition {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Definition {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Definition {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Definition {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Definition {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Definition {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Definition {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Definition {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Definition {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Definition {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Definition {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Definition {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Definition {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Definition {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Definition {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Definition {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Definition {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -10371,19 +12243,25 @@ public struct Cite: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "cite" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a cite.
///
/// - Parameter content: The cite's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -10409,272 +12287,324 @@ public struct Cite: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Cite: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Cite {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Cite {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Cite {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Cite {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Cite {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Cite {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Cite {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Cite {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Cite {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Cite {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Cite {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Cite {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Cite {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Cite {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Cite {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Cite {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Cite {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Cite {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Cite {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Cite {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Cite {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Cite {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Cite {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Cite {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Cite {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Cite {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Cite {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Cite {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Cite {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Cite {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Cite {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Cite {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Cite {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Cite {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Cite {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Cite {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Cite {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Cite {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func on(event: Events.Drag, _ value: String) -> Cite {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Int) -> Cite {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Clipboard, _ value: String) -> Cite {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Double) -> Cite {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Keyboard, _ value: String) -> Cite {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Bool) -> Cite {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Mouse, _ value: String) -> Cite {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: Float) -> Cite {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func on(event: Events.Wheel, _ value: String) -> Cite {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Cite {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func aria(atomic value: Bool) -> Cite {
- return mutate(ariaatomic: value)
+ public func on(event: Events.Drag, _ value: String) -> Cite {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
- public func aria(busy value: Bool) -> Cite {
- return mutate(ariabusy: value)
+ public func on(event: Events.Clipboard, _ value: String) -> Cite {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Keyboard, _ value: String) -> Cite {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Mouse, _ value: String) -> Cite {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func on(event: Events.Wheel, _ value: String) -> Cite {
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
+ }
+
+ public func aria(atomic value: Bool) -> Cite {
+ return mutate(ariaatomic: .init(value, context: .trusted))
+ }
+
+ public func aria(busy value: Bool) -> Cite {
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Cite {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Cite {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Cite {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Cite {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Cite {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Cite {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Cite {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Cite {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Cite {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Cite {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Cite {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Cite {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Cite {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Cite {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Cite {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Cite {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Cite {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -10693,19 +12623,25 @@ public struct ShortQuote: ContentNode, HtmlElement, BodyElement, FormElement, Fi
internal var name: String { "q" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a short quote.
///
/// - Parameter content: The quote's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -10731,276 +12667,328 @@ public struct ShortQuote: ContentNode, HtmlElement, BodyElement, FormElement, Fi
extension ShortQuote: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, CiteAttribute {
public func accessKey(_ value: Character) -> ShortQuote {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> ShortQuote {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> ShortQuote {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> ShortQuote {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> ShortQuote {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> ShortQuote {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> ShortQuote {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> ShortQuote {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> ShortQuote {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> ShortQuote {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> ShortQuote {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> ShortQuote {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> ShortQuote {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> ShortQuote {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> ShortQuote {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> ShortQuote {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> ShortQuote {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> ShortQuote {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> ShortQuote {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> ShortQuote {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> ShortQuote {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> ShortQuote {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> ShortQuote {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> ShortQuote {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> ShortQuote {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> ShortQuote {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> ShortQuote {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> ShortQuote {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> ShortQuote {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> ShortQuote {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> ShortQuote {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> ShortQuote {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> ShortQuote {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> ShortQuote {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> ShortQuote {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func cite(_ value: String) -> ShortQuote {
- return mutate(cite: value)
+ return mutate(cite: .init(value, context: .tainted(.html)))
}
public func popover(_ value: Values.Popover.State) -> ShortQuote {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> ShortQuote {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> ShortQuote {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> ShortQuote {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> ShortQuote {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> ShortQuote {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> ShortQuote {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> ShortQuote {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> ShortQuote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> ShortQuote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> ShortQuote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> ShortQuote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> ShortQuote {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> ShortQuote {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> ShortQuote {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> ShortQuote {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> ShortQuote {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> ShortQuote {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> ShortQuote {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> ShortQuote {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> ShortQuote {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> ShortQuote {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> ShortQuote {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> ShortQuote {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> ShortQuote {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> ShortQuote {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> ShortQuote {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> ShortQuote {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> ShortQuote {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> ShortQuote {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> ShortQuote {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> ShortQuote {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -11020,19 +13008,25 @@ public struct Abbreviation: ContentNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "abbr" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a abbreviation.
///
/// - Parameter content: The abbreviation's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -11058,272 +13052,324 @@ public struct Abbreviation: ContentNode, HtmlElement, BodyElement, FormElement,
extension Abbreviation: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Abbreviation {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Abbreviation {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Abbreviation {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Abbreviation {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Abbreviation {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Abbreviation {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Abbreviation {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Abbreviation {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Abbreviation {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Abbreviation {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Abbreviation {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Abbreviation {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Abbreviation {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Abbreviation {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Abbreviation {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Abbreviation {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Abbreviation {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Abbreviation {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Abbreviation {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Abbreviation {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Abbreviation {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Abbreviation {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Abbreviation {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Abbreviation {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Abbreviation {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Abbreviation {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Abbreviation {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Abbreviation {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Abbreviation {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Abbreviation {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Abbreviation {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Abbreviation {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Abbreviation {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Abbreviation {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Abbreviation {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Abbreviation {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Abbreviation {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Abbreviation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Abbreviation {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Abbreviation {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Abbreviation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Abbreviation {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Abbreviation {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Abbreviation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Abbreviation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Abbreviation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Abbreviation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Abbreviation {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Abbreviation {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Abbreviation {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Abbreviation {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Abbreviation {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Abbreviation {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Abbreviation {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Abbreviation {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Abbreviation {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Abbreviation {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Abbreviation {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Abbreviation {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Abbreviation {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Abbreviation {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Abbreviation {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Abbreviation {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Abbreviation {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Abbreviation {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Abbreviation {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Abbreviation {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -11343,19 +13389,25 @@ public struct Ruby: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "ruby" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [RubyElement]
+
+ internal var context: EscapeContext
/// Create a ruby.
///
/// - Parameter content: The ruby's content.
public init(@ContentBuilder content: () -> [RubyElement]) {
+
+ self.context = .trusted
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [RubyElement]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [RubyElement]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -11381,272 +13433,324 @@ public struct Ruby: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Ruby: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Ruby {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Ruby {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Ruby {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Ruby {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Ruby {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Ruby {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Ruby {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Ruby {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Ruby {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Ruby {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Ruby {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Ruby {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Ruby {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Ruby {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Ruby {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Ruby {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Ruby {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Ruby {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Ruby {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Ruby {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Ruby {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Ruby {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Ruby {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Ruby {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Ruby {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Ruby {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Ruby {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Ruby {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Ruby {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Ruby {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Ruby {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Ruby {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Ruby {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Ruby {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Ruby {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Ruby {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Ruby {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Ruby {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Ruby {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Ruby {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Ruby {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Ruby {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Ruby {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Ruby {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Ruby {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Ruby {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Ruby {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Ruby {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Ruby {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Ruby {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Ruby {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Ruby {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Ruby {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Ruby {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Ruby {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Ruby {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Ruby {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Ruby {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Ruby {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Ruby {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Ruby {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Ruby {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Ruby {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Ruby {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Ruby {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Ruby {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Ruby {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -11668,19 +13772,25 @@ public struct Data: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "data" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+ internal var context: EscapeContext
+
/// Create a data.
///
/// - Parameter content: The data's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -11706,165 +13816,197 @@ public struct Data: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Data: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, ValueAttribute {
public func accessKey(_ value: Character) -> Data {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Data {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Data {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Data {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Data {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Data {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Data {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Data {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Data {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Data {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Data {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Data {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Data {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Data {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Data {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Data {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Data {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Data {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Data {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Data {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Data {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Data {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Data {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Data {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Data {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Data {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Data {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Data {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Data {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Data {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Data {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Data {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Data {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Data {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Data {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
@@ -11872,119 +14014,139 @@ extension Data: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, V
@_disfavoredOverload
public func value(_ value: String) -> Data {
- return mutate(value: value)
+ return mutate(value: .init(value, context: .tainted(.html)))
}
public func value(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Data {
- return mutate(value: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(value: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func value(verbatim value: String) -> Data {
- return mutate(value: value)
+ return mutate(value: .init(value, context: .tainted(.html)))
}
public func popover(_ value: Values.Popover.State) -> Data {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Data {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func custom(key: String, value: Any) -> Data {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Int) -> Data {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Data {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Data {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Data {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Data {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Data {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Data {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Data {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Data {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Data {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Data {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Data {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Data {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Data {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Data {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Data {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Data {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Data {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Data {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Data {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Data {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Data {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Data {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Data {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Data {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Data {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Data {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Data {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Data {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -12005,19 +14167,25 @@ public struct Time: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "time" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+ internal var context: EscapeContext
+
/// Create a time.
///
/// - Parameter content: The time's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -12043,276 +14211,328 @@ public struct Time: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Time: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes, DateTimeAttribute {
public func accessKey(_ value: Character) -> Time {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Time {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Time {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Time {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Time {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Time {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Time {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Time {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Time {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Time {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Time {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Time {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Time {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Time {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Time {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Time {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Time {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Time {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Time {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Time {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Time {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Time {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Time {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Time {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Time {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Time {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Time {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Time {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Time {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Time {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Time {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Time {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Time {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Time {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Time {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func dateTime(_ value: String) -> Time {
- return mutate(datetime: value)
+ return mutate(datetime: .init(value, context: .tainted(.html)))
}
public func popover(_ value: Values.Popover.State) -> Time {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Time {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Time {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Time {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Time {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Time {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Time {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Time {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Time {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Time {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Time {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Time {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Time {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Time {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Time {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Time {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Time {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Time {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Time {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Time {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Time {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Time {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Time {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Time {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Time {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Time {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Time {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Time {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Time {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Time {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Time {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Time {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -12333,19 +14553,25 @@ public struct Code: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "code" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a code.
///
/// - Parameter content: The code's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -12371,272 +14597,324 @@ public struct Code: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Code: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Code {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Code {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Code {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Code {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Code {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Code {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Code {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Code {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Code {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Code {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Code {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Code {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Code {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Code {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Code {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Code {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Code {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Code {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Code {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Code {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Code {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Code {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Code {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Code {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Code {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Code {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Code {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Code {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Code {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Code {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Code {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Code {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Code {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Code {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Code {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Code {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Code {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Code {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Code {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Code {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Code {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Code {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Code {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Code {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Code {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Code {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Code {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Code {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Code {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Code {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Code {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Code {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Code {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Code {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Code {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Code {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Code {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Code {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Code {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Code {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Code {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Code {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Code {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Code {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Code {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Code {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Code {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -12657,19 +14935,25 @@ public struct Variable: ContentNode, HtmlElement, BodyElement, FormElement, Figu
internal var name: String { "var" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a variable.
///
/// - Parameter content: The variable's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -12695,272 +14979,324 @@ public struct Variable: ContentNode, HtmlElement, BodyElement, FormElement, Figu
extension Variable: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Variable {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Variable {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Variable {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Variable {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Variable {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Variable {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Variable {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Variable {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Variable {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Variable {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Variable {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Variable {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Variable {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Variable {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Variable {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Variable {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Variable {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Variable {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Variable {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Variable {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Variable {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Variable {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Variable {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Variable {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Variable {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Variable {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Variable {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Variable {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Variable {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Variable {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Variable {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Variable {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Variable {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Variable {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Variable {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Variable {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Variable {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Variable {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Variable {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Variable {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Variable {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Float) -> Variable {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Variable {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Variable {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Variable {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Variable {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Variable {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Variable {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Variable {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Variable {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Variable {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Variable {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Variable {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Variable {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Variable {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Variable {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Variable {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Variable {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Variable {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Variable {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Variable {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Variable {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Variable {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Variable {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Variable {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Variable {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Variable {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -12977,19 +15313,25 @@ public struct SampleOutput: ContentNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "samp" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a sample output.
///
/// - Parameter content: The output's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -13015,272 +15357,324 @@ public struct SampleOutput: ContentNode, HtmlElement, BodyElement, FormElement,
extension SampleOutput: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> SampleOutput {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> SampleOutput {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> SampleOutput {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> SampleOutput {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> SampleOutput {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> SampleOutput {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> SampleOutput {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> SampleOutput {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> SampleOutput {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> SampleOutput {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> SampleOutput {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> SampleOutput {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> SampleOutput {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> SampleOutput {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> SampleOutput {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> SampleOutput {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> SampleOutput {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> SampleOutput {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> SampleOutput {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> SampleOutput {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> SampleOutput {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> SampleOutput {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> SampleOutput {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> SampleOutput {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> SampleOutput {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> SampleOutput {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> SampleOutput {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> SampleOutput {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> SampleOutput {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> SampleOutput {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> SampleOutput {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> SampleOutput {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> SampleOutput {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> SampleOutput {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> SampleOutput {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> SampleOutput {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> SampleOutput {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> SampleOutput {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> SampleOutput {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> SampleOutput {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> SampleOutput {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> SampleOutput {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> SampleOutput {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> SampleOutput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> SampleOutput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> SampleOutput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> SampleOutput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> SampleOutput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> SampleOutput {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> SampleOutput {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> SampleOutput {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> SampleOutput {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> SampleOutput {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> SampleOutput {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> SampleOutput {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> SampleOutput {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> SampleOutput {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> SampleOutput {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> SampleOutput {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> SampleOutput {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> SampleOutput {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> SampleOutput {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> SampleOutput {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> SampleOutput {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> SampleOutput {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> SampleOutput {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> SampleOutput {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -13301,19 +15695,25 @@ public struct KeyboardInput: ContentNode, HtmlElement, BodyElement, FormElement,
internal var name: String { "kbd" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a keyboard input.
///
/// - Parameter content: The input's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -13339,272 +15739,324 @@ public struct KeyboardInput: ContentNode, HtmlElement, BodyElement, FormElement,
extension KeyboardInput: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> KeyboardInput {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> KeyboardInput {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> KeyboardInput {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> KeyboardInput {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> KeyboardInput {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> KeyboardInput {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> KeyboardInput {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> KeyboardInput {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> KeyboardInput {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> KeyboardInput {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> KeyboardInput {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> KeyboardInput {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> KeyboardInput {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> KeyboardInput {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> KeyboardInput {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> KeyboardInput {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> KeyboardInput {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> KeyboardInput {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> KeyboardInput {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> KeyboardInput {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> KeyboardInput {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> KeyboardInput {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> KeyboardInput {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> KeyboardInput {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> KeyboardInput {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> KeyboardInput {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> KeyboardInput {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> KeyboardInput {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> KeyboardInput {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> KeyboardInput {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> KeyboardInput {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> KeyboardInput {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> KeyboardInput {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> KeyboardInput {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> KeyboardInput {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> KeyboardInput {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> KeyboardInput {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> KeyboardInput {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> KeyboardInput {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> KeyboardInput {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> KeyboardInput {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> KeyboardInput {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> KeyboardInput {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> KeyboardInput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> KeyboardInput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> KeyboardInput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> KeyboardInput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> KeyboardInput {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> KeyboardInput {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> KeyboardInput {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> KeyboardInput {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> KeyboardInput {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> KeyboardInput {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> KeyboardInput {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> KeyboardInput {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> KeyboardInput {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> KeyboardInput {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> KeyboardInput {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> KeyboardInput {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> KeyboardInput {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> KeyboardInput {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> KeyboardInput {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> KeyboardInput {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> KeyboardInput {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> KeyboardInput {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> KeyboardInput {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> KeyboardInput {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -13625,19 +16077,25 @@ public struct Subscript: ContentNode, HtmlElement, BodyElement, FormElement, Fig
internal var name: String { "sub" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a subscript.
///
/// - Parameter content: The subscript's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -13663,271 +16121,323 @@ public struct Subscript: ContentNode, HtmlElement, BodyElement, FormElement, Fig
extension Subscript: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Subscript {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Subscript {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Subscript {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Subscript {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Subscript {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Subscript {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Subscript {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Subscript {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Subscript {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Subscript {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Subscript {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Subscript {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Subscript {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Subscript {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Subscript {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Subscript {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Subscript {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Subscript {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Subscript {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Subscript {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Subscript {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Subscript {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Subscript {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Subscript {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Subscript {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Subscript {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Subscript {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Subscript {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Subscript {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Subscript {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Subscript {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Subscript {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Subscript {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Subscript {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Subscript {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Subscript {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Subscript {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Subscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Subscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Subscript {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Bool) -> Subscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Subscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Subscript {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Subscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Subscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Subscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Subscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Subscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Subscript {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Subscript {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Subscript {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Subscript {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Subscript {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Subscript {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Subscript {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Subscript {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Subscript {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Subscript {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Subscript {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Subscript {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Subscript {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Subscript {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Subscript {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Subscript {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Subscript {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Subscript {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Subscript {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -13948,19 +16458,25 @@ public struct Superscript: ContentNode, HtmlElement, BodyElement, FormElement, F
internal var name: String { "sup" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a superscript.
///
/// - Parameter content: The superscript's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -13986,272 +16502,324 @@ public struct Superscript: ContentNode, HtmlElement, BodyElement, FormElement, F
extension Superscript: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Superscript {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Superscript {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Superscript {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Superscript {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Superscript {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Superscript {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Superscript {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Superscript {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Superscript {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Superscript {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Superscript {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Superscript {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Superscript {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Superscript {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Superscript {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Superscript {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Superscript {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Superscript {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Superscript {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Superscript {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Superscript {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Superscript {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Superscript {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Superscript {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Superscript {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Superscript {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Superscript {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Superscript {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Superscript {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Superscript {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Superscript {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Superscript {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Superscript {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Superscript {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Superscript {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Superscript {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
}
- public func custom(key: String, value: Any) -> Superscript {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Superscript {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Superscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Superscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Superscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Superscript {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Superscript {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Superscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Superscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Superscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Superscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Superscript {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Superscript {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Superscript {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Superscript {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Superscript {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Superscript {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Superscript {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Superscript {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Superscript {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Superscript {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Superscript {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Superscript {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Superscript {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Superscript {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Superscript {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Superscript {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Superscript {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Superscript {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Superscript {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Superscript {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -14272,19 +16840,25 @@ public struct Italic: ContentNode, HtmlElement, BodyElement, FormElement, Figure
internal var name: String { "i" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a italic.
///
/// - Parameter content: The italic's content
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -14310,278 +16884,332 @@ public struct Italic: ContentNode, HtmlElement, BodyElement, FormElement, Figure
extension Italic: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Italic {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Italic {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Italic {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Italic {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Italic {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Italic {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Italic {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Italic {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Italic {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Italic {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Italic {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Italic {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Italic {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Italic {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Italic {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Italic {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Italic {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Italic {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Italic {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Italic {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Italic {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Italic {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Italic {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Italic {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Italic {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Italic {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Italic {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Italic {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Italic {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Italic {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Italic {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Italic {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Italic {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Italic {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Italic {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Italic {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Italic {
+ return mutate(key: key, value: .init(value, context: context))
}
- public func custom(key: String, value: Any) -> Italic {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Int) -> Italic {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Italic {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Italic {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Italic {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Italic {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Italic {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Italic {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Italic {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Italic {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Italic {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Italic {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Italic {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Italic {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Italic {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Italic {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Italic {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Italic {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Italic {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Italic {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Italic {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Italic {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Italic {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Italic {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Italic {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Italic {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Italic {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Italic {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Italic {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Italic {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Italic: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -14603,19 +17231,25 @@ public struct Bold: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "b" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a bold.
///
/// - Parameter content: The bold's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -14641,278 +17275,332 @@ public struct Bold: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Bold: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Bold {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Bold {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Bold {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Bold {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Bold {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Bold {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Bold {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Bold {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Bold {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Bold {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Bold {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Bold {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Bold {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Bold {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Bold {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Bold {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Bold {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Bold {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Bold {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Bold {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Bold {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Bold {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Bold {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Bold {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Bold {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Bold {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Bold {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Bold {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Bold {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Bold {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Bold {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Bold {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Bold {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Bold {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Bold {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Bold {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Bold {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Bold {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Bold {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Bold {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Bold {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Bold {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Bold {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Bold {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Bold {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Bold {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Bold {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Bold {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Bold {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Bold {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Bold {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Bold {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Bold {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Bold {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Bold {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Bold {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Bold {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Bold {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Bold {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Bold {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Bold {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Bold {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Bold {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Bold {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Bold {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Bold {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Bold {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Bold: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -14934,19 +17622,25 @@ public struct Underline: ContentNode, HtmlElement, BodyElement, FormElement, Fig
internal var name: String { "u" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+ internal var context: EscapeContext
+
/// Create a underline.
///
/// - Parameter content: The underline's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -14972,278 +17666,332 @@ public struct Underline: ContentNode, HtmlElement, BodyElement, FormElement, Fig
extension Underline: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Underline {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Underline {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Underline {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Underline {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Underline {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Underline {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Underline {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Underline {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Underline {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Underline {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Underline {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Underline {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Underline {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Underline {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Underline {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Underline {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Underline {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Underline {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Underline {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Underline {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Underline {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Underline {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Underline {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Underline {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Underline {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Underline {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Underline {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Underline {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Underline {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Underline {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Underline {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Underline {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Underline {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Underline {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Underline {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Underline {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Underline {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Underline {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Underline {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: Double) -> Underline {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Underline {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Underline {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Underline {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Underline {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Underline {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Underline {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Underline {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Underline {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Underline {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Underline {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Underline {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Underline {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Underline {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Underline {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Underline {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Underline {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Underline {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Underline {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Underline {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Underline {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Underline {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Underline {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Underline {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Underline {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Underline {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Underline {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Underline {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
extension Underline: Localizable {
public init(_ localizedKey: LocalizedStringKey, tableName: String? = nil) {
+
+ self.context = .tainted(.html)
self.content = [LocalizedString(key: localizedKey, table: tableName)]
}
}
@@ -15265,19 +18013,25 @@ public struct Mark: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
internal var name: String { "mark" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+ internal var context: EscapeContext
+
/// Create a mark.
///
/// - Parameter content: The mark's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary?, context: EscapeContext, content: [Content]) {
+
self.attributes = attributes
+ self.context = context
self.content = content
}
@@ -15303,272 +18057,324 @@ public struct Mark: ContentNode, HtmlElement, BodyElement, FormElement, FigureEl
extension Mark: GlobalAttributes, GlobalEventAttributes, GlobalAriaAttributes {
public func accessKey(_ value: Character) -> Mark {
- return mutate(accesskey: value)
+ return mutate(accesskey: .init("\(value)", context: .trusted))
}
public func autocapitalize(_ value: Values.Capitalization) -> Mark {
- return mutate(autocapitalize: value.rawValue)
+ return mutate(autocapitalize: .init(value.rawValue, context: .trusted))
}
public func autofocus() -> Mark {
- return mutate(autofocus: "autofocus")
+ return mutate(autofocus: .init("autofocus", context: .trusted))
}
public func `class`(_ value: String) -> Mark {
- return mutate(class: value)
+ return mutate(class: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the editable(_:) modifier instead.")
public func isEditable(_ value: Bool) -> Mark {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func editable(_ value: Bool = true) -> Mark {
- return mutate(contenteditable: value)
+ return mutate(contenteditable: .init(value, context: .trusted))
}
public func direction(_ value: Values.Direction) -> Mark {
- return mutate(dir: value.rawValue)
+ return mutate(dir: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the draggable(_:) modifier instead.")
public func isDraggable(_ value: Bool) -> Mark {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
public func draggable(_ value: Bool = true) -> Mark {
- return mutate(draggable: value)
+ return mutate(draggable: .init(value, context: .trusted))
}
@available(*, deprecated, message: "Use the enterKey(_:) modifier instead.")
public func enterKeyHint(_ value: Values.Hint) -> Mark {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func enterKey(_ value: Values.Hint) -> Mark {
- return mutate(enterkeyhint: value.rawValue)
+ return mutate(enterkeyhint: .init(value.rawValue, context: .trusted))
}
public func hidden(_ condition: Bool = true) -> Mark {
if condition {
- return mutate(hidden: "hidden")
+ return mutate(hidden: .init("hidden", context: .trusted))
}
return self
}
public func inputMode(_ value: Values.Mode) -> Mark {
- return mutate(inputmode: value.rawValue)
+ return mutate(inputmode: .init(value.rawValue, context: .trusted))
}
public func `is`(_ value: String) -> Mark {
- return mutate(is: value)
+ return mutate(is: .init(value, context: .tainted(.html)))
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: [String]? = nil) -> Mark {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements?.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ if let elements = elements {
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+ }
+
+ return copy
}
public func item(id: String? = nil, as schema: URL? = nil, for elements: String...) -> Mark {
- return self.mutate(itemscope: "itemscope").mutate(itemid: id).mutate(itemtype: schema?.absoluteString).mutate(itemref: elements.joined(separator: " "))
+
+ var copy = self
+
+ copy = copy.mutate(itemscope: .init("itemscope", context: .trusted))
+
+ if let id = id {
+ copy = copy.mutate(itemid: .init(id, context: .tainted(.html)))
+ }
+
+ if let schema = schema {
+ copy = copy.mutate(itemtype: .init(schema.absoluteString, context: .tainted(.html)))
+ }
+
+ copy = copy.mutate(itemref: .init(elements.joined(separator: " "), context: .tainted(.html)))
+
+ return copy
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemId(_ value: String) -> Mark {
- return mutate(itemid: value)
+ return mutate(itemid: .init(value, context: .tainted(.html)))
}
public func itemProperty(_ value: String) -> Mark {
- return mutate(itemprop: value)
+ return mutate(itemprop: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemReference(_ value: String) -> Mark {
- return mutate(itemref: value)
+ return mutate(itemref: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemScope(_ value: String) -> Mark {
- return mutate(itemscope: value)
+ return mutate(itemscope: .init(value, context: .tainted(.html)))
}
@available(*, unavailable, message: "Use the item(id:as:for:) modifier instead.")
public func itemType(_ value: String) -> Mark {
- return mutate(itemtype: value)
+ return mutate(itemtype: .init(value, context: .tainted(.html)))
}
public func id(_ value: String) -> Mark {
- return mutate(id: value)
+ return mutate(id: .init(value, context: .tainted(.html)))
}
public func language(_ value: Values.Language) -> Mark {
- return mutate(lang: value.rawValue)
+ return mutate(lang: .init(value.rawValue, context: .trusted))
}
public func nonce(_ value: String) -> Mark {
- return mutate(nonce: value)
+ return mutate(nonce: .init(value, context: .tainted(.html)))
}
public func role(_ value: Values.Role) -> Mark {
- return mutate(role: value.rawValue)
+ return mutate(role: .init(value.rawValue, context: .trusted))
}
@available(*, deprecated, message: "Use the spellcheck(_:) modifier instead.")
public func hasSpellCheck(_ value: Bool) -> Mark {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func spellcheck(_ value: Bool = true) -> Mark {
- return mutate(spellcheck: value)
+ return mutate(spellcheck: .init(value, context: .trusted))
}
public func style(_ value: String) -> Mark {
- return mutate(style: TaintedString(value, as: .css(.attribute)))
+ return mutate(style: .init(value, context: .tainted(.css)))
}
public func tabIndex(_ value: Int) -> Mark {
- return mutate(tabindex: value)
+ return mutate(tabindex: .init(value, context: .trusted))
}
@_disfavoredOverload
public func title(_ value: String) -> Mark {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
public func title(_ localizedKey: LocalizedStringKey, tableName: String? = nil) -> Mark {
- return mutate(title: LocalizedString(key: localizedKey, table: tableName))
+ return mutate(title: .init(LocalizedString(key: localizedKey, table: tableName), context: .tainted(.html)))
}
public func title(verbatim value: String) -> Mark {
- return mutate(title: value)
+ return mutate(title: .init(value, context: .tainted(.html)))
}
@available(*, deprecated, message: "Use the translate(_:) modifier instead.")
public func translate(_ value: Values.Decision) -> Mark {
- return mutate(translate: value.rawValue)
+ return mutate(translate: .init(value.rawValue, context: .trusted))
}
public func translate(_ value: Bool = true) -> Mark {
if value {
- return mutate(translate: "yes")
+ return mutate(translate: .init("yes", context: .trusted))
}
- return mutate(translate: "no")
+ return mutate(translate: .init("no", context: .trusted))
}
public func inert(_ condition: Bool = true) -> Mark {
if condition {
- return mutate(inert: "inert")
+ return mutate(inert: .init("inert", context: .trusted))
}
return self
}
public func popover(_ value: Values.Popover.State) -> Mark {
- return mutate(popover: value.rawValue)
+ return mutate(popover: .init(value.rawValue, context: .trusted))
+ }
+
+ public func custom(key: String, value: String, context: EscapeContext = .tainted(.html)) -> Mark {
+ return mutate(key: key, value: .init(value, context: context))
+ }
+
+ public func custom(key: String, value: Int) -> Mark {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Double) -> Mark {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Bool) -> Mark {
+ return mutate(key: key, value: .init(value, context: .trusted))
+ }
+
+ public func custom(key: String, value: Float) -> Mark {
+ return mutate(key: key, value: .init(value, context: .trusted))
}
- public func custom(key: String, value: Any) -> Mark {
- return mutate(key: key, value: value)
+ public func custom(key: String, value: EnvironmentValue, context: EscapeContext = .tainted(.html)) -> Mark {
+ return mutate(key: key, value: .init(value, context: context))
}
public func on(event: Events.Drag, _ value: String) -> Mark {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Clipboard, _ value: String) -> Mark {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Keyboard, _ value: String) -> Mark {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Mouse, _ value: String) -> Mark {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func on(event: Events.Wheel, _ value: String) -> Mark {
- return mutate(key: event.rawValue, value: TaintedString(value, as: .js(.attribute)))
+ return mutate(key: event.rawValue, value: .init(value, context: .tainted(.js)))
}
public func aria(atomic value: Bool) -> Mark {
- return mutate(ariaatomic: value)
+ return mutate(ariaatomic: .init(value, context: .trusted))
}
public func aria(busy value: Bool) -> Mark {
- return mutate(ariabusy: value)
+ return mutate(ariabusy: .init(value, context: .trusted))
}
public func aria(controls value: String) -> Mark {
- return mutate(ariacontrols: value)
+ return mutate(ariacontrols: .init(value, context: .tainted(.html)))
}
public func aria(current value: Values.Accessibility.Current) -> Mark {
- return mutate(ariacurrent: value.rawValue)
+ return mutate(ariacurrent: .init(value.rawValue, context: .trusted))
}
public func aria(describedBy value: String) -> Mark {
- return mutate(ariadescribedby: value)
+ return mutate(ariadescribedby: .init(value, context: .tainted(.html)))
}
public func aria(details value: String) -> Mark {
- return mutate(ariadetails: value)
+ return mutate(ariadetails: .init(value, context: .tainted(.html)))
}
public func aria(disabled value: Bool) -> Mark {
- return mutate(ariadisabled: value)
+ return mutate(ariadisabled: .init(value, context: .trusted))
}
public func aria(errorMessage value: String) -> Mark {
- return mutate(ariaerrormessage: value)
+ return mutate(ariaerrormessage: .init(value, context: .tainted(.html)))
}
public func aria(flowTo value: String) -> Mark {
- return mutate(ariaflowto: value)
+ return mutate(ariaflowto: .init(value, context: .tainted(.html)))
}
public func aria(hasPopup value: Values.Accessibility.Popup) -> Mark {
- return mutate(ariahaspopup: value.rawValue)
+ return mutate(ariahaspopup: .init(value.rawValue, context: .trusted))
}
public func aria(hidden value: Bool) -> Mark {
- return mutate(ariahidden: value)
+ return mutate(ariahidden: .init(value, context: .trusted))
}
public func aria(invalid value: Values.Accessibility.Invalid) -> Mark {
- return mutate(ariainvalid: value.rawValue)
+ return mutate(ariainvalid: .init(value.rawValue, context: .trusted))
}
public func aria(keyShortcuts value: String) -> Mark {
- return mutate(ariakeyshortcuts: value)
+ return mutate(ariakeyshortcuts: .init(value, context: .tainted(.html)))
}
public func aria(label value: String) -> Mark {
- return mutate(arialabel: value)
+ return mutate(arialabel: .init(value, context: .tainted(.html)))
}
public func aria(labeledBy value: String) -> Mark {
- return mutate(arialabeledby: value)
+ return mutate(arialabeledby: .init(value, context: .tainted(.html)))
}
public func aria(live value: Values.Accessibility.Live) -> Mark {
- return mutate(arialive: value.rawValue)
+ return mutate(arialive: .init(value.rawValue, context: .trusted))
}
public func aria(owns value: String) -> Mark {
- return mutate(ariaowns: value)
+ return mutate(ariaowns: .init(value, context: .tainted(.html)))
}
public func aria(relevant value: Values.Accessibility.Relevant) -> Mark {
- return mutate(ariarelevant: value.rawValue)
+ return mutate(ariarelevant: .init(value.rawValue, context: .trusted))
}
public func aria(roleDescription value: String) -> Mark {
- return mutate(ariaroledescription: value)
+ return mutate(ariaroledescription: .init(value, context: .tainted(.html)))
}
}
@@ -15589,19 +18395,25 @@ public struct Bdi: ContentNode, HtmlElement, BodyElement, FormElement, FigureEle
internal var name: String { "bdi" }
- internal var attributes: OrderedDictionary?
+ internal var attributes: OrderedDictionary?
internal var content: [Content]
+
+ internal var context: EscapeContext
/// Create a bidirectional isolate.
///
/// - Parameter content: The isolate's content.
public init(@ContentBuilder content: () -> [Content]) {
+
+ self.context = .tainted(.html)
self.content = content()
}
- internal init(attributes: OrderedDictionary?, content: [Content]) {
+ internal init(attributes: OrderedDictionary