Browse Source

Merge pull request #331 from bvaughn/prettier-format-examples

Format examples with Prettier too
main
Brian Vaughn 7 years ago
committed by GitHub
parent
commit
1d1441354c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      .prettierrc.examples
  2. 17
      examples/components-and-props/extracting-components-continued.js
  3. 17
      examples/components-and-props/extracting-components.js
  4. 4
      examples/es5-syntax-example.js
  5. 8
      examples/introducing-jsx.js
  6. 108
      examples/reconciliation/index-used-as-key.js
  7. 108
      examples/reconciliation/no-index-used-as-key.js
  8. 6
      examples/tutorial-expanded-version.js
  9. 8
      package.json

8
.prettierrc.examples

@ -0,0 +1,8 @@
{
"bracketSpacing": false,
"jsxBracketSameLine": true,
"parser": "flow",
"printWidth": 40,
"singleQuote": true,
"trailingComma": "es5"
}

17
examples/components-and-props/extracting-components-continued.js

@ -4,9 +4,11 @@ function formatDate(date) {
function Avatar(props) { function Avatar(props) {
return ( return (
<img className="Avatar" <img
className="Avatar"
src={props.user.avatarUrl} src={props.user.avatarUrl}
alt={props.user.name} /> alt={props.user.name}
/>
); );
} }
@ -37,16 +39,19 @@ function Comment(props) {
const comment = { const comment = {
date: new Date(), date: new Date(),
text: 'I hope you enjoy learning React!', text:
'I hope you enjoy learning React!',
author: { author: {
name: 'Hello Kitty', name: 'Hello Kitty',
avatarUrl: 'http://placekitten.com/g/64/64' avatarUrl:
} 'http://placekitten.com/g/64/64',
},
}; };
ReactDOM.render( ReactDOM.render(
<Comment <Comment
date={comment.date} date={comment.date}
text={comment.text} text={comment.text}
author={comment.author} />, author={comment.author}
/>,
document.getElementById('root') document.getElementById('root')
); );

17
examples/components-and-props/extracting-components.js

@ -6,9 +6,11 @@ function Comment(props) {
return ( return (
<div className="Comment"> <div className="Comment">
<div className="UserInfo"> <div className="UserInfo">
<img className="Avatar" <img
className="Avatar"
src={props.author.avatarUrl} src={props.author.avatarUrl}
alt={props.author.name} /> alt={props.author.name}
/>
<div className="UserInfo-name"> <div className="UserInfo-name">
{props.author.name} {props.author.name}
</div> </div>
@ -25,16 +27,19 @@ function Comment(props) {
const comment = { const comment = {
date: new Date(), date: new Date(),
text: 'I hope you enjoy learning React!', text:
'I hope you enjoy learning React!',
author: { author: {
name: 'Hello Kitty', name: 'Hello Kitty',
avatarUrl: 'http://placekitten.com/g/64/64' avatarUrl:
} 'http://placekitten.com/g/64/64',
},
}; };
ReactDOM.render( ReactDOM.render(
<Comment <Comment
date={comment.date} date={comment.date}
text={comment.text} text={comment.text}
author={comment.author} />, author={comment.author}
/>,
document.getElementById('root') document.getElementById('root')
); );

4
examples/es5-syntax-example.js

@ -1,3 +1,5 @@
const element = <h1>Hello, world!</h1>; const element = <h1>Hello, world!</h1>;
const container = document.getElementById('root'); const container = document.getElementById(
'root'
);
ReactDOM.render(element, container); ReactDOM.render(element, container);

8
examples/introducing-jsx.js

@ -1,5 +1,7 @@
function formatName(user) { function formatName(user) {
return user.firstName + ' ' + user.lastName; return (
user.firstName + ' ' + user.lastName
);
} }
const user = { const user = {
@ -8,9 +10,7 @@ const user = {
}; };
const element = ( const element = (
<h1> <h1>Hello, {formatName(user)}!</h1>
Hello, {formatName(user)}!
</h1>
); );
ReactDOM.render( ReactDOM.render(

108
examples/reconciliation/index-used-as-key.js

@ -1,8 +1,16 @@
const ToDo = (props) => ( const ToDo = props => (
<tr> <tr>
<td><label>{props.id}</label></td> <td>
<td><input/></td> <label>{props.id}</label>
<td><label>{props.createdAt.toTimeString()}</label></td> </td>
<td>
<input />
</td>
<td>
<label>
{props.createdAt.toTimeString()}
</label>
</td>
</tr> </tr>
); );
@ -14,86 +22,114 @@ class ToDoList extends React.Component {
this.state = { this.state = {
todoCounter: todoCounter, todoCounter: todoCounter,
list: [ list: [
{ id: todoCounter, createdAt: date }, {
] id: todoCounter,
} createdAt: date,
},
],
};
} }
sortByEarliest() { sortByEarliest() {
const sortedList = this.state.list.sort((a, b) => { const sortedList = this.state.list.sort(
return a.createdAt - b.createdAt; (a, b) => {
}); return (
a.createdAt - b.createdAt
);
}
);
this.setState({ this.setState({
list: [...sortedList] list: [...sortedList],
}) });
} }
sortByLatest() { sortByLatest() {
const sortedList = this.state.list.sort((a, b) => { const sortedList = this.state.list.sort(
return b.createdAt - a.createdAt; (a, b) => {
}); return (
b.createdAt - a.createdAt
);
}
);
this.setState({ this.setState({
list: [...sortedList] list: [...sortedList],
}) });
} }
addToEnd() { addToEnd() {
const date = new Date(); const date = new Date();
const nextId = this.state.todoCounter + 1; const nextId =
this.state.todoCounter + 1;
const newList = [ const newList = [
...this.state.list, ...this.state.list,
{ id: nextId, createdAt: date } {id: nextId, createdAt: date},
]; ];
this.setState({ this.setState({
list: newList, list: newList,
todoCounter: nextId todoCounter: nextId,
}); });
} }
addToStart() { addToStart() {
const date = new Date(); const date = new Date();
const nextId = this.state.todoCounter + 1; const nextId =
this.state.todoCounter + 1;
const newList = [ const newList = [
{ id: nextId, createdAt: date }, {id: nextId, createdAt: date},
...this.state.list ...this.state.list,
]; ];
this.setState({ this.setState({
list: newList, list: newList,
todoCounter: nextId todoCounter: nextId,
}); });
} }
render() { render() {
return( return (
<div> <div>
<code>key=index</code><br/> <code>key=index</code>
<button onClick={this.addToStart.bind(this)}> <br />
<button
onClick={this.addToStart.bind(
this
)}>
Add New to Start Add New to Start
</button> </button>
<button onClick={this.addToEnd.bind(this)}> <button
onClick={this.addToEnd.bind(
this
)}>
Add New to End Add New to End
</button> </button>
<button onClick={this.sortByEarliest.bind(this)}> <button
onClick={this.sortByEarliest.bind(
this
)}>
Sort by Earliest Sort by Earliest
</button> </button>
<button onClick={this.sortByLatest.bind(this)}> <button
onClick={this.sortByLatest.bind(
this
)}>
Sort by Latest Sort by Latest
</button> </button>
<table> <table>
<tr> <tr>
<th>ID</th><th></th><th>created at</th> <th>ID</th>
<th />
<th>created at</th>
</tr> </tr>
{ {this.state.list.map(
this.state.list.map((todo, index) => ( (todo, index) => (
<ToDo <ToDo
key={index} key={index}
{...todo} {...todo}
/> />
)) )
} )}
</table> </table>
</div> </div>
) );
} }
} }

108
examples/reconciliation/no-index-used-as-key.js

@ -1,8 +1,16 @@
const ToDo = (props) => ( const ToDo = props => (
<tr> <tr>
<td><label>{props.id}</label></td> <td>
<td><input/></td> <label>{props.id}</label>
<td><label>{props.createdAt.toTimeString()}</label></td> </td>
<td>
<input />
</td>
<td>
<label>
{props.createdAt.toTimeString()}
</label>
</td>
</tr> </tr>
); );
@ -13,87 +21,115 @@ class ToDoList extends React.Component {
const toDoCounter = 1; const toDoCounter = 1;
this.state = { this.state = {
list: [ list: [
{ id: toDoCounter, createdAt: date }, {
id: toDoCounter,
createdAt: date,
},
], ],
toDoCounter: toDoCounter toDoCounter: toDoCounter,
} };
} }
sortByEarliest() { sortByEarliest() {
const sortedList = this.state.list.sort((a, b) => { const sortedList = this.state.list.sort(
return a.createdAt - b.createdAt; (a, b) => {
}); return (
a.createdAt - b.createdAt
);
}
);
this.setState({ this.setState({
list: [...sortedList] list: [...sortedList],
}) });
} }
sortByLatest() { sortByLatest() {
const sortedList = this.state.list.sort((a, b) => { const sortedList = this.state.list.sort(
return b.createdAt - a.createdAt; (a, b) => {
}); return (
b.createdAt - a.createdAt
);
}
);
this.setState({ this.setState({
list: [...sortedList] list: [...sortedList],
}) });
} }
addToEnd() { addToEnd() {
const date = new Date(); const date = new Date();
const nextId = this.state.toDoCounter + 1; const nextId =
this.state.toDoCounter + 1;
const newList = [ const newList = [
...this.state.list, ...this.state.list,
{ id: nextId, createdAt: date } {id: nextId, createdAt: date},
]; ];
this.setState({ this.setState({
list: newList, list: newList,
toDoCounter: nextId toDoCounter: nextId,
}); });
} }
addToStart() { addToStart() {
const date = new Date(); const date = new Date();
const nextId = this.state.toDoCounter + 1; const nextId =
this.state.toDoCounter + 1;
const newList = [ const newList = [
{ id: nextId, createdAt: date }, {id: nextId, createdAt: date},
...this.state.list ...this.state.list,
]; ];
this.setState({ this.setState({
list: newList, list: newList,
toDoCounter: nextId toDoCounter: nextId,
}); });
} }
render() { render() {
return( return (
<div> <div>
<code>key=id</code><br/> <code>key=id</code>
<button onClick={this.addToStart.bind(this)}> <br />
<button
onClick={this.addToStart.bind(
this
)}>
Add New to Start Add New to Start
</button> </button>
<button onClick={this.addToEnd.bind(this)}> <button
onClick={this.addToEnd.bind(
this
)}>
Add New to End Add New to End
</button> </button>
<button onClick={this.sortByEarliest.bind(this)}> <button
onClick={this.sortByEarliest.bind(
this
)}>
Sort by Earliest Sort by Earliest
</button> </button>
<button onClick={this.sortByLatest.bind(this)}> <button
onClick={this.sortByLatest.bind(
this
)}>
Sort by Latest Sort by Latest
</button> </button>
<table> <table>
<tr> <tr>
<th>ID</th><th></th><th>created at</th> <th>ID</th>
<th />
<th>created at</th>
</tr> </tr>
{ {this.state.list.map(
this.state.list.map((todo, index) => ( (todo, index) => (
<ToDo <ToDo
key={todo.id} key={todo.id}
{...todo} {...todo}
/> />
)) )
} )}
</table> </table>
</div> </div>
) );
} }
} }

6
examples/tutorial-expanded-version.js

@ -1,8 +1,10 @@
<div className="shopping-list"> <div className="shopping-list">
<h1>Shopping List for {props.name}</h1> <h1>
Shopping List for {props.name}
</h1>
<ul> <ul>
<li>Instagram</li> <li>Instagram</li>
<li>WhatsApp</li> <li>WhatsApp</li>
<li>Oculus</li> <li>Oculus</li>
</ul> </ul>
</div> </div>;

8
package.json

@ -79,10 +79,14 @@
"ci-check": "npm-run-all prettier:diff --parallel lint flow", "ci-check": "npm-run-all prettier:diff --parallel lint flow",
"dev": "gatsby develop -H 0.0.0.0", "dev": "gatsby develop -H 0.0.0.0",
"flow": "flow", "flow": "flow",
"format:source": "prettier --config .prettierrc --write \"{gatsby-*.js,{flow-typed,plugins,src}/**/*.js}\"",
"format:examples": "prettier --config .prettierrc.examples --write \"examples/**/*.js\"",
"lint": "eslint .", "lint": "eslint .",
"netlify": "yarn install && yarn build", "netlify": "yarn install && yarn build",
"prettier": "prettier --config .prettierrc --write \"{gatsby-*.js,{flow-typed,plugins,src}/**/*.js}\"", "nit:source": "prettier --config .prettierrc --list-different \"{gatsby-*.js,{flow-typed,plugins,src}/**/*.js}\"",
"prettier:diff": "prettier --config .prettierrc --list-different \"{gatsby-*.js,{flow-typed,plugins,src}/**/*.js}\"", "nit:examples": "prettier --config .prettierrc.examples --list-different \"examples/**/*.js\"",
"prettier": "yarn format:source && yarn format:examples",
"prettier:diff": "yarn nit:source && yarn nit:examples",
"reset": "rimraf ./.cache" "reset": "rimraf ./.cache"
}, },
"devDependencies": { "devDependencies": {

Loading…
Cancel
Save