fabianmoronzirfas
2/11/2016 - 10:18 AM

ES6 classes fiddle

ES6 classes fiddle

'use strict';
class Thing {
  constructor(n) {
    this._name = n;
  }
  set name(n) {
    this._name = n.toUpperCase();
  }
  get name() {
    return `Hello my name is: ${this._name}`;
  }
}

class Something extends Thing {
  constructor(n) {
    super(n);
  }
  speak() {
    console.log(this.name);
  }
}

let main = () => {
  let t = new Thing('john');
  console.log(t.name);
  let s = new Something('James');
  s.speak();
};

main();
'use strict';

var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

var Thing = (function () {
  function Thing(n) {
    _classCallCheck(this, Thing);

    this._name = n;
  }

  _createClass(Thing, [{
    key: 'name',
    set: function set(n) {
      this._name = n.toUpperCase();
    },
    get: function get() {
      return 'Hello my name is: ' + this._name;
    }
  }]);

  return Thing;
})();

var Something = (function (_Thing) {
  _inherits(Something, _Thing);

  function Something(n) {
    _classCallCheck(this, Something);

    return _possibleConstructorReturn(this, Object.getPrototypeOf(Something).call(this, n));
  }

  _createClass(Something, [{
    key: 'speak',
    value: function speak() {
      console.log(this.name);
    }
  }]);

  return Something;
})(Thing);

var main = function main() {
  var t = new Thing('john');
  console.log(t.name);
  var s = new Something('James');
  s.speak();
};

main();

my sublime babel/eslint setup

npm install -g eslint babel-eslint babel-cli

install the Sublime Text Packages Babel, SublimeLinter & SublimeLinter-contrib-eslint

Add the .eslintrc to your project root or your $HOME folder.

To compile es6 to es5 run:

babel index.js -o app.js
# MAC OSX
.DS_Store
# WIN
Thumbs.db
# nodejs and web dev
node_modules
bower_components
# sublime sftp plugin
sftp-config.json
# sublime
*.sublime-project
*.sublime-workspace
# processing
sketch.properties
build-tmp
# codekit
.codekit-cache
# a file with private data
private.json
private
# for extendscript ID dev
pdfs
.idlk
# for CRAN
# History files
.Rhistory
# Example code in package build process
*-Ex.R
# R data files from past sessions
.Rdata
# RStudio files
.Rproj.user/

# GOLANG
# After Effects
Adobe\ After\ Effects\ Auto-Save/
Adobe\ After\ Effects\ Auto-Speichern

# Particle Photon
*.bin

{
    "parser": "babel-eslint",
    "env": {
        "node": true,
        //"es6":true
    },
    "ecmaFeatures": {
        "jsx": true
    },
    "globals": {
    },
    "plugins": [
    "react"
    ],
    "rules": {
        // Possible Errors
        "comma-dangle": [2, "never"],
        "no-cond-assign": 2,
        //"no-console": 2,
        "no-constant-condition": 2,
        "no-control-regex": 2,
        "no-debugger": 2,
        "no-dupe-keys": 2,
        "no-empty": 2,
        "no-empty-character-class": 2,
        "no-ex-assign": 2,
        "no-extra-boolean-cast": 2,
        "no-extra-parens": 0,
        "no-extra-semi": 2,
        "no-func-assign": 2,
        "no-inner-declarations": 2,
        "no-invalid-regexp": 2,
        "no-irregular-whitespace": 2,
        "no-negated-in-lhs": 2,
        "no-obj-calls": 2,
        "no-regex-spaces": 2,
        "no-reserved-keys": 0,
        "no-sparse-arrays": 2,
        "no-unreachable": 2,
        "use-isnan": 2,
        "valid-jsdoc": 0,
        "valid-typeof": 2,
        // Best Practices
        "block-scoped-var": 2,
        "complexity": 0,
        "consistent-return": 2,
        "curly": 2,
        "default-case": 2,
        "dot-notation": 2,
        "eqeqeq": 2,
        "guard-for-in": 2,
        "no-alert": 2,
        "no-caller": 2,
        "no-div-regex": 2,
        "no-else-return": 2,
        "no-empty-label": 2,
        "no-eq-null": 2,
        "no-eval": 2,
        "no-extend-native": 2,
        "no-extra-bind": 2,
        "no-fallthrough": 2,
        "no-floating-decimal": 2,
        "no-implied-eval": 2,
        "no-iterator": 2,
        "no-labels": 2,
        "no-lone-blocks": 2,
        "no-loop-func": 2,
        "no-multi-spaces": 2,
        "no-multi-str": 0,
        "no-native-reassign": 2,
        //"no-new": 2,
        "no-new-func": 2,
        "no-new-wrappers": 2,
        "no-octal": 2,
        "no-octal-escape": 2,
        "no-process-env": 2,
        "no-proto": 2,
        "no-redeclare": 2,
        "no-return-assign": 2,
        "no-script-url": 2,
        "no-self-compare": 2,
        "no-sequences": 2,
        "no-unused-expressions": 2,
        "no-void": 0,
        "no-warning-comments": 2,
        "no-with": 2,
        "radix": 2,
        "vars-on-top": 0,
        "wrap-iife": 2,
        "yoda": 2,
        // Strict Mode
        //"strict": [2, "global"],
        // Variables
        "no-catch-shadow": 2,
        "no-delete-var": 2,
        "no-label-var": 2,
        "no-shadow": 2,
        "no-shadow-restricted-names": 2,
        "no-undef": 2,
        "no-undef-init": 2,
        "no-undefined": 2,
        //"no-unused-vars": 2,
        "no-use-before-define": 2,
        // Stylistic Issues
        "indent": [2, 2, {
          "SwitchCase": 1
        }],
        "brace-style": 2,
        "camelcase": 0,
        "comma-spacing": 2,
        "comma-style": 2,
        "consistent-this": 0,
        "eol-last": 2,
        "func-names": 0,
        "func-style": 0,
        "key-spacing": [2, {
          "beforeColon": false,
          "afterColon": true
        }],
        "max-nested-callbacks": 0,
        "new-cap": 2,
        "new-parens": 2,
        "no-array-constructor": 2,
        "no-inline-comments": 0,
        "no-lonely-if": 2,
        "no-mixed-spaces-and-tabs": 2,
        "no-nested-ternary": 2,
        "no-new-object": 2,
        "semi-spacing": [2, {
          "before": false,
          "after": true
        }],
        "no-spaced-func": 2,
        "no-ternary": 0,
        "no-trailing-spaces": 2,
        "no-multiple-empty-lines": 2,
        "no-underscore-dangle": 0,
        "one-var": 0,
        "operator-assignment": [2, "always"],
        "padded-blocks": 0,
        "quotes": [2, "single"],
        "quote-props": [2, "as-needed"],
        "semi": [2, "always"],
        "sort-vars": [2, {"ignoreCase": true}],
        "space-after-keywords": 2,
        "space-before-blocks": 2,
        "object-curly-spacing": [2, "never"],
        "array-bracket-spacing": [2, "never"],
        "space-in-parens": 2,
        "space-infix-ops": 2,
        "space-return-throw-case": 2,
        "space-unary-ops": 2,
        "spaced-comment": 2,
        "wrap-regex": 0,
        // Legacy
        "max-depth": 0,
        "max-len": [2, 120],
        "max-params": 0,
        "max-statements": 0,
        "no-plusplus": 0
    }
}
{
    "presets": [
        "es2015"
    ]
}