// tslint:disable:no-var-requires import * as React from 'react'; const tslintMetaJson = require('../tslint-meta.json'); const tslintRulesJson = require('../tslint-rules.json'); const tslintTestsJson = require('../tslint-tests.json'); import { parseDescription } from '../utils'; interface RuleTableProps { onlyShowOff: boolean; } export default class RuleTable extends React.Component { public render() { return (

规则说明

错误的示例

正确的示例

{Object.keys(tslintRulesJson).map(this.renderOneRule.bind(this))}
); } private renderOneRule(ruleName) { if (!this.shouldShowRule(ruleName)) { return null; } return (
{ruleName}

{this.renderReason(ruleName)}

{this.renderRuleTestBad(ruleName)}
{this.renderRuleTestGood(ruleName)}
); } /** * 渲染此条规则配置的原因 * @param ruleName 规则名称 */ private renderReason(ruleName: string) { if (tslintMetaJson[ruleName].reason === undefined) { return null; } return (

); } private renderRuleTestGood(ruleName: string) { if (!tslintTestsJson[ruleName]) return null; if (!tslintTestsJson[ruleName].good) return null; return (

                $2'
                        )
                    }}
                />
            
); } private renderRuleTestBad(ruleName: string) { if (!tslintTestsJson[ruleName]) return null; if (!tslintTestsJson[ruleName].bad) return null; return (
                $2'
                        )
                    }}
                />
            
); } private shouldShowRule(ruleName: string) { if (this.props.onlyShowOff && tslintRulesJson[ruleName] === false) { return false; } return true; } }