diff --git a/.eslintignore b/.eslintignore
index 47be5b0529..ca6d53b336 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -7,5 +7,10 @@ src/**/__tests__/**
# This should be enabled but that folder has too much in it that doesn't belong
src/test
test/the-files-to-test.generated.js
-# This is synced with a different file internally, don't want to lint it yet
-vendor/fbtransform/syntax.js
+vendor/
+# But not in docs/_js/examples/*
+docs/_js/*.js
+docs/js/
+# This should be more like examples/**/thirdparty/** but
+# we should fix https://github.com/facebook/esprima/pull/85 first
+examples/
\ No newline at end of file
diff --git a/docs/_js/examples/.eslintrc b/docs/_js/examples/.eslintrc
new file mode 100644
index 0000000000..225d785041
--- /dev/null
+++ b/docs/_js/examples/.eslintrc
@@ -0,0 +1,3 @@
+rules:
+ block-scoped-var: false
+ no-undef: false
\ No newline at end of file
diff --git a/docs/extractCode.js b/docs/extractCode.js
index 1425065a19..867118ebea 100644
--- a/docs/extractCode.js
+++ b/docs/extractCode.js
@@ -1,3 +1,5 @@
+'use strict';
+
var argv = require('optimist').argv;
var fs = require('fs');
@@ -5,9 +7,9 @@ var CODE_SAMPLE = /```[\S]+\s*[\s\S]*?```/g;
var PARTS = /```[\S]+\s*\/\/\s+(.+?)\n([\s\S]*?)```/;
function truncate(s, n) {
- n = n || 256
+ n = n || 256;
if (s.length < n) {
- return s;
+ return s;
}
return s.substring(0, n) + '...';
}
@@ -27,9 +29,9 @@ function main(dest, filenames) {
if (!extracted) {
throw new Error('Code sample did not match correct format in ' + filename + ': ' + truncate(codeSample));
}
- var filename = extracted[1];
- var content = extracted[2].replace(/\*\*/g, '');
- fs.writeFileSync(argv.dest + '/' + filename, content);
+ var codeSampleFilename = extracted[1];
+ var codeSampleContent = extracted[2].replace(/\*\*/g, '');
+ fs.writeFileSync(argv.dest + '/' + codeSampleFilename, codeSampleContent);
});
});
}
diff --git a/examples/ballmer-peak/example.js b/examples/ballmer-peak/example.js
new file mode 100644
index 0000000000..3bdcd55223
--- /dev/null
+++ b/examples/ballmer-peak/example.js
@@ -0,0 +1,42 @@
+'use strict';
+
+function computeBallmerPeak(x) {
+ // see: http://ask.metafilter.com/76859/Make-a-function-of-this-graph-Thats-like-an-antigraph
+ x = x * 100;
+ return (
+ 1 - 1 / (1 + Math.exp(-(x - 6))) *.5 + Math.exp(-Math.pow(Math.abs(x - 10), 2) * 10)
+ ) / 1.6;
+}
+
+function percentage(x) {
+ return isNaN(x) ? 'N/A' : (100 - Math.round(x * 100)) + '%';
+}
+
+var BallmerPeakCalculator = React.createClass({
+ getInitialState: function() {
+ return {bac: 0};
+ },
+ handleChange: function(event) {
+ this.setState({bac: event.target.value});
+ },
+ render: function() {
+ var pct = percentage(computeBallmerPeak(this.state.bac));
+ return (
+
+

+
Credit due to xkcd.
+
Compute your Ballmer Peak:
+
+ If your BAC is{' '}
+
+ {', '}then {pct} of your lines of code will be bug free.
+
+
+ );
+ }
+});
+
+React.render(
+ ,
+ document.getElementById('container')
+);
diff --git a/examples/basic-commonjs/index.js b/examples/basic-commonjs/index.js
index e9218a8852..271595aeb9 100644
--- a/examples/basic-commonjs/index.js
+++ b/examples/basic-commonjs/index.js
@@ -1,3 +1,5 @@
+'use strict';
+
var React = require('react');
var ExampleApplication = React.createClass({
diff --git a/examples/jquery-bootstrap/js/app.js b/examples/jquery-bootstrap/js/app.js
index d64ba0e51a..33b782301e 100644
--- a/examples/jquery-bootstrap/js/app.js
+++ b/examples/jquery-bootstrap/js/app.js
@@ -1,3 +1,5 @@
+'use strict';
+
// Simple pure-React component so we don't have to remember
// Bootstrap's classes
var BootstrapButton = React.createClass({
diff --git a/examples/server-rendering/jsapp/src/App.js b/examples/server-rendering/jsapp/src/App.js
index e44760025d..7a4afcd654 100644
--- a/examples/server-rendering/jsapp/src/App.js
+++ b/examples/server-rendering/jsapp/src/App.js
@@ -1,3 +1,5 @@
+'use strict';
+
var React = require('react');
var App = React.createClass({
diff --git a/examples/server-rendering/reactserver/server.js b/examples/server-rendering/reactserver/server.js
index 82962649a1..62e4ba36a7 100644
--- a/examples/server-rendering/reactserver/server.js
+++ b/examples/server-rendering/reactserver/server.js
@@ -1,3 +1,5 @@
+'use strict';
+
var React = require('react');
var express = require('express');
var path = require('path');
@@ -11,9 +13,9 @@ var app = express();
// in the querystring and return a static HTML representation of the component.
// Note that this is a backend service hit by your actual web app. Even so,
// you would probably put Varnish in front of this in production.
-app.get('/', function(req, res){
- var component = require(path.resolve(req.query['module']));
- var props = JSON.parse(req.query['props'] || '{}');
+app.get('/', function(req, res) {
+ var component = require(path.resolve(req.query.module));
+ var props = JSON.parse(req.query.props || '{}');
res.send(React.renderToString(component(props)));
});
diff --git a/grunt/tasks/eslint.js b/grunt/tasks/eslint.js
index 098039cc07..b2b5690394 100644
--- a/grunt/tasks/eslint.js
+++ b/grunt/tasks/eslint.js
@@ -6,15 +6,7 @@ module.exports = function() {
var done = this.async();
grunt.util.spawn({
cmd: 'node_modules/.bin/eslint',
- args: [
- 'src/',
- 'Gruntfile.js',
- 'grunt/',
- 'main.js',
- 'perf/',
- 'test/',
- 'vendor/fbtransform'
- ]
+ args: ['.']
}, function(err, result, code) {
if (err) {
grunt.log.error('Lint failed');
diff --git a/jest/preprocessor.js b/jest/preprocessor.js
index b8451458b7..8f696b33ac 100644
--- a/jest/preprocessor.js
+++ b/jest/preprocessor.js
@@ -1,4 +1,4 @@
-"use strict";
+'use strict';
var ReactTools = require('../main.js');
diff --git a/jest/ts-preprocessor.js b/jest/ts-preprocessor.js
index 7a503c9d85..3dd84c31b7 100644
--- a/jest/ts-preprocessor.js
+++ b/jest/ts-preprocessor.js
@@ -31,9 +31,15 @@ function compile(defaultLib, content, contentFilename) {
throw new Error('Expected only one dependency.');
}
},
- getCanonicalFileName: function(filename) { return filename; },
- getCurrentDirectory: function() { return ''; },
- getNewLine: function() { return '\n'; }
+ getCanonicalFileName: function(filename) {
+ return filename;
+ },
+ getCurrentDirectory: function() {
+ return '';
+ },
+ getNewLine: function() {
+ return '\n';
+ }
};
var program = ts.createProgram([contentFilename], tsOptions, compilerHost);
var errors = program.getDiagnostics();
diff --git a/npm-jsx_orphaned_brackets_transformer/run.js b/npm-jsx_orphaned_brackets_transformer/run.js
index 160ef0440f..82df88e19a 100644
--- a/npm-jsx_orphaned_brackets_transformer/run.js
+++ b/npm-jsx_orphaned_brackets_transformer/run.js
@@ -1,12 +1,14 @@
#!/usr/bin/env node
+'use strict';
+
var esprima = require('esprima-fb');
var FileFinder = require('node-find-files');
var fs = require('graceful-fs');
var jstransform = require('jstransform');
var path = require('path');
var visitReactTag = require('./transforms/react').visitReactTag;
-
+/*eslint-disable no-shadow*/
var S = esprima.Syntax;
var USAGE =
@@ -143,7 +145,9 @@ if (require.main === module) {
var absPath = path.resolve(arg);
fs.stat(absPath, function(err, stat) {
- if (err) throw err;
+ if (err) {
+ throw err;
+ }
if (stat.isFile()) {
transformFile(absPath);
diff --git a/npm-jsx_orphaned_brackets_transformer/transforms/react.js b/npm-jsx_orphaned_brackets_transformer/transforms/react.js
index 10f28386d2..3647e01131 100644
--- a/npm-jsx_orphaned_brackets_transformer/transforms/react.js
+++ b/npm-jsx_orphaned_brackets_transformer/transforms/react.js
@@ -7,7 +7,7 @@
* of patent rights can be found in the PATENTS file in the same directory.
*/
/*global exports:true*/
-"use strict";
+'use strict';
var Syntax = require('esprima-fb').Syntax;
var utils = require('jstransform/src/utils');