

Turn your ES5 code into readable ES6 - mohebifar
https://github.com/mohebifar/xto6

======
luca_barbieri
I have started a similar project, but stopped working on it, and seeing this I
decided to put it on GitHub, even though it's not very well tested and not
feature complete.

The most complex feature in my code is the ability to turn var into let/const
optimally using an esgraph-based dataflow analysis, and it also has the
ability to introduce arrow functions, shorthand/method properties and classes.

It is implemented as a fork of Babel with slightly changed packaging and a
bunch of ES5-to-ES6 passes.

I'm not sure if I'm going to do any further work on this, so feel free to
incorporate the code into your project if you find it useful or start
maintaining a fork.

It has been tested a bit but as much as it should, so it may not just work out
of the box.

You can find it at [https://github.com/luca-
barbieri/5to6](https://github.com/luca-barbieri/5to6)

~~~
mohebifar
That's great! It's kind of you. I will use that.

------
patrickaljord
There's also this one
[https://github.com/mping/5to6](https://github.com/mping/5to6)

~~~
mohebifar
Yes, And it's 3 days younger than xto6. It does not support function/prototype
=> classes. And also it is trying to encourage people to convert their ES5
codes into ES6 but it's implemented in ES5 itself !

~~~
icebraining
Don't take it as an attack, it's always better to have more choices and
approaches to learn from, nobody is trying to diminish your work.

~~~
mohebifar
Sorry, You're right.

------
untog
Interesting idea, but the backwards compatibility of ES6 means that you can
refactor a project piece by piece as you work on it - IMO that's a better
approach.

~~~
Kudos
Sure, but even just as a learning exercise it's fun to pass ES5 code through
it, particularly for people not familiar with the new features in ES6.

It could definitely do with a list of supported/unsupported functionality.

~~~
untog
Oh, for sure. It's a fascinating project!

------
dzhiurgis
I am asking as a poor JS developer - what are the benefits of this newer
style?

~~~
nodesocket
Readable, and intuitive. The syntax is like a standard class (constructor,
methods, getters, setters) you'd see in C or PHP.

~~~
dzhiurgis
What is the benefit of using classes rather than just bunch of functions,
calling each other?

~~~
rhizome31
Often when you use a bunch of functions together, you end up passing the same
arguments. Those arguments represent some kind of state that your pass around
from functions to functions. Sometimes you might even add an argument to a
function just to pass it over to another function. After a while you might get
tired of changing your function signatures and it makes sense to group those
common arguments into a single data structure that can be accessed by your
bunch of functions working together. While you're at it you might as well put
the functions in that data structure too, so you can see clearly how they
relate to each other. That's basically what a class is for.

------
tlrobinson
Neat. How about translating "require" calls to "import" statements (and
exports statements)?

~~~
skrebbel
i did that yesterday by hand with 3 find-replace-all regexes. it isn't that
big a deal :-)

(that said, not all uses of require can be translated to import statements)

------
TazeTSchnitzel
Hmm. How smart is it? Can it detect when some usage of prototypes is _not_
class-like and not convert it to an ES6 class?

~~~
mohebifar
In case you said, it can discern non-class-like function as nothing is
assigned to its prototype.

Bu on the whole I cannot really tell you how smart it is because it is in
alpha stage. We need more users to test it.

------
emehrkay
ES6 will be nice when I can write it without the worry of a compilation stage.
I still use MooTools on my personal projects. I don't care. I get shit done.

------
bphogan
I think this is awesome just for the sake of doing it. I'm always impressed
with how these kinds of projects are implemented.

------
pascalo
Sadly I get an error "Cannot find module './block-statement.js"

~~~
mohebifar
I fixed it

------
itsbits
good idea..what all features currently you are converting to ES6? Better list
them in github...

------
afshinmeh
upvoted. Damet garm amoo :D

~~~
mohebifar
Thank you. Kharabetam :D

