Skip to content

Commit

Permalink
Refactor and update project to ES6.
Browse files Browse the repository at this point in the history
The whole project has now be chopped down to smaller bits and ported to ES6 with the exception that it uses RequireJS modules, not ES6 ones. This is because Node.JS has full ES6 support apart from modules as of v6.0.0. The tests therefore run in a non-transpiled environment. Modules migration will happen eventually, but for now we use what we have.

The transpiled compatible versions are produced by webpack+babel. I have moved all built files to a dist directory. Thus, the general entrypoint is now dist/textile.js although the cli tries to use src/ if it detects a node version 6 or higher.

Tests were ported to AVA and cleaned up where applicable.

Eslintrc has been added to ensure code-consistency.

Polyfill for Array.isArray has been removed. This should be almost everywhere now, or user must provide their own (or stay on the 1.x version).

This is most of the work for issue #37.
  • Loading branch information
borgar committed May 20, 2016
1 parent ee94523 commit c960a76
Show file tree
Hide file tree
Showing 67 changed files with 10,134 additions and 14,648 deletions.
136 changes: 136 additions & 0 deletions .eslintrc
@@ -0,0 +1,136 @@
{
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module"
},

"env": {
"es6": true,
"node": true
},

"globals": {
"document": false,
"navigator": false,
"window": false
},

"rules": {
"accessor-pairs": 2,
"arrow-spacing": [2, { "before": true, "after": true }],
"block-spacing": [2, "always"],
"brace-style": [2, "stroustrup", { "allowSingleLine": true }],
"camelcase": [2, { "properties": "never" }],
"comma-dangle": [2, "never"],
"comma-spacing": [2, { "before": false, "after": true }],
"comma-style": [2, "last"],
"constructor-super": 2,
"curly": [2, "multi-line"],
"dot-location": [2, "property"],
"eol-last": 2,
"eqeqeq": [2, "allow-null"],
"generator-star-spacing": [2, { "before": true, "after": true }],
"handle-callback-err": [2, "^(err|error)$" ],
"indent": [2, 2, { "SwitchCase": 1 }],
"jsx-quotes": [2, "prefer-single"],
"key-spacing": [2, { "beforeColon": false, "afterColon": true }],
"keyword-spacing": [2, { "before": true, "after": true }],
"new-cap": [2, { "newIsCap": true, "capIsNew": false }],
"new-parens": 2,
"no-array-constructor": 2,
"no-caller": 2,
"no-class-assign": 2,
"no-cond-assign": 2,
"no-const-assign": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-delete-var": 2,
"no-dupe-args": 2,
"no-dupe-class-members": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-duplicate-imports": 2,
"no-empty-character-class": 2,
"no-empty-pattern": 2,
"no-eval": 2,
"no-ex-assign": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": [2, "functions"],
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-func-assign": 2,
"no-implied-eval": 2,
"no-inner-declarations": [2, "functions"],
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-label-var": 2,
"no-labels": [2, { "allowLoop": false, "allowSwitch": false }],
"no-lone-blocks": 2,
"no-mixed-spaces-and-tabs": 2,
"no-multi-spaces": 2,
"no-multi-str": 2,
"no-multiple-empty-lines": [2, { "max": 1 }],
"no-native-reassign": 2,
"no-negated-in-lhs": 2,
"no-new": 2,
"no-new-func": 2,
"no-new-object": 2,
"no-new-require": 2,
"no-new-symbol": 2,
"no-new-wrappers": 2,
"no-obj-calls": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-path-concat": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-regex-spaces": 2,
"no-return-assign": [2, "except-parens"],
"no-self-assign": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-shadow-restricted-names": 2,
"no-spaced-func": 2,
"no-sparse-arrays": 2,
"no-this-before-super": 2,
"no-throw-literal": 2,
"no-trailing-spaces": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-unexpected-multiline": 2,
"no-unmodified-loop-condition": 2,
"no-unneeded-ternary": [2, { "defaultAssignment": false }],
"no-unreachable": 2,
"no-unsafe-finally": 2,
"no-unused-vars": [2, { "vars": "all", "args": "none" }],
"no-useless-call": 2,
"no-useless-computed-key": 2,
"no-useless-constructor": 2,
"no-useless-escape": 2,
"no-var": 1,
"no-whitespace-before-property": 2,
"no-with": 2,
"one-var": [2, { "initialized": "never" }],
"operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }],
"padded-blocks": [2, "never"],
"prefer-const": 1,
"quotes": [2, "single", "avoid-escape"],
"semi": [2, "always"],
"semi-spacing": [2, { "before": false, "after": true }],
"space-before-blocks": [2, "always"],
"space-before-function-paren": [2, "always"],
"space-in-parens": ["error", "always", { "exceptions": ["{}", "empty"] }],
"space-infix-ops": 2,
"space-unary-ops": [2, { "words": true, "nonwords": false }],
"spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","] }],
"template-curly-spacing": [2, "always"],
"use-isnan": 2,
"valid-typeof": 2,
"wrap-iife": [2, "any"],
"yield-star-spacing": [2, "both"],
"yoda": [2, "never"],
}
}
7 changes: 7 additions & 0 deletions .gitignore
@@ -0,0 +1,7 @@
_*
node_modules
logs
*.log
npm-debug.log*
.npm
*.sh
12 changes: 0 additions & 12 deletions Makefile

This file was deleted.

39 changes: 23 additions & 16 deletions bin/textile
@@ -1,20 +1,29 @@
#!/usr/bin/env node

var fs = require('fs')
, util = require('util')
, textile = require('../')
;
var fs = require( 'fs' );

var textile;
var nodeVersion = process && process.versions && process.versions.node;
// is this node version mostly ES6 complete
if ( parseInt( nodeVersion || 0, 10 ) > 5 ) {
// serve code from src dir
textile = require( '../src' );
}
else {
// serve transpiled code
textile = require( '../dist/textile' );
}

// clean arguments
var args = [];
process.argv.slice(2).forEach(function ( m, i, s ) {
if ( s = /^([^=]+)=(.*)$/.exec( m ) ) {
process.argv.slice( 2 ).forEach( function ( m, i, s ) {
if ( ( s = /^([^=]+)=(.*)$/.exec( m ) ) ) {
args.push( s[1], s[2] );
}
else {
args.push( m );
}
})
});

// parse arguments
var options = {};
Expand All @@ -41,12 +50,10 @@ if ( options.input ) {
}

// writer
var data = "";
function write_data () {
data = options.tokens
? JSON.stringify( textile.jsonml( data ), null, 2 )
: textile( data )
;
var data = '';
function writeData () {
data = options.tokens ? JSON.stringify( textile.jsonml( data ), null, 2 )
: textile( data );
if ( options.output ) {
fs.writeFileSync( options.output, data );
}
Expand All @@ -58,14 +65,14 @@ function write_data () {
// file or stdin?
if ( options.files ) {
data = fs.readFileSync( options.files[0], 'utf8' );
write_data();
writeData();
}
else {
var stdin = process.stdin;
const stdin = process.stdin;
stdin.setEncoding( 'utf8' );
stdin.on( 'data', function ( text ) {
data += text;
});
stdin.on( 'end', write_data );
stdin.on( 'end', writeData );
stdin.resume();
}

0 comments on commit c960a76

Please sign in to comment.