Skip to content

Commit 11d6a57

Browse files
author
Santosh Sutar
committed
Handle decorators
1 parent a480181 commit 11d6a57

22 files changed

Lines changed: 1199 additions & 152 deletions

package-lock.json

Lines changed: 16 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"codemod-cli"
1111
],
1212
"dependencies": {
13-
"codemod-cli": "^0.1.0"
13+
"codemod-cli": "ssutar/codemod-cli"
1414
},
1515
"devDependencies": {
1616
"jest": "^23.1.0"

transforms/ember-object/__testfixtures__/basic.input.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* Program comments
33
*/
4-
const Foo = EmberObject.extend({
4+
const Foo = Test.extend({
55
/**
66
* Property comments
77
*/

transforms/ember-object/__testfixtures__/basic.output.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/**
22
* Program comments
33
*/
4-
class Foo extends EmberObject {
4+
class Foo extends Test {
55
/**
66
* Property comments
77
*/
@@ -31,4 +31,4 @@ class Foo extends EmberObject {
3131
anotherMethod() {
3232
super.anotherMethod(...arguments);
3333
}
34-
}
34+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import { alias, sum as add } from "@ember/object/computed";
2+
import { get, set, observer, computed } from "@ember/object";
3+
import { inject as controller } from "@ember/controller";
4+
import { inject as service } from "@ember/service";
5+
import { on } from "@ember/object/evented";
6+
import layout from "components/templates/foo";
7+
8+
const Foo = EmberObject.extend({
9+
tagName: "div",
10+
classNames: ["test-class", "custom-class"],
11+
a: "",
12+
b: service("store"),
13+
myController: controller("abc"),
14+
observedProp: observer("xyz"),
15+
event: on("click"),
16+
17+
actions: {
18+
/**
19+
Comments
20+
*/
21+
bar(temp1) {},
22+
baz() {
23+
this._super(...arguments);
24+
},
25+
biz() {}
26+
}
27+
});
28+
29+
var comp = EmberObject.extend({
30+
classNameBindings: ["isEnabled:enabled:disabled", "a:b:c", "c:d"],
31+
isEnabled: false,
32+
a: true,
33+
c: "",
34+
attributeBindings: ["customHref:href"],
35+
36+
customHref: "http://emberjs.com"
37+
});
38+
39+
const Foo = EmberObject.extend({
40+
firstName: null,
41+
lastName: null,
42+
43+
/**
44+
Computed fullname
45+
*/
46+
fullName: computed("firstName", "lastName", {
47+
get(key) {
48+
return `${this.get("firstName")} ${this.get("lastName")}`;
49+
},
50+
set(key, value) {
51+
let [firstName, lastName] = value.split(/\s+/);
52+
this.set("firstName", firstName);
53+
this.set("lastName", lastName);
54+
return value;
55+
}
56+
}),
57+
58+
/**
59+
Computed description
60+
*/
61+
description: computed("fullName", "age", "country", function() {
62+
return `${this.get(
63+
"fullName"
64+
)}; Age: ${this.get("age")}; Country: ${this.get("country")}`;
65+
}),
66+
67+
/**
68+
* Fname
69+
*/
70+
fName: alias("firstName"),
71+
72+
/**
73+
* Lname
74+
*/
75+
lName: alias("firstName", "lastName").readOnly(),
76+
77+
/**
78+
* Lname1
79+
*/
80+
lName1: add("description", "lastName").volatile()
81+
});
82+
83+
const Foo = EmberObject.extend({
84+
layout
85+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Do not transform
2+
const Foo = EmberObject.extend({
3+
statefulObject: {},
4+
statefulArray: []
5+
});
6+
7+
// Do not transform if not a primitive value
8+
const Foo = EmberObject.extend({
9+
macroValue: macro()
10+
});
11+
12+
// Do not transform as extends Mixin
13+
const Foo = EmberObject.extend(MyMixin, {
14+
biz: "div"
15+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"decorators": true
3+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Do not transform
2+
const Foo = EmberObject.extend({
3+
statefulObject: {},
4+
statefulArray: []
5+
});
6+
7+
// Do not transform if not a primitive value
8+
const Foo = EmberObject.extend({
9+
macroValue: macro()
10+
});
11+
12+
// Do not transform as extends Mixin
13+
const Foo = EmberObject.extend(MyMixin, {
14+
biz: "div"
15+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"decorators": true
3+
}
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import { alias, sum as add } from "@ember/object/computed";
2+
import { get, set, observer, computed } from "@ember/object";
3+
import { inject as controller } from "@ember/controller";
4+
import { inject as service } from "@ember/service";
5+
import { on } from "@ember/object/evented";
6+
import layout from "components/templates/foo";
7+
8+
@tagName("div")
9+
@classNames(["test-class", "custom-class"])
10+
class Foo extends EmberObject {
11+
a = "";
12+
13+
@service("store")
14+
b;
15+
16+
@controller("abc")
17+
myController;
18+
19+
@observes("xyz")
20+
observedProp;
21+
22+
@on("click")
23+
event;
24+
25+
/**
26+
Comments
27+
*/
28+
@action
29+
bar(temp1) {}
30+
31+
@action
32+
baz() {
33+
super.baz(...arguments);
34+
}
35+
36+
@action
37+
biz() {}
38+
}
39+
40+
class Comp extends EmberObject {
41+
@className("enabled", "disabled")
42+
isEnabled = false;
43+
44+
@className("b", "c")
45+
a = true;
46+
47+
@className("d")
48+
c = "";
49+
50+
@attribute("href")
51+
customHref = "http://emberjs.com";
52+
}
53+
54+
class Foo extends EmberObject {
55+
firstName = null;
56+
lastName = null;
57+
58+
/**
59+
Computed fullname
60+
*/
61+
@computed("firstName", "lastName")
62+
get fullName(key) {
63+
return `${this.get("firstName")} ${this.get("lastName")}`;
64+
}
65+
66+
set fullName(key, value) {
67+
let [firstName, lastName] = value.split(/\s+/);
68+
this.set("firstName", firstName);
69+
this.set("lastName", lastName);
70+
return value;
71+
}
72+
73+
/**
74+
Computed description
75+
*/
76+
@computed("fullName", "age", "country")
77+
description() {
78+
return `${this.get(
79+
"fullName"
80+
)}; Age: ${this.get("age")}; Country: ${this.get("country")}`;
81+
}
82+
83+
/**
84+
* Fname
85+
*/
86+
@alias("firstName")
87+
fName;
88+
89+
/**
90+
* Lname
91+
*/
92+
@alias.readOnly("firstName", "lastName")
93+
lName;
94+
95+
/**
96+
* Lname1
97+
*/
98+
@add.volatile("description", "lastName")
99+
lName1;
100+
}
101+
102+
@layout(layout)
103+
class Foo extends EmberObject {}

0 commit comments

Comments
 (0)