Giter VIP home page Giter VIP logo

babel-plugin-lightscript's Introduction

LightScript

A close superset of ES7 with JSX and Flow, built with Babel. Designed to make programmers a little more productive.

See lightscript.org for example code and language reference documentation. A quick taste:

Item({ item, isActive }) =>
  className = if isActive: 'active' else: 'inactive'

  <li className={className}>
    {item}
  </li>

Come hang out in the gitter chatroom, where contributors can help you get started and answer any questions.

Language Features

In addition to all all ES7, JSX, and Flow features:

  • (Optional) Significant Indentation
  • Implicit Returns
  • If Expressions
  • Auto const
  • Async/Await shorthand
  • Safe-Await
  • Readable Operators (or, and, ==, etc)
  • Bound Methods
  • Commaless Objects and Arrays
  • Automatic Semicolon Insertion that always works
  • Array Comprehensions
  • Object Comprehensions
  • Array-based for-loops
  • Object-based for-loops
  • a few others

Reference documentation is available at lightscript.org, or in Markdown format here. Tests for all features can be seen here and here.

Project Structure

"LightScript" is split across multiple repos:

For now, the issue tracker on this repo should be used for bug reports and feature requests.

babel-plugin-lightscript's People

Contributors

haltcase avatar rattrayalex avatar wcjohnson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

wcjohnson

babel-plugin-lightscript's Issues

[Bug] `for-in` array loops not promoting to block bodies.

The following doesn't compile on master:

for idx i in Array(10): for idx j in Array(10): if i > 3: i

The issue is that the last if is being treated as an expr and the code to ensure a block body was never moved to the array case. I'm submitting a PR with a fix.

Stdlib internal methods -- inline them?

If you use one of the non-lodash stdlib methods like looseEq the AST transforms automatically import babel-plugin-lightscript into the final code.

Since babel plugins are devDependencies 100% of the time in the current ecosystem, I don't think most people will realize that they need babel-plugin-lightscript as a dependency rather than a devDependency which means their app may crash when NODE_ENV="production". And I'm not sure making a Babel plugin into a dependency is a good idea even if it is well documented that you need it.

Would you consider just inlining the builtin stdlib methods using AST transforms since they are all oneliners anyway?

Node 4 support

While Node 4 is still maintained it might be smart to have this plugin support it. This is especially true since it makes it difficult for third parties using LightScript to maintain node 4 support. Once April 1st 2018 rolls around it can be dropped for good.

For example, my shiny new babel plugin fails to build in my node 4 test environment because this plugin can't be parsed, even though I'm targeting node >= 4.

Should be easy enough to swap out babel-preset-eslatest-node6 for babel-preset-env and set the target, and that's easily updated in a year when node 4 dies. Thoughts?

Inner functions are not implicitly returned

Currently, this:

fn () ->
  value = 42

  inner () ->
    value

results in this:

function fn() {
  const value = 42;

  function inner() {
    return value;
  }
}

but it inner should be implicitly returned like so:

function fn() {
  const value = 42;

  function inner() {
    return value;
  }

  return inner;
}

gulp

Is it posible to compile lightscript via gulp? is there a gulp-lightscript library?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.