-
Notifications
You must be signed in to change notification settings - Fork 0
/
Stylesheet.go
427 lines (418 loc) · 22.4 KB
/
Stylesheet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
package pkg
import (
"reflect"
"strings"
)
type CSStylesheet struct {
AlignContent string `default:".None"` // CSS
AlignItems string `default:".None"` // CSS
AlignSelf string `default:".None"` // CSS
All string `default:".None"` // CSS
Animation string `default:".None"` // CSS
AnimationDelay string `default:".None"` // CSS
AnimationDirection string `default:".None"` // CSS
AnimationDuration string `default:".None"` // CSS
AnimationFillMode string `default:".None"` // CSS
AnimationIteration string `default:".None"` // CSS
AnimationName string `default:".None"` // CSS
AnimationPlayState string `default:".None"` // CSS
AnimationTiming string `default:".None"` // CSS
BackdropFilter string `default:".None"` // CSS
BackfaceVisibility string `default:".None"` // CSS
Background string `default:".None"` // CSS
BackgroundAttachment string `default:".None"` // CSS
BackgroundBlendMode string `default:".None"` // CSS
BackgroundClip string `default:".None"` // CSS
BackgroundColor string `default:".None"` // CSS
BackgroundImage string `default:".None"` // CSS
BackgroundOrigin string `default:".None"` // CSS
BackgroundPosition string `default:".None"` // CSS
BackgroundRepeat string `default:".None"` // CSS
BackgroundSize string `default:".None"` // CSS
BlockSize string `default:".None"` // CSS
Border string `default:".None"` // CSS
BorderBlock string `default:".None"` // CSS
BorderBlockColor string `default:".None"` // CSS
BorderBlockEnd string `default:".None"` // CSS
BorderBlockEndColor string `default:".None"` // CSS
BorderBlockEndStyle string `default:".None"` // CSS
BorderBlockEndWidth string `default:".None"` // CSS
BorderBlockStart string `default:".None"` // CSS
BorderBlockStartColor string `default:".None"` // CSS
BorderBlockStartStyle string `default:".None"` // CSS
BorderBlockStartWidth string `default:".None"` // CSS
BorderBlockStyle string `default:".None"` // CSS
BorderBlockWidth string `default:".None"` // CSS
BorderBottom string `default:".None"` // CSS
BorderBottomColor string `default:".None"` // CSS
BorderBottomLeftRadius string `default:".None"` // CSS
BorderBottomRightRadius string `default:".None"` // CSS
BorderBottomStyle string `default:".None"` // CSS
BorderBottomWidth string `default:".None"` // CSS
BorderCollapse string `default:".None"` // CSS
BorderColor string `default:".None"` // CSS
BorderImage string `default:".None"` // CSS
BorderImageOutset string `default:".None"` // CSS
BorderImageRepeat string `default:".None"` // CSS
BorderImageSlice string `default:".None"` // CSS
BorderImageSource string `default:".None"` // CSS
BorderImageWidth string `default:".None"` // CSS
BorderInline string `default:".None"` // CSS
BorderInlineColor string `default:".None"` // CSS
BorderInlineEnd string `default:".None"` // CSS
BorderInlineEndColor string `default:".None"` // CSS
BorderInlineEndStyle string `default:".None"` // CSS
BorderInlineEndWidth string `default:".None"` // CSS
BorderInlineStart string `default:".None"` // CSS
BorderInlineStartColor string `default:".None"` // CSS
BorderInlineStartStyle string `default:".None"` // CSS
BorderInlineStartWidth string `default:".None"` // CSS
BorderInlineStyle string `default:".None"` // CSS
BorderInlineWidth string `default:".None"` // CSS
BorderLeft string `default:".None"` // CSS
BorderLeftColor string `default:".None"` // CSS
BorderLeftStyle string `default:".None"` // CSS
BorderLeftWidth string `default:".None"` // CSS
BorderRadius string `default:".None"` // CSS
BorderRight string `default:".None"` // CSS
BorderRightColor string `default:".None"` // CSS
BorderRightStyle string `default:".None"` // CSS
BorderRightWidth string `default:".None"` // CSS
BorderSpacing string `default:".None"` // CSS
BorderStyle string `default:".None"` // CSS
BorderTop string `default:".None"` // CSS
BorderTopColor string `default:".None"` // CSS
BorderTopLeftRadius string `default:".None"` // CSS
BorderTopRightRadius string `default:".None"` // CSS
BorderTopStyle string `default:".None"` // CSS
BorderTopWidth string `default:".None"` // CSS
BorderWidth string `default:".None"` // CSS
Bottom string `default:".None"` // CSS
BoxDecorationBreak string `default:".None"` // CSS
BoxShadow string `default:".None"` // CSS
BoxSizing string `default:".None"` // CSS
BreakAfter string `default:".None"` // CSS
BreakBefore string `default:".None"` // CSS
BreakInside string `default:".None"` // CSS
CaptionSide string `default:".None"` // CSS
CaretColor string `default:".None"` // CSS
Clear string `default:".None"` // CSS
Clip string `default:".None"` // CSS
ClipPath string `default:".None"` // CSS
Color string `default:".None"` // CSS
ColumnCount string `default:".None"` // CSS
ColumnFill string `default:".None"` // CSS
ColumnGap string `default:".None"` // CSS
ColumnRule string `default:".None"` // CSS
ColumnRuleColor string `default:".None"` // CSS
ColumnRuleStyle string `default:".None"` // CSS
ColumnRuleWidth string `default:".None"` // CSS
ColumnSpan string `default:".None"` // CSS
ColumnWidth string `default:".None"` // CSS
Columns string `default:".None"` // CSS
Contain string `default:".None"` // CSS
Content string `default:".None"` // CSS
CounterIncrement string `default:".None"` // CSS
CounterReset string `default:".None"` // CSS
Cursor string `default:".None"` // CSS
Direction string `default:".None"` // CSS
Display string `default:".None"` // CSS
EmptyCells string `default:".None"` // CSS
Filter string `default:".None"` // CSS
Flex string `default:".None"` // CSS
FlexBasis string `default:".None"` // CSS
FlexDirection string `default:".None"` // CSS
FlexFlow string `default:".None"` // CSS
FlexGrow string `default:".None"` // CSS
FlexShrink string `default:".None"` // CSS
FlexWrap string `default:".None"` // CSS
Float string `default:".None"` // CSS
Font string `default:".None"` // CSS
FontFamily string `default:".None"` // CSS
FontFeatureSettings string `default:".None"` // CSS
FontKerning string `default:".None"` // CSS
FontLanguageOverride string `default:".None"` // CSS
FontSize string `default:".None"` // CSS
FontSizeAdjust string `default:".None"` // CSS
FontStretch string `default:".None"` // CSS
FontStyle string `default:".None"` // CSS
FontSynthesis string `default:".None"` // CSS
FontVariant string `default:".None"` // CSS
FontVariantCaps string `default:".None"` // CSS
FontVariantEastAsian string `default:".None"` // CSS
FontVariantLigatures string `default:".None"` // CSS
FontVariantNumeric string `default:".None"` // CSS
FontVariantPosition string `default:".None"` // CSS
FontWeight string `default:".None"` // CSS
Gap string `default:".None"` // CSS
Grid string `default:".None"` // CSS
GridArea string `default:".None"` // CSS
GridAutoColumns string `default:".None"` // CSS
GridAutoFlow string `default:".None"` // CSS
GridAutoRows string `default:".None"` // CSS
GridColumn string `default:".None"` // CSS
GridColumnEnd string `default:".None"` // CSS
GridColumnGap string `default:".None"` // CSS
GridColumnStart string `default:".None"` // CSS
GridGap string `default:".None"` // CSS
GridRow string `default:".None"` // CSS
GridRowEnd string `default:".None"` // CSS
GridRowGap string `default:".None"` // CSS
GridRowStart string `default:".None"` // CSS
GridTemplate string `default:".None"` // CSS
GridTemplateAreas string `default:".None"` // CSS
GridTemplateColumns string `default:".None"` // CSS
GridTemplateRows string `default:".None"` // CSS
HangingPunctuation string `default:".None"` // CSS
Height string `default:".None"` // CSS
Hyphens string `default:".None"` // CSS
ImageOrientation string `default:".None"` // CSS
ImageRendering string `default:".None"` // CSS
InlineSize string `default:".None"` // CSS
Inset string `default:".None"` // CSS
InsetBlock string `default:".None"` // CSS
InsetBlockEnd string `default:".None"` // CSS
InsetBlockStart string `default:".None"` // CSS
InsetInline string `default:".None"` // CSS
InsetInlineEnd string `default:".None"` // CSS
InsetInlineStart string `default:".None"` // CSS
Isolation string `default:".None"` // CSS
JustifyContent string `default:".None"` // CSS
Left string `default:".None"` // CSS
LetterSpacing string `default:".None"` // CSS
LineBreak string `default:".None"` // CSS
LineHeight string `default:".None"` // CSS
ListStyle string `default:".None"` // CSS
ListStyleImage string `default:".None"` // CSS
ListStylePosition string `default:".None"` // CSS
ListStyleType string `default:".None"` // CSS
Margin string `default:".None"` // CSS
MarginBlock string `default:".None"` // CSS
MarginBlockEnd string `default:".None"` // CSS
MarginBlockStart string `default:".None"` // CSS
MarginBottom string `default:".None"` // CSS
MarginInline string `default:".None"` // CSS
MarginInlineEnd string `default:".None"` // CSS
MarginInlineStart string `default:".None"` // CSS
MarginLeft string `default:".None"` // CSS
MarginRight string `default:".None"` // CSS
MarginTop string `default:".None"` // CSS
Mask string `default:".None"` // CSS
MaskBorder string `default:".None"` // CSS
MaskBorderMode string `default:".None"` // CSS
MaskBorderOutset string `default:".None"` // CSS
MaskBorderRepeat string `default:".None"` // CSS
MaskBorderSlice string `default:".None"` // CSS
MaskBorderSource string `default:".None"` // CSS
MaskBorderWidth string `default:".None"` // CSS
MaskClip string `default:".None"` // CSS
MaskComposite string `default:".None"` // CSS
MaskImage string `default:".None"` // CSS
MaskMode string `default:".None"` // CSS
MaskOrigin string `default:".None"` // CSS
MaskPosition string `default:".None"` // CSS
MaskRepeat string `default:".None"` // CSS
MaskSize string `default:".None"` // CSS
MaskType string `default:".None"` // CSS
MaxBlockSize string `default:".None"` // CSS
MaxHeight string `default:".None"` // CSS
MaxInlineSize string `default:".None"` // CSS
MaxWidth string `default:".None"` // CSS
MinBlockSize string `default:".None"` // CSS
MinHeight string `default:".None"` // CSS
MinInlineSize string `default:".None"` // CSS
MinWidth string `default:".None"` // CSS
MixBlendMode string `default:".None"` // CSS
ObjectFit string `default:".None"` // CSS
ObjectPosition string `default:".None"` // CSS
Offset string `default:".None"` // CSS
OffsetAnchor string `default:".None"` // CSS
OffsetBlock string `default:".None"` // CSS
OffsetBlockEnd string `default:".None"` // CSS
OffsetBlockStart string `default:".None"` // CSS
OffsetInline string `default:".None"` // CSS
OffsetInlineEnd string `default:".None"` // CSS
OffsetInlineStart string `default:".None"` // CSS
OffsetDistance string `default:".None"` // CSS
OffsetPath string `default:".None"` // CSS
OffsetRotate string `default:".None"` // CSS
Opacity string `default:".None"` // CSS
Order string `default:".None"` // CSS
Orphans string `default:".None"` // CSS
Outline string `default:".None"` // CSS
OutlineColor string `default:".None"` // CSS
OutlineOffset string `default:".None"` // CSS
OutlineStyle string `default:".None"` // CSS
OutlineWidth string `default:".None"` // CSS
Overflow string `default:".None"` // CSS
OverflowAnchor string `default:".None"` // CSS
OverflowBlock string `default:".None"` // CSS
OverflowInline string `default:".None"` // CSS
OverflowWrap string `default:".None"` // CSS
OverflowX string `default:".None"` // CSS
OverflowY string `default:".None"` // CSS
OverscrollBehavior string `default:".None"` // CSS
OverscrollBehaviorBlock string `default:".None"` // CSS
OverscrollBehaviorInline string `default:".None"` // CSS
OverscrollBehaviorX string `default:".None"` // CSS
OverscrollBehaviorY string `default:".None"` // CSS
Padding string `default:".None"` // CSS
PaddingBlock string `default:".None"` // CSS
PaddingBlockEnd string `default:".None"` // CSS
PaddingBlockStart string `default:".None"` // CSS
PaddingBottom string `default:".None"` // CSS
PaddingInline string `default:".None"` // CSS
PaddingInlineEnd string `default:".None"` // CSS
PaddingInlineStart string `default:".None"` // CSS
PaddingLeft string `default:".None"` // CSS
PaddingRight string `default:".None"` // CSS
PaddingTop string `default:".None"` // CSS
PageBreakAfter string `default:".None"` // CSS
PageBreakBefore string `default:".None"` // CSS
PageBreakInside string `default:".None"` // CSS
PaintOrder string `default:".None"` // CSS
Perspective string `default:".None"` // CSS
PerspectiveOrigin string `default:".None"` // CSS
PlaceContent string `default:".None"` // CSS
PlaceItems string `default:".None"` // CSS
PlaceSelf string `default:".None"` // CSS
PointerEvents string `default:".None"` // CSS
Position string `default:".None"` // CSS
Quotes string `default:".None"` // CSS
Resize string `default:".None"` // CSS
Right string `default:".None"` // CSS
Rotate string `default:".None"` // CSS
RowGap string `default:".None"` // CSS
RubyAlign string `default:".None"` // CSS
RubyMerge string `default:".None"` // CSS
RubyPosition string `default:".None"` // CSS
Scale string `default:".None"` // CSS
ScrollBehavior string `default:".None"` // CSS
ScrollMargin string `default:".None"` // CSS
ScrollMarginBlock string `default:".None"` // CSS
ScrollMarginBlockEnd string `default:".None"` // CSS
ScrollMarginBlockStart string `default:".None"` // CSS
ScrollMarginBottom string `default:".None"` // CSS
ScrollMarginInline string `default:".None"` // CSS
ScrollMarginInlineEnd string `default:".None"` // CSS
ScrollMarginInlineStart string `default:".None"` // CSS
ScrollMarginLeft string `default:".None"` // CSS
ScrollMarginRight string `default:".None"` // CSS
ScrollMarginTop string `default:".None"` // CSS
ScrollPadding string `default:".None"` // CSS
ScrollPaddingBlock string `default:".None"` // CSS
ScrollPaddingBlockEnd string `default:".None"` // CSS
ScrollPaddingBlockStart string `default:".None"` // CSS
ScrollPaddingBottom string `default:".None"` // CSS
ScrollPaddingInline string `default:".None"` // CSS
ScrollPaddingInlineEnd string `default:".None"` // CSS
ScrollPaddingInlineStart string `default:".None"` // CSS
ScrollPaddingLeft string `default:".None"` // CSS
ScrollPaddingRight string `default:".None"` // CSS
ScrollPaddingTop string `default:".None"` // CSS
ScrollSnapAlign string `default:".None"` // CSS
ScrollSnapStop string `default:".None"` // CSS
ScrollSnapType string `default:".None"` // CSS
ShapeImageThreshold string `default:".None"` // CSS
ShapeMargin string `default:".None"` // CSS
ShapeOutside string `default:".None"` // CSS
TabSize string `default:".None"` // CSS
TableLayout string `default:".None"` // CSS
TextAlign string `default:".None"` // CSS
TextAlignLast string `default:".None"` // CSS
TextCombineUpright string `default:".None"` // CSS
TextDecoration string `default:".None"` // CSS
TextDecorationColor string `default:".None"` // CSS
TextDecorationLine string `default:".None"` // CSS
TextDecorationSkip string `default:".None"` // CSS
TextDecorationSkipInk string `default:".None"` // CSS
TextDecorationStyle string `default:".None"` // CSS
TextDecorationThickness string `default:".None"` // CSS
TextEmphasis string `default:".None"` // CSS
TextEmphasisColor string `default:".None"` // CSS
TextEmphasisPosition string `default:".None"` // CSS
TextEmphasisStyle string `default:".None"` // CSS
TextIndent string `default:".None"` // CSS
TextJustify string `default:".None"` // CSS
TextOrientation string `default:".None"` // CSS
TextOverflow string `default:".None"` // CSS
TextRendering string `default:".None"` // CSS
TextShadow string `default:".None"` // CSS
TextSizeAdjust string `default:".None"` // CSS
TextTransform string `default:".None"` // CSS
TextUnderlinePosition string `default:".None"` // CSS
Top string `default:".None"` // CSS
TouchAction string `default:".None"` // CSS
Transform string `default:".None"` // CSS
TransformBox string `default:".None"` // CSS
TransformOrigin string `default:".None"` // CSS
TransformStyle string `default:".None"` // CSS
Transition string `default:".None"` // CSS
TransitionDelay string `default:".None"` // CSS
TransitionDuration string `default:".None"` // CSS
TransitionProperty string `default:".None"` // CSS
TransitionTiming string `default:".None"` // CSS
Translate string `default:".None"` // CSS
UnicodeBidi string `default:".None"` // CSS
UserSelect string `default:".None"` // CSS
VerticalAlign string `default:".None"` // CSS
Visibility string `default:".None"` // CSS
WhiteSpace string `default:".None"` // CSS
Width string `default:".None"` // CSS
WillChange string `default:".None"` // CSS
WordBreak string `default:".None"` // CSS
WordSpacing string `default:".None"` // CSS
WordWrap string `default:".None"` // CSS
WritingMode string `default:".None"` // CSS
ZIndex string `default:".None"` // CSS
}
// Convert the sheet to map ignoring a .None and ""
func ConvertSheetToSlice(sheet CSStylesheet) map[string]string {
cssType := reflect.TypeOf(sheet)
cssValue := reflect.ValueOf(sheet)
// Inicializar el slice de mapas
var cssMapSlice map[string]string = make(map[string]string)
// Recorrer todos los campos de la estructura
for i := 0; i < cssType.NumField(); i++ {
field := cssType.Field(i)
value := cssValue.Field(i).String()
// Ignorar las propiedades con el valor por defecto
if value != ".None" && value != "" && strings.TrimSpace(value) != "" {
// Convertir el nombre del campo a un estilo CSS válido
cssPropertyName := toCSSPropertyName(field.Name)
cssMapSlice[cssPropertyName] = value
}
}
return cssMapSlice
}
func toCSSPropertyName(a string) string {
//A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
a = strings.ReplaceAll(a, "A", "-a")
a = strings.ReplaceAll(a, "B", "-b")
a = strings.ReplaceAll(a, "C", "-c")
a = strings.ReplaceAll(a, "D", "-d")
a = strings.ReplaceAll(a, "E", "-e")
a = strings.ReplaceAll(a, "F", "-f")
a = strings.ReplaceAll(a, "G", "-g")
a = strings.ReplaceAll(a, "H", "-h")
a = strings.ReplaceAll(a, "I", "-i")
a = strings.ReplaceAll(a, "J", "-j")
a = strings.ReplaceAll(a, "K", "-k")
a = strings.ReplaceAll(a, "L", "-l")
a = strings.ReplaceAll(a, "M", "-m")
a = strings.ReplaceAll(a, "N", "-n")
a = strings.ReplaceAll(a, "O", "-o")
a = strings.ReplaceAll(a, "P", "-p")
a = strings.ReplaceAll(a, "Q", "-q")
a = strings.ReplaceAll(a, "R", "-r")
a = strings.ReplaceAll(a, "S", "-s")
a = strings.ReplaceAll(a, "T", "-t")
a = strings.ReplaceAll(a, "U", "-u")
a = strings.ReplaceAll(a, "V", "-v")
a = strings.ReplaceAll(a, "W", "-w")
a = strings.ReplaceAll(a, "X", "-x")
a = strings.ReplaceAll(a, "Y", "-y")
a = strings.ReplaceAll(a, "Z", "-z")
a = strings.TrimPrefix(a, "-")
return a
}