From bfbd0c6fa53a5630e31e5cd30c26a61540d27b21 Mon Sep 17 00:00:00 2001 From: Santosh Sutar Date: Fri, 24 Aug 2018 15:51:14 -0700 Subject: [PATCH] Add transform details in the readme --- README.md | 93 ++++++++++++++++++++++++++++++++++++++---- docs/images/tiers.png | Bin 0 -> 13338 bytes 2 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 docs/images/tiers.png diff --git a/README.md b/README.md index 0d1de14e..ad13338a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ # ember-es6-class-codemod - A collection of codemod's for ember-es6-class-codemod. ## Usage @@ -18,21 +17,99 @@ ember-es6-class-codemod path/of/files/ or/some**/*glob.js ## Transforms - - +The transforms are tiered starting with simple ember objects to the complex ones including decorators and/or mixins etc. The codemods can be run targeting only specific types. For example it is possible to run the codemods targeting only `services` or `routes` in the app code. + +The codemods are grouped as following + +1. Simple objects (codemod: `simple-objects`) +2. Services (codemod: `services`) +3. Class helpers (codemod: `class-helpers`) +4. Routes (codemod: `routes`) +5. Components (codemod: `components`) +6. Controllers (codemod: `controllers`) +7. Routers (codemod: `routers`) + +At each level, the codemods handles the transforms for all previous levels and add some new transforms specific to that level. For example, codemods for `routes` will handle transforms for `services` and `simple object` and add new support for transforming `actions`. This can be illustrated with picture below: + +![Transform tiers](./docs/images/tiers.png) + +### Simple ember objects + +| Before | After | +| --------------------------------------------- | ----------------------------------------- | +| const SimpleObject = EmberObject.extend({}); | class SimpleObject extends EmberObject {} | +| const simpleObj = SimpleObject.create(); | const simpleObj = new SimpleObject(); | +| property: value, | property = value; | +| method() { this.\_super(...arguments); } | method() { super.method(...arguments); } | +| cp: computed('p1', 'p2', function () { ... }) | @computed('p1', 'p2')
cp() { ... } | +| ob: observer('p1', 'p2', function () { ... }) | @observes('p1', 'p2')
ob() { ... } | +| ev: on('click', function() { ... }) | @on('click')
ev() { ... } | + +For detailed examples please see `test-fixtures` in `simple-object` transform + +### Services + +In addition to simple object transforms, `service-transform` will do following: + +| Before | After | +| ------------------------------------- | ---------------------------------- | +| const MyService = Service.extend({}); | class MyService extends Service {} | + +### Class helpers (Haven't seen any example of this) + +| Before | After | +| ------ | ----- | + + +### Routes + +In addition to above mentioned transforms `route-transform` will do following + +| Before | After | +| --------------------------------- | ------------------------------- | +| const MyRoute = Route.extend({}); | class MyRoute extends Route {} | +| actions: { someAction() { ... }} | @action
someAction() { ... } | + +### Components + +In addition to above mentioned transforms `controller-transform` will do following + +| Before | After | +| -------------------------------------------------------------------------- | -------------------------------------------------------- | +| const MyComponent = Component.extend({}); | class MyComponent extends Component {} | +| const C = Component.extend({ tagName: 'div' }); | @tagName('div)
class C extends Component {} | +| const C = Component.extend({ classNames: ['a', 'b'] }); | @classNames('a', 'b')
class C extends Component {} | +| classNameBindings: ['isEnabled:enabled:disabled'],
isEnabled: false | @className('enabled', 'disabled')
isEnabled = false; | +| attributeBindings: ['customHref:href']
customHref: 'http://emberjs.com' | @attribute('href')
customHref = 'http://emberjs.com'; | + +### Controllers + +| Before | After | +| ------------------------------------------- | --------------------------------------- | +| const MyController = Controller.extend({}); | class MyController extends Controller{} | + +Controller transformation would be covered in the above mentioned transforms + +### Routers + +| Before | After | +| ----------------------------------- | ------------------------------- | +| const MyRouter = Router.extend({}); | class MyRouter extends Router{} | + +Router transformation would be covered in the above mentioned transforms ## Contributing ### Installation -* clone the repo -* change into the repo directory -* `yarn` +- clone the repo +- change into the repo directory +- `yarn` ### Running tests -* `yarn test` +- `yarn test` ### Update Documentation -* `yarn update-docs` \ No newline at end of file +- `yarn update-docs` diff --git a/docs/images/tiers.png b/docs/images/tiers.png new file mode 100644 index 0000000000000000000000000000000000000000..7133cb524fd43f6de5efef182b4217e2bb1bb3ad GIT binary patch literal 13338 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 L?JnDO;^O}Rj2ypb literal 0 HcmV?d00001