From bcc50863e88497a1fb9a95e6721887fc17681340 Mon Sep 17 00:00:00 2001 From: minwe Date: Thu, 12 May 2016 10:01:30 +0800 Subject: [PATCH] add Transition add-on prop templates --- README.md | 71 +++++++++++++-- gulpfile.js | 34 +++++--- jetbrains-react.jar | Bin 2815 -> 3004 bytes jetbrains/templates/ReactJS.xml | 147 ++++++++++++++++++++++++++++++-- package.json | 2 +- src/template.yaml | 49 ++++++++++- 6 files changed, 271 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index e69aa79..b392d20 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,6 @@ For example, to create a new React class, type `rcc` and press `Tab` or press `C ```js import React, { - Component, PropTypes, } from 'react'; @@ -59,7 +58,7 @@ export default $class$; 'use strict'; var React = require('react'); -var PropTypes = PropTypes; +var PropTypes = React.PropTypes; var $class$ = React.createClass({ render: function() { @@ -230,6 +229,18 @@ componentWillUnmount: function() { ``` +### `dn` + +```js +displayName: '$END$', +``` + +### `dnp` + +```js +$START$.displayName = '$END$'; +``` + ### `fdn` ```js @@ -315,7 +326,7 @@ dangerouslySetInnerHTML={__html: '$END$'} ```js propTypes: { $START$: PropTypes.$END$ -} +}, ``` @@ -391,7 +402,7 @@ this.state.$END$ ```js contextTypes: { $START$: PropTypes.$END$ -} +}, ``` @@ -400,7 +411,7 @@ contextTypes: { ```js childContextTypes: { $START$: PropTypes.$END$ -} +}, ``` @@ -432,6 +443,12 @@ getChildContext: function() { ``` +### `sdn` + +```js +static displayName = '$END$'; +``` + ### `spt` ```js @@ -468,7 +485,7 @@ static childContextTypes = { ``` -### `csttr` +### `cstt` ```js constructor(props, context$START$) { @@ -477,6 +494,48 @@ constructor(props, context$START$) { ``` +### `tsn` + +```js +transitionName="$END$" +``` + +### `tsa` + +```js +transitionAppear={$END$} +``` + +### `tse` + +```js +transitionEnter={$END$} +``` + +### `tsl` + +```js +transitionLeave={$END$} +``` + +### `tset` + +```js +transitionEnterTimeout={$END$} +``` + +### `tslt` + +```js +transitionLeaveTimeout={$END$} +``` + +### `tsat` + +```js +transitionAppearTimeout={$END$} +``` + ### `oncp` ```js diff --git a/gulpfile.js b/gulpfile.js index 40a1ad7..3c7fe87 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -9,30 +9,36 @@ var Handlebars = require('handlebars'); var template = Handlebars.compile(fs.readFileSync('src/ReactJS.hbs', 'utf8')); var docTpl = Handlebars.compile(fs.readFileSync('src/doc.hbs', 'utf8')); var readme = fs.readFileSync('README.md', 'utf8'); - var templates = yaml.safeLoad(fs.readFileSync('src/template.yaml', 'utf8')); var eventsTpl = yaml.safeLoad(fs.readFileSync('src/envents.yaml', 'utf8')); -var processTpl = function(tpl) { - tpl = JSON.stringify(tpl); - return tpl.replace(/\\n/g, ' ') +var escapeTpl = function(tpl) { + tpl = tpl.replace(/\n/g, ' ') .replace(//g, '>'); + .replace(/>/g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + // .replace(/&/g, '&') + + return JSON.stringify(tpl); }; var data = []; -var docData = []; for (var k in templates) { if (templates.hasOwnProperty(k)) { var t = templates[k]; + console.log(typeof t.tpl); + var isMethod = (typeof t.tpl === 'string' && t.tpl.indexOf(': function') > -1); var tpl = t.tpl.next || t.tpl; - tpl = tpl.replace(/: function/g, '').replace(/},/g, '}'); - + tpl = tpl.replace(/: function/g, ''); + + isMethod && (tpl = tpl.replace(/},/g, '}')); + var snippet = { name: k, description: t.description || t.tpl, - tpl: processTpl(tpl), + tpl: escapeTpl(tpl), variables: t.variables || [], tplRaw: tpl }; @@ -40,13 +46,13 @@ for (var k in templates) { data.push(snippet); if (t.tpl.next || - (typeof t.tpl === 'string' && t.tpl.indexOf(': function') > -1)) { + (typeof t.tpl === 'string' && isMethod)) { var tpl5 = t.tpl.es5 || t.tpl; var snippet5 = { name: k + '5', description: t.description || t.tpl, - tpl: processTpl(tpl5), + tpl: escapeTpl(tpl5), variables: t.variables || [], tplRaw: tpl5 }; @@ -56,7 +62,7 @@ for (var k in templates) { } } -function processEnventsTpl(eventsMap) { +function processEventsTpl(eventsMap) { for (var key in eventsMap) { if (eventsMap.hasOwnProperty(key)) { var tplName = eventsMap[key]; @@ -64,7 +70,7 @@ function processEnventsTpl(eventsMap) { data.push({ name: tplName, description: key, - tpl: JSON.stringify(tpl), + tpl: escapeTpl(tpl), tplRaw: tpl }); @@ -72,7 +78,7 @@ function processEnventsTpl(eventsMap) { } } -processEnventsTpl(eventsTpl); +processEventsTpl(eventsTpl); fs.writeFileSync('jetbrains/templates/ReactJS.xml', template(data)); fs.writeFileSync('README.md', readme.replace( diff --git a/jetbrains-react.jar b/jetbrains-react.jar index f95c619c59204d83817fac212720c2337fd3ea92..d429cc00a64e8999a9f1cb2f04bc9cb9e6c7e002 100644 GIT binary patch delta 2728 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 delta 2532 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 diff --git a/jetbrains/templates/ReactJS.xml b/jetbrains/templates/ReactJS.xml index ceba734..6996642 100644 --- a/jetbrains/templates/ReactJS.xml +++ b/jetbrains/templates/ReactJS.xml @@ -1,7 +1,7 @@ + +