Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions Sources/HTMLKit/Abstraction/Attributes/BasicAttributes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2813,7 +2813,22 @@ extension ReversedAttribute where Self: EmptyNode {
@_documentation(visibility: internal)
public protocol RoleAttribute: Attribute {

/// Describe the role of an element.
/// Describe the roles of an element.
///
/// ```swift
/// Anchor {
/// "Lorem ipsum..."
/// }
/// .reference("https://...")
/// .role([.button])
/// ```
///
/// - Parameter value: The role to inform about.
///
/// - Returns: The element
func role(_ values: [Values.Role]) -> Self

/// Describe the roles of an element.
///
/// ```swift
/// Anchor {
Expand All @@ -2826,7 +2841,7 @@ public protocol RoleAttribute: Attribute {
/// - Parameter value: The role to inform about.
///
/// - Returns: The element
func role(_ value: Values.Role) -> Self
func role(_ values: Values.Role...) -> Self
}

extension RoleAttribute where Self: ContentNode {
Expand Down
8 changes: 6 additions & 2 deletions Sources/HTMLKit/Abstraction/Elements/BasicElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,12 @@ extension Html: GlobalAttributes, GlobalEventAttributes {
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Html {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Html {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Html {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
757 changes: 600 additions & 157 deletions Sources/HTMLKit/Abstraction/Elements/BodyElements.swift

Large diffs are not rendered by default.

16 changes: 12 additions & 4 deletions Sources/HTMLKit/Abstraction/Elements/DefinitionElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,12 @@ extension TermName: GlobalAttributes, GlobalEventAttributes, GlobalAccessibility
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> TermName {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> TermName {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> TermName {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -741,8 +745,12 @@ extension TermDefinition: GlobalAttributes, GlobalEventAttributes, GlobalAccessi
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> TermDefinition {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> TermDefinition {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> TermDefinition {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
8 changes: 6 additions & 2 deletions Sources/HTMLKit/Abstraction/Elements/FigureElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,12 @@ extension FigureCaption: GlobalAttributes, GlobalEventAttributes, GlobalAccessib
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> FigureCaption {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> FigureCaption {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> FigureCaption {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
48 changes: 36 additions & 12 deletions Sources/HTMLKit/Abstraction/Elements/FormElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,12 @@ extension Input: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAtt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Input {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Input {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Input {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -840,8 +844,12 @@ extension Label: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAtt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Label {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Label {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Label {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -1391,8 +1399,12 @@ extension Select: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Select {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Select {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Select {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -1875,8 +1887,12 @@ extension TextArea: GlobalAttributes, GlobalEventAttributes, GlobalAccessibility
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> TextArea {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> TextArea {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> TextArea {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -2492,8 +2508,12 @@ extension Button: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Button {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Button {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Button {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -3107,8 +3127,12 @@ extension Fieldset: GlobalAttributes, GlobalEventAttributes, GlobalAccessibility
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Fieldset {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Fieldset {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Fieldset {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
40 changes: 30 additions & 10 deletions Sources/HTMLKit/Abstraction/Elements/HeadElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,12 @@ extension Title: GlobalAttributes, GlobalEventAttributes {
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Title {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Title {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Title {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -493,8 +497,12 @@ extension Base: GlobalAttributes, GlobalEventAttributes, ReferenceAttribute, Tar
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Base {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Base {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Base {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -788,8 +796,12 @@ extension Meta: GlobalAttributes, GlobalEventAttributes, ContentAttribute, NameA
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Meta {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Meta {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Meta {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -1126,8 +1138,12 @@ extension Style: GlobalAttributes, GlobalEventAttributes, TypeAttribute, MediaAt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Style {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Style {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Style {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -1448,8 +1464,12 @@ extension Link: GlobalAttributes, GlobalEventAttributes, ReferenceAttribute, Ref
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Link {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Link {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Link {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
16 changes: 12 additions & 4 deletions Sources/HTMLKit/Abstraction/Elements/HtmlElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,12 @@ extension Head: GlobalAttributes, GlobalEventAttributes {
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Head {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Head {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Head {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -498,8 +502,12 @@ extension Body: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAttr
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Body {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Body {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Body {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
32 changes: 24 additions & 8 deletions Sources/HTMLKit/Abstraction/Elements/InputElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,12 @@ extension OptionGroup: GlobalAttributes, GlobalEventAttributes, GlobalAccessibil
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> OptionGroup {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> OptionGroup {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> OptionGroup {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -763,8 +767,12 @@ extension Option: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Option {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Option {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Option {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -1349,8 +1357,12 @@ extension Legend: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAt
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Legend {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Legend {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Legend {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down Expand Up @@ -1883,8 +1895,12 @@ extension Summary: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityA
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Summary {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Summary {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Summary {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
8 changes: 6 additions & 2 deletions Sources/HTMLKit/Abstraction/Elements/ListElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -203,8 +203,12 @@ extension ListItem: GlobalAttributes, GlobalEventAttributes, GlobalAccessibility
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> ListItem {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> ListItem {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> ListItem {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
8 changes: 6 additions & 2 deletions Sources/HTMLKit/Abstraction/Elements/MapElements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,12 @@ extension Area: GlobalAttributes, GlobalEventAttributes, GlobalAccessibilityAttr
return mutate(nonce: .init(value, context: .tainted(.html)))
}

public func role(_ value: Values.Role) -> Area {
return mutate(role: .init(value.rawValue, context: .trusted))
public func role(_ values: [Values.Role]) -> Area {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

public func role(_ values: Values.Role...) -> Area {
return mutate(role: .init(EnumeratedList(values: values, separator: " "), context: .trusted))
}

@available(*, unavailable, message: "Use the spellcheck(_:) modifier instead.")
Expand Down
Loading
Loading