Skip to content

Commit f23fe86

Browse files
committed
Merge pull request #7 from bryanjos/jsx
JSX
2 parents 9b00fbd + 84802f6 commit f23fe86

16 files changed

+428
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# v2.2.0-dev
2+
* Enhancements:
3+
* Added structs for JSX AST
4+
15
# v2.1.2
26

37
* Bug fixes

README.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ Defines structs that represent the JavaScript AST nodes from the ESTree spec.
44

55
[ESTree Spec](https://github.com/estree/estree)
66

7+
[JSX AST Spec](https://github.com/facebook/jsx)
8+
79
Also includes a JavaScript AST to JavaScript code generator.
810

911
```elixir
@@ -16,5 +18,23 @@ ast = Builder.array_expression([
1618
])
1719

1820
Generator.generate(ast)
19-
#"[1, a]"
20-
```
21+
# "[1, a]"
22+
23+
#jsx ast and generation
24+
ast = Builder.jsx_element(
25+
Builder.jsx_opening_element(
26+
Builder.jsx_identifier(
27+
"Test"
28+
)
29+
),
30+
[],
31+
Builder.jsx_closing_element(
32+
Builder.jsx_identifier(
33+
"Test"
34+
)
35+
)
36+
)
37+
38+
Generator.generate(ast)
39+
# "<Test></Test>"
40+
```

lib/es_tree/jsx_attribute.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
defmodule ESTree.JSXAttribute do
2+
@type t :: %ESTree.JSXAttribute{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
name: ESTree.JSXIdentifier.t | ESTree.JSXNamespacedName.t,
6+
value: ESTree.Literal.t | ESTree.JSXExpressionContainer.t | ESTree.JSXElement.t | nil
7+
}
8+
defstruct type: "JSXAttribute", loc: nil, name: nil, value: nil
9+
end

lib/es_tree/jsx_closing_element.ex

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
defmodule ESTree.JSXClosingElement do
2+
@type t :: %ESTree.JSXClosingElement{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
name: ESTree.JSXIdentifier.t | ESTree.JSXMemberExpression.t | ESTree.JSXNamespacedName.t
6+
}
7+
defstruct type: "JSXClosingElement", loc: nil, name: nil
8+
end

lib/es_tree/jsx_element.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
defmodule ESTree.JSXElement do
2+
@type t :: %ESTree.JSXElement{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
openingElement: ESTree.JSXOpeningElement.t,
6+
children: [ESTree.Literal.t | ESTree.JSXExpressionContainer.t | ESTree.JSXElement.t],
7+
closingElement: ESTree.JSXClosingElement.t | nil
8+
}
9+
defstruct type: "JSXElement", loc: nil, openingElement: nil, children: [], closingElement: nil
10+
end
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
defmodule ESTree.JSXEmptyExpression do
2+
@type t :: %ESTree.JSXEmptyExpression{ type: binary, loc: ESTree.SourceLocation.t | nil }
3+
defstruct type: "JSXEmptyExpression", loc: nil
4+
end
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
defmodule ESTree.JSXExpressionContainer do
2+
@type t :: %ESTree.JSXExpressionContainer{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
expression: ESTree.Expression.t | JSXEmptyExpression.t
6+
}
7+
8+
defstruct type: "JSXExpressionContainer", loc: nil, expression: %ESTree.JSXEmptyExpression{}
9+
end

lib/es_tree/jsx_identifier.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
defmodule ESTree.JSXIdentifier do
2+
@type t :: %ESTree.JSXIdentifier{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
name: binary
6+
}
7+
8+
defstruct type: "JSXIdentifier", loc: nil, name: nil
9+
end
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
defmodule ESTree.JSXMemberExpression do
2+
@type t :: %ESTree.JSXMemberExpression{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
object: ESTree.JSXMemberExpression.t | ESTree.JSXIdentifier.t,
6+
property: ESTree.JSXIdentifier.t
7+
}
8+
9+
defstruct type: "JSXMemberExpression",
10+
loc: nil,
11+
object: nil,
12+
property: nil
13+
14+
end

lib/es_tree/jsx_namespaced_name.ex

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
defmodule ESTree.JSXNamespacedName do
2+
@type t :: %ESTree.JSXNamespacedName{
3+
type: binary,
4+
loc: ESTree.SourceLocation.t | nil,
5+
namespace: ESTree.JSXIdentifier.t,
6+
name: ESTree.JSXIdentifier.t
7+
}
8+
9+
defstruct type: "JSXNamespacedName",
10+
loc: nil,
11+
namespace: nil,
12+
name: nil
13+
14+
end

0 commit comments

Comments
 (0)