File size: 1,970 Bytes
bc20498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Self-closing element {"dialect": "jsx"}

<img/>

==>

Script(ExpressionStatement(JSXElement(JSXSelfClosingTag(JSXStartTag,JSXBuiltin(JSXIdentifier),JSXSelfCloseEndTag))))

# Regular element {"dialect": "jsx"}

<Foo>bar</Foo>

==>

Script(ExpressionStatement(JSXElement(
  JSXOpenTag(JSXStartTag, JSXIdentifier, JSXEndTag),
  JSXText,
  JSXCloseTag(JSXStartCloseTag, JSXIdentifier, JSXEndTag))))

# Fragment {"dialect": "jsx"}

<>bar</>

==>

Script(ExpressionStatement(JSXElement(
  JSXFragmentTag(JSXStartTag, JSXEndTag),
  JSXText,
  JSXCloseTag(JSXStartCloseTag, JSXEndTag))))

# Namespaced name {"dialect": "jsx"}

<blah-namespace:img/>

==>

Script(ExpressionStatement(JSXElement(
  JSXSelfClosingTag(JSXStartTag,JSXNamespacedName(JSXIdentifier, JSXIdentifier),JSXSelfCloseEndTag))))

# Member name {"dialect": "jsx"}

<pkg.Component/>

==>

Script(ExpressionStatement(JSXElement(
  JSXSelfClosingTag(JSXStartTag,JSXMemberExpression(JSXIdentifier, JSXIdentifier),JSXSelfCloseEndTag))))

# Nested tags {"dialect": "jsx"}

<a><b.C>text</b.C>{x} {...y}</a>

==>

Script(ExpressionStatement(JSXElement(
  JSXOpenTag(JSXStartTag, JSXBuiltin(JSXIdentifier), JSXEndTag),
  JSXElement(
    JSXOpenTag(JSXStartTag, JSXMemberExpression(JSXIdentifier, JSXIdentifier), JSXEndTag),
    JSXText,
    JSXCloseTag(JSXStartCloseTag, JSXMemberExpression(JSXIdentifier, JSXIdentifier), JSXEndTag)),
  JSXEscape(VariableName),
  JSXText,
  JSXEscape(Spread, VariableName),
  JSXCloseTag(JSXStartCloseTag, JSXBuiltin(JSXIdentifier), JSXEndTag))))

# Attributes {"dialect": "jsx"}

<Foo a="1" b {...attrs} c={c}></Foo>

==>

Script(ExpressionStatement(JSXElement(
  JSXOpenTag(JSXStartTag, JSXIdentifier,
    JSXAttribute(JSXIdentifier, Equals, JSXAttributeValue),
    JSXAttribute(JSXIdentifier),
    JSXSpreadAttribute(Spread, VariableName),
    JSXAttribute(JSXIdentifier, Equals, JSXEscape(VariableName)),
  JSXEndTag),
  JSXCloseTag(JSXStartCloseTag, JSXIdentifier, JSXEndTag))))