Skip to content

Commit 2571e6c

Browse files
macro expansion refactor; now uses HTMLExpansionContext
1 parent bdf74c6 commit 2571e6c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+510
-319
lines changed

Sources/CSS/CSS.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public enum CSSStyle : HTMLParsable {
133133
//case zIndex(ZIndex?)
134134
case zoom(Zoom)
135135

136-
public init?(context: some MacroExpansionContext, isUnchecked: Bool, key: String, arguments: LabeledExprListSyntax) {
136+
public init?(context: HTMLExpansionContext) {
137137
return nil
138138
}
139139
public func htmlValue(encoding: HTMLEncoding, forMacro: Bool) -> String? {

Sources/CSS/CSSUnit.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,16 @@ public enum CSSUnit : HTMLInitializable { // https://www.w3schools.com/cssref/cs
129129
#if canImport(SwiftSyntax)
130130
// MARK: HTMLParsable
131131
extension CSSUnit : HTMLParsable {
132-
public init?(context: some MacroExpansionContext, isUnchecked: Bool, key: String, arguments: LabeledExprListSyntax) {
133-
let expression:ExprSyntax = arguments.first!.expression
132+
public init?(context: HTMLExpansionContext) {
134133
func float() -> Float? {
135-
guard let s:String = expression.integerLiteral?.literal.text ?? expression.floatLiteral?.literal.text else { return nil }
134+
guard let expression:ExprSyntax = context.expression,
135+
let s:String = expression.integerLiteral?.literal.text ?? expression.floatLiteral?.literal.text
136+
else {
137+
return nil
138+
}
136139
return Float(s)
137140
}
138-
switch key {
141+
switch context.key {
139142
case "centimeters": self = .centimeters(float())
140143
case "millimeters": self = .millimeters(float())
141144
case "inches": self = .inches(float())

Sources/CSS/styles/AccentColor.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import HTMLKitUtilities
99
import SwiftSyntax
1010
import SwiftSyntaxMacros
1111

12-
/*
1312
extension CSSStyle {
1413
public enum AccentColor : HTMLInitializable {
1514
case auto
@@ -49,4 +48,4 @@ extension CSSStyle {
4948
@inlinable
5049
public var htmlValueIsVoidable : Bool { false }
5150
}
52-
}*/
51+
}

Sources/CSS/styles/Align.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ extension CSSStyle {
2020

2121
// MARK: Align Content
2222
extension CSSStyle.Align {
23-
public enum Content : String, HTMLInitializable {
23+
public enum Content : String, HTMLParsable {
2424
case baseline
2525
case end
2626
case firstBaseline
@@ -63,7 +63,7 @@ extension CSSStyle.Align {
6363

6464
// MARK: Align Items
6565
extension CSSStyle.Align {
66-
public enum Items : String, HTMLInitializable {
66+
public enum Items : String, HTMLParsable {
6767
case anchorCenter
6868
case baseline
6969
case center
@@ -105,8 +105,8 @@ extension CSSStyle.Align {
105105
}
106106

107107
// MARK: Align Self
108-
extension CSSStyle {
109-
public enum AlignSelf : String, HTMLInitializable {
108+
extension CSSStyle.Align {
109+
public enum `Self` : String, HTMLParsable {
110110
case anchorCenter
111111
case auto
112112
case baseline

Sources/CSS/styles/Appearance.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Appearance : String, HTMLInitializable {
11+
public enum Appearance : String, HTMLParsable {
1212
case auto
1313
case button
1414
case checkbox

Sources/CSS/styles/BackfaceVisibility.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum BackfaceVisibility : String, HTMLInitializable {
11+
public enum BackfaceVisibility : String, HTMLParsable {
1212
case hidden
1313
case inherit
1414
case initial

Sources/CSS/styles/Box.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Box : String, HTMLInitializable {
11+
public enum Box : String, HTMLParsable {
1212
case decorationBreak
1313
case reflect
1414
case shadow

Sources/CSS/styles/Break.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Break : String, HTMLInitializable {
11+
public enum Break : String, HTMLParsable {
1212
case after
1313
case before
1414
case inside

Sources/CSS/styles/Clear.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Clear : String, HTMLInitializable {
11+
public enum Clear : String, HTMLParsable {
1212
case both
1313
case inherit
1414
case initial

Sources/CSS/styles/Color.swift

Lines changed: 162 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import SwiftSyntax
1010
import SwiftSyntaxMacros
1111

1212
extension CSSStyle {
13-
public enum Color : HTMLInitializable {
13+
public enum Color : HTMLParsable {
1414
case currentColor
1515
case hex(String)
1616
case hsl(SFloat, SFloat, SFloat, SFloat? = nil)
@@ -90,7 +90,7 @@ extension CSSStyle {
9090
case lemonChiffon
9191
case lightBlue
9292
case lightCoral
93-
case lighCyan
93+
case lightCyan
9494
case lightGoldenRodYellow
9595
case lightGray, lightGrey
9696
case lightGreen
@@ -167,12 +167,170 @@ extension CSSStyle {
167167
case yellow
168168
case yellowGreen
169169

170-
public init?(context: some MacroExpansionContext, isUnchecked: Bool, key: String, arguments: LabeledExprListSyntax) {
171-
return nil
170+
// MARK: init
171+
public init?(context: HTMLExpansionContext) {
172+
switch context.key {
173+
case "currentColor": self = .currentColor
174+
case "inherit": self = .inherit
175+
case "initial": self = .initial
176+
case "transparent": self = .transparent
177+
178+
case "aliceBlue": self = .aliceBlue
179+
case "antiqueWhite": self = .antiqueWhite
180+
case "aqua": self = .aqua
181+
case "aquamarine": self = .aquamarine
182+
case "azure": self = .azure
183+
case "beige": self = .beige
184+
case "bisque": self = .bisque
185+
case "black": self = .black
186+
case "blanchedAlmond": self = .blanchedAlmond
187+
case "blue": self = .blue
188+
case "blueViolet": self = .blueViolet
189+
case "brown": self = .brown
190+
case "burlyWood": self = .burlyWood
191+
case "cadetBlue": self = .cadetBlue
192+
case "chartreuse": self = .chartreuse
193+
case "chocolate": self = .chocolate
194+
case "coral": self = .coral
195+
case "cornflowerBlue": self = .cornflowerBlue
196+
case "cornsilk": self = .cornsilk
197+
case "crimson": self = .crimson
198+
case "cyan": self = .cyan
199+
case "darkBlue": self = .darkBlue
200+
case "darkCyan": self = .darkCyan
201+
case "darkGoldenRod": self = .darkGoldenRod
202+
case "darkGray": self = .darkGray
203+
case "darkGrey": self = .darkGrey
204+
case "darkGreen": self = .darkGreen
205+
case "darkKhaki": self = .darkKhaki
206+
case "darkMagenta": self = .darkMagenta
207+
case "darkOliveGreen": self = .darkOliveGreen
208+
case "darkOrange": self = .darkOrange
209+
case "darkOrchid": self = .darkOrchid
210+
case "darkRed": self = .darkRed
211+
case "darkSalmon": self = .darkSalmon
212+
case "darkSeaGreen": self = .darkSeaGreen
213+
case "darkSlateBlue": self = .darkSlateBlue
214+
case "darkSlateGray": self = .darkSlateGray
215+
case "darkSlateGrey": self = .darkSlateGrey
216+
case "darkTurquoise": self = .darkTurquoise
217+
case "darkViolet": self = .darkViolet
218+
case "deepPink": self = .deepPink
219+
case "deepSkyBlue": self = .deepSkyBlue
220+
case "dimGray": self = .dimGray
221+
case "dimGrey": self = .dimGrey
222+
case "dodgerBlue": self = .dodgerBlue
223+
case "fireBrick": self = .fireBrick
224+
case "floralWhite": self = .floralWhite
225+
case "forestGreen": self = .forestGreen
226+
case "fuchsia": self = .fuchsia
227+
case "gainsboro": self = .gainsboro
228+
case "ghostWhite": self = .ghostWhite
229+
case "gold": self = .gold
230+
case "goldenRod": self = .goldenRod
231+
case "gray": self = .gray
232+
case "grey": self = .grey
233+
case "green": self = .green
234+
case "greenYellow": self = .greenYellow
235+
case "honeyDew": self = .honeyDew
236+
case "hotPink": self = .hotPink
237+
case "indianRed": self = .indianRed
238+
case "indigo": self = .indigo
239+
case "ivory": self = .ivory
240+
case "khaki": self = .khaki
241+
case "lavender": self = .lavender
242+
case "lavenderBlush": self = .lavenderBlush
243+
case "lawnGreen": self = .lawnGreen
244+
case "lemonChiffon": self = .lemonChiffon
245+
case "lightBlue": self = .lightBlue
246+
case "lightCoral": self = .lightCoral
247+
case "lightCyan": self = .lightCyan
248+
case "lightGoldenRodYellow": self = .lightGoldenRodYellow
249+
case "lightGray": self = .lightGray
250+
case "lightGrey": self = .lightGrey
251+
case "lightGreen": self = .lightGreen
252+
case "lightPink": self = .lightPink
253+
case "lightSalmon": self = .lightSalmon
254+
case "lightSeaGreen": self = .lightSeaGreen
255+
case "lightSkyBlue": self = .lightSkyBlue
256+
case "lightSlateGray": self = .lightSlateGray
257+
case "lightSlateGrey": self = .lightSlateGrey
258+
case "lightSteelBlue": self = .lightSteelBlue
259+
case "lightYellow": self = .lightYellow
260+
case "lime": self = .lime
261+
case "limeGreen": self = .limeGreen
262+
case "linen": self = .linen
263+
case "magenta": self = .magenta
264+
case "maroon": self = .maroon
265+
case "mediumAquaMarine": self = .mediumAquaMarine
266+
case "mediumBlue": self = .mediumBlue
267+
case "mediumOrchid": self = .mediumOrchid
268+
case "mediumPurple": self = .mediumPurple
269+
case "mediumSeaGreen": self = .mediumSeaGreen
270+
case "mediumSlateBlue": self = .mediumSlateBlue
271+
case "mediumSpringGreen": self = .mediumSpringGreen
272+
case "mediumTurquoise": self = .mediumTurquoise
273+
case "mediumVioletRed": self = .mediumVioletRed
274+
case "midnightBlue": self = .midnightBlue
275+
case "mintCream": self = .mintCream
276+
case "mistyRose": self = .mistyRose
277+
case "moccasin": self = .moccasin
278+
case "navajoWhite": self = .navajoWhite
279+
case "navy": self = .navy
280+
case "oldLace": self = .oldLace
281+
case "olive": self = .olive
282+
case "oliveDrab": self = .oliveDrab
283+
case "orange": self = .orange
284+
case "orangeRed": self = .orangeRed
285+
case "orchid": self = .orchid
286+
case "paleGoldenRod": self = .paleGoldenRod
287+
case "paleGreen": self = .paleGreen
288+
case "paleTurquoise": self = .paleTurquoise
289+
case "paleVioletRed": self = .paleVioletRed
290+
case "papayaWhip": self = .papayaWhip
291+
case "peachPuff": self = .peachPuff
292+
case "peru": self = .peru
293+
case "pink": self = .pink
294+
case "plum": self = .plum
295+
case "powderBlue": self = .powderBlue
296+
case "purple": self = .purple
297+
case "rebeccaPurple": self = .rebeccaPurple
298+
case "red": self = .red
299+
case "rosyBrown": self = .rosyBrown
300+
case "royalBlue": self = .royalBlue
301+
case "saddleBrown": self = .saddleBrown
302+
case "salmon": self = .salmon
303+
case "sandyBrown": self = .sandyBrown
304+
case "seaGreen": self = .seaGreen
305+
case "seaShell": self = .seaShell
306+
case "sienna": self = .sienna
307+
case "silver": self = .silver
308+
case "skyBlue": self = .skyBlue
309+
case "slateBlue": self = .slateBlue
310+
case "slateGray": self = .slateGray
311+
case "slateGrey": self = .slateGrey
312+
case "snow": self = .snow
313+
case "springGreen": self = .springGreen
314+
case "steelBlue": self = .steelBlue
315+
case "tan": self = .tan
316+
case "teal": self = .teal
317+
case "thistle": self = .thistle
318+
case "tomato": self = .tomato
319+
case "turquoise": self = .turquoise
320+
case "violet": self = .violet
321+
case "wheat": self = .wheat
322+
case "white": self = .white
323+
case "whiteSmoke": self = .whiteSmoke
324+
case "yellow": self = .yellow
325+
case "yellowGreen": self = .yellowGreen
326+
default: return nil
327+
}
172328
}
173329

330+
/// - Warning: Never use.
174331
public var key : String { "" }
175332

333+
// MARK: HTML value
176334
@inlinable
177335
public func htmlValue(encoding: HTMLEncoding, forMacro: Bool) -> String? {
178336
switch self {

Sources/CSS/styles/ColorScheme.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum ColorScheme : String, HTMLInitializable {
11+
public enum ColorScheme : String, HTMLParsable {
1212
case dark
1313
case light
1414
case lightDark

Sources/CSS/styles/ColumnCount.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import SwiftSyntax
1010
import SwiftSyntaxMacros
1111

1212
extension CSSStyle {
13-
public enum ColumnCount : HTMLInitializable {
13+
public enum ColumnCount : HTMLParsable {
1414
case auto
1515
case inherit
1616
case initial
1717
case int(Int)
1818

19-
public init?(context: some MacroExpansionContext, isUnchecked: Bool, key: String, arguments: SwiftSyntax.LabeledExprListSyntax) {
19+
public init?(context: HTMLExpansionContext) {
2020
return nil
2121
}
2222

Sources/CSS/styles/Direction.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Direction : String, HTMLInitializable {
11+
public enum Direction : String, HTMLParsable {
1212
case ltr
1313
case inherit
1414
case initial

Sources/CSS/styles/Display.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Display : String, HTMLInitializable {
11+
public enum Display : String, HTMLParsable {
1212
/// Displays an element as a block element (like `<p>`). It starts on a new line, and takes up the whole width
1313
case block
1414

Sources/CSS/styles/EmptyCells.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum EmptyCells : String, HTMLInitializable {
11+
public enum EmptyCells : String, HTMLParsable {
1212
case hide
1313
case inherit
1414
case initial

Sources/CSS/styles/Float.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Float : String, HTMLInitializable {
11+
public enum Float : String, HTMLParsable {
1212
case inherit
1313
case initial
1414
case left

Sources/CSS/styles/HyphenateCharacter.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ import SwiftSyntax
1010
import SwiftSyntaxMacros
1111

1212
extension CSSStyle {
13-
public enum HyphenateCharacter : HTMLInitializable {
13+
public enum HyphenateCharacter : HTMLParsable {
1414
case auto
1515
case char(Character)
1616
case inherit
1717
case initial
1818

19-
public init?(context: some MacroExpansionContext, isUnchecked: Bool, key: String, arguments: LabeledExprListSyntax) {
19+
public init?(context: HTMLExpansionContext) {
2020
return nil
2121
}
2222

Sources/CSS/styles/Hyphens.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import HTMLKitUtilities
99

1010
extension CSSStyle {
11-
public enum Hyphens : String, HTMLInitializable {
11+
public enum Hyphens : String, HTMLParsable {
1212
case auto
1313
case inherit
1414
case initial

0 commit comments

Comments
 (0)