Skip to content
This repository was archived by the owner on Dec 19, 2022. It is now read-only.

react-docgen #10

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions dist/GestureView.js → dist/components/GestureView.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
'use strict';

Object.defineProperty(exports, '__esModule', {
value: true
});

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
Expand All @@ -20,7 +16,7 @@ var _reactNative = require('react-native');

var _reactNative2 = _interopRequireDefault(_reactNative);

exports['default'] = _reactNative2['default'].createClass({
var GestureView = _reactNative2['default'].createClass({
displayName: 'GestureView',

mixins: [(0, _mixinsEvents2['default'])(['onLayout']), (0, _mixinsDraggable2['default'])()],
Expand Down Expand Up @@ -67,4 +63,5 @@ exports['default'] = _reactNative2['default'].createClass({
);
}
});
module.exports = exports['default'];

module.exports = GestureView;
8 changes: 6 additions & 2 deletions dist/create.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@ Object.defineProperty(exports, '__esModule', {
value: true
});

var _ramda = require('ramda');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

var _curry = require('curry');

var _curry2 = _interopRequireDefault(_curry);

function createGesture(responder, transducer, getInitialLayout, draggable) {
return draggable.onDragStart.flatMap(function () {
return responder(draggable.onDragMove, getInitialLayout).transduce(transducer).takeUntil(draggable.onDragRelease);
});
};

exports['default'] = (0, _ramda.curry)(createGesture);
exports['default'] = (0, _curry2['default'])(createGesture);
module.exports = exports['default'];
2 changes: 1 addition & 1 deletion dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module.exports = {
create: require('./create'),
draggable: require('./mixins/draggable'),
events: require('./mixins/events'),
GestureView: require('./GestureView'),
GestureView: require('./components/GestureView'),
responders: {
general: require('./responder/general'),
oneFinger: require('./responder/oneFinger'),
Expand Down
6 changes: 5 additions & 1 deletion dist/responder/general.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
Object.defineProperty(exports, '__esModule', {
value: true
});
exports['default'] = genernalResponder;

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

Expand All @@ -23,6 +22,10 @@ var _immutable = require('immutable');

var _immutable2 = _interopRequireDefault(_immutable);

var _curry = require('curry');

var _curry2 = _interopRequireDefault(_curry);

function toImmutableTouch(touch) {
return _immutable2['default'].Map({
timestamp: touch.timestamp,
Expand Down Expand Up @@ -79,4 +82,5 @@ function genernalResponder(n, onMove, getInitialLayout) {
});
}

exports['default'] = (0, _curry2['default'])(genernalResponder);
module.exports = exports['default'];
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
"scripts": {
"test": "standard src/*.js && mocha --compilers js:babel/register --recursive --require should",
"start": "node_modules/.bin/babel src --out-dir dist",
"watch": "node_modules/.bin/babel src --out-dir dist --watch"
"watch": "node_modules/.bin/babel src --out-dir dist --watch",
"docgen": "react-docgen ./src/components/* | ./scripts/build-docs.sh"
},
"repository": {
"type": "git",
Expand All @@ -32,6 +33,7 @@
"babel": "^5.8.29",
"mocha": "^2.3.3",
"proxyquire": "^1.7.3",
"react-docgen": "^2.4.0",
"should": "^7.1.1",
"sinon": "^1.17.2",
"standard": "^5.3.1"
Expand Down
42 changes: 42 additions & 0 deletions scripts/build-docs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env node

/**
* This example script expects a JSON blob generated by react-docgen as input,
* e.g. react-docgen components/* | buildDocs.sh
*/

var fs = require('fs');
var generateMarkdown = require('./generateMarkdown');
var path = require('path');

var json = '';
process.stdin.setEncoding('utf8');
process.stdin.on('readable', function() {
var chunk = process.stdin.read();
if (chunk !== null) {
json += chunk;
}
});

process.stdin.on('end', function() {
buildDocs(JSON.parse(json));
});

function buildDocs(api) {
// api is an object keyed by filepath. We use the file name as component name.
for (var filepath in api) {
var name = getComponentName(filepath);
var markdown = generateMarkdown(name, api[filepath]);
fs.writeFileSync(name + '.md', markdown);
process.stdout.write(filepath + ' -> ' + name + '.md\n');
}
}

function getComponentName(filepath) {
var name = path.basename(filepath);
var ext;
while ((ext = path.extname(name))) {
name = name.substring(0, name.length - ext.length);
}
return name;
}
80 changes: 80 additions & 0 deletions scripts/generateMarkdown.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/**
* Copyright (c) 2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
"use strict";

function stringOfLength(string, length) {
var newString = '';
for (var i = 0; i < length; i++) {
newString += string;
}
return newString;
}

function generateTitle(name) {
var title = '`' + name + '` (component)';
return title + '\n' + stringOfLength('=', title.length) + '\n';
}

function generateDesciption(description) {
return description + '\n';
}

function generatePropType(type) {
var values;
if (Array.isArray(type.value)) {
values = '(' +
type.value.map(function(typeValue) {
return typeValue.name || typeValue.value;
}).join('|') +
')';
} else {
values = type.value;
}

return 'type: `' + type.name + (values ? values: '') + '`\n';
}

function generatePropDefaultValue(value) {
return 'defaultValue: `' + value.value + '`\n';
}

function generateProp(propName, prop) {
return (
'### `' + propName + '`' + (prop.required ? ' (required)' : '') + '\n' +
'\n' +
(prop.description ? prop.description + '\n\n' : '') +
(prop.type ? generatePropType(prop.type) : '') +
(prop.defaultValue ? generatePropDefaultValue(prop.defaultValue) : '') +
'\n'
);
}

function generateProps(props) {
var title = 'Props';

return (
title + '\n' +
stringOfLength('-', title.length) + '\n' +
'\n' +
Object.keys(props).sort().map(function(propName) {
return generateProp(propName, props[propName]);
}).join('\n')
);
}

function generateMarkdown(name, reactAPI) {
var markdownString =
generateTitle(name) + '\n' +
generateDesciption(reactAPI.description) + '\n' +
generateProps(reactAPI.props);

return markdownString;
}

module.exports = generateMarkdown;
13 changes: 8 additions & 5 deletions src/GestureView.js → src/components/GestureView.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import events from './mixins/events'
import draggableMixin from './mixins/draggable'
import React, {
const events = require('./mixins/events')
const draggableMixin = require('./mixins/draggable')
const React = require('react-native')
const {
PropTypes,
View
} from 'react-native'
} = React

export default React.createClass({
var GestureView = React.createClass({
mixins: [events(['onLayout']), draggableMixin()],

propTypes: {
Expand Down Expand Up @@ -42,3 +43,5 @@ export default React.createClass({
)
}
})

module.exports = GestureView
4 changes: 2 additions & 2 deletions src/create.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import curry from 'curry'
const curry = require('curry')

function createGesture (responder, transducer, getInitialLayout, draggable) {
return draggable
Expand All @@ -13,4 +13,4 @@ function createGesture (responder, transducer, getInitialLayout, draggable) {
})
};

export default curry(createGesture)
module.exports = curry(createGesture)
8 changes: 4 additions & 4 deletions src/drag.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { map } from 'transducers.js'
import oneFingerResponder from './responder/oneFinger'
const map = require('transducers.js').map
const oneFingerResponder = require('./responder/oneFinger')

export let responder = oneFingerResponder
exports.responder = oneFingerResponder

export let transducer = map(function (gesture) {
exports.transducer = map(function (gesture) {
let layout = gesture.get('initialLayout').set('rotate', 0)
let initialTouch = gesture.get('initialTouches').get(0)
let currentTouch = gesture.get('touches').get(0)
Expand Down
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module.exports = {
create: require('./create'),
draggable: require('./mixins/draggable'),
events: require('./mixins/events'),
GestureView: require('./GestureView'),
GestureView: require('./components/GestureView'),
responders: {
general: require('./responder/general'),
oneFinger: require('./responder/oneFinger'),
Expand Down
10 changes: 6 additions & 4 deletions src/mixins/draggable.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import Rx from 'rx'
import create from '../create'
import { PanResponder } from 'react-native'
const Rx = require('rx')
const create = require('../create')
const React = require('react-native')

const { PanResponder } = React

function yes () { return true }

export default function draggableMixin (gestureDefs) {
module.exports = function draggableMixin (gestureDefs) {
gestureDefs = gestureDefs || []

var target
Expand Down
4 changes: 2 additions & 2 deletions src/mixins/events.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Rx from 'rx'
const Rx = require('rx')

export default function events (evs = []) {
module.exports = function events (evs = []) {
var streams = evs.reduce(function (res, eventName) {
res[eventName] = new Rx.Subject()
return res
Expand Down
8 changes: 4 additions & 4 deletions src/pinch.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import twoFingerResponder from './responder/twoFinger'
import { map } from 'transducers.js'
const twoFingerResponder = require('./responder/twoFinger')
const map = require('transducers.js').map

export let responder = twoFingerResponder
exports.responder = twoFingerResponder

export let transducer = map(function (gesture) {
exports.transducer = map(function (gesture) {
let layout = gesture.get('initialLayout')
let startX = layout.get('x')
let startY = layout.get('y')
Expand Down
8 changes: 4 additions & 4 deletions src/responder/general.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
* from this responder.
*/

import Rx from 'rx'
import Immutable from 'immutable'
import curry from 'curry'
const Rx = require('rx')
const Immutable = require('immutable')
const curry = require('curry')

function toImmutableTouch (touch) {
return Immutable.Map({
Expand Down Expand Up @@ -81,4 +81,4 @@ function genernalResponder (n, onMove, getInitialLayout) {
})
}

export default curry(genernalResponder)
module.exports = curry(genernalResponder)
4 changes: 2 additions & 2 deletions src/responder/oneFinger.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import genernalResponder from './general'
const genernalResponder = require('./general')

export default function oneFingerResponder (onMove, getInitialLayout) {
module.exports = function oneFingerResponder (onMove, getInitialLayout) {
return genernalResponder(1, onMove, getInitialLayout)
}
6 changes: 3 additions & 3 deletions src/responder/twoFinger.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
* 6. centerDiff - the different of the center point
*/

import { Map } from 'immutable'
import genernalResponder from './general'
const Map = require('immutable').Map
const genernalResponder = require('./general')

function center (touches) {
let a = touches.get(0)
Expand Down Expand Up @@ -85,6 +85,6 @@ function extend (gesture) {
return gesture.withMutations(mutate)
}

export default function twoFingerResponder (onMove, getInitialLayout) {
module.exports = function twoFingerResponder (onMove, getInitialLayout) {
return genernalResponder(2, onMove, getInitialLayout).map(extend)
}