Skip to content

Commit

Permalink
Add "decoratorsBeforeExport" option to @babel/generator
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed May 16, 2018
1 parent e45d5c3 commit 7737281
Show file tree
Hide file tree
Showing 16 changed files with 72 additions and 4 deletions.
5 changes: 3 additions & 2 deletions packages/babel-generator/src/generators/classes.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import * as t from "@babel/types";

export function ClassDeclaration(node: Object, parent: Object) {
if (
!t.isExportDefaultDeclaration(parent) &&
!t.isExportNamedDeclaration(parent)
!this.format.decoratorsBeforeExport ||
(!t.isExportDefaultDeclaration(parent) &&
!t.isExportNamedDeclaration(parent))
) {
this.printJoin(node.decorators, node);
}
Expand Down
10 changes: 8 additions & 2 deletions packages/babel-generator/src/generators/modules.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ export function ExportAllDeclaration(node: Object) {
}

export function ExportNamedDeclaration(node: Object) {
if (t.isClassDeclaration(node.declaration)) {
if (
this.format.decoratorsBeforeExport &&
t.isClassDeclaration(node.declaration)
) {
this.printJoin(node.declaration.decorators, node);
}

Expand All @@ -67,7 +70,10 @@ export function ExportNamedDeclaration(node: Object) {
}

export function ExportDefaultDeclaration(node: Object) {
if (t.isClassDeclaration(node.declaration)) {
if (
this.format.decoratorsBeforeExport &&
t.isClassDeclaration(node.declaration)
) {
this.printJoin(node.declaration.decorators, node);
}

Expand Down
4 changes: 4 additions & 0 deletions packages/babel-generator/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ function normalizeOptions(code, opts): Format {
style: " ",
base: 0,
},
decoratorsBeforeExport:
opts.decoratorsBeforeExport === undefined
? true
: opts.decoratorsBeforeExport,
};

if (format.minified) {
Expand Down
1 change: 1 addition & 0 deletions packages/babel-generator/src/printer.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export type Format = {
style: string,
base: number,
},
decoratorsBeforeExport: boolean,
};

export default class Printer {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default @dec class Foo {}

export @dec class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"plugins": [
["decorators", { "decoratorsBeforeExport": false }]
],
"decoratorsBeforeExport": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export default @dec
class Foo {}
export @dec
class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default @dec class Foo {}

export @dec class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"plugins": [
["decorators", { "decoratorsBeforeExport": false }]
],
"decoratorsBeforeExport": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@dec
export default class Foo {}
@dec
export class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@dec
export default class Foo {}

@dec
export class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"plugins": [
["decorators", { "decoratorsBeforeExport": true }]
],
"decoratorsBeforeExport": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export default @dec
class Foo {}
export @dec
class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@dec
export default class Foo {}

@dec
export class Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"plugins": [
["decorators", { "decoratorsBeforeExport": true }]
],
"decoratorsBeforeExport": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@dec
export default class Foo {}
@dec
export class Bar {}

0 comments on commit 7737281

Please sign in to comment.