Skip to content

Commit

Permalink
Refactor code-style
Browse files Browse the repository at this point in the history
  • Loading branch information
wooorm committed May 19, 2018
1 parent b4f1bae commit 6c1b4cf
Show file tree
Hide file tree
Showing 85 changed files with 2,791 additions and 2,443 deletions.
3 changes: 3 additions & 0 deletions .prettierignore
@@ -0,0 +1,3 @@
coverage/
remark-lint.js
remark-lint.min.js
4 changes: 2 additions & 2 deletions .remarkrc.js
@@ -1,4 +1,4 @@
exports.settings = {bullet: '*', paddedTable: false};
exports.settings = {bullet: '*', paddedTable: false}

exports.plugins = [
require('./packages/remark-preset-lint-recommended'),
Expand All @@ -9,4 +9,4 @@ exports.plugins = [
require('remark-validate-links'),
require('./script/plugin/list-of-presets'),
require('./script/plugin/list-of-rules')
];
]
27 changes: 18 additions & 9 deletions package.json
Expand Up @@ -38,6 +38,7 @@
"mdast-zone": "^3.0.0",
"nyc": "^11.0.0",
"parse-author": "^2.0.0",
"prettier": "^1.12.1",
"remark": "^9.0.0",
"remark-cli": "^5.0.0",
"remark-comment-config": "^5.0.0",
Expand All @@ -55,25 +56,33 @@
},
"scripts": {
"prepublish": "lerna bootstrap",
"build-presets": "node script/build-presets",
"build-rules": "node script/build-rules",
"build-md": "remark . -qfo",
"build-bundle": "browserify packages/remark-lint/index.js --bare -s remarkLint > remark-lint.js",
"build-mangle": "esmangle remark-lint.js > remark-lint.min.js",
"build": "npm run build-presets && npm run build-rules && npm run build-md && npm run build-bundle && npm run build-mangle",
"lint": "xo",
"format": "remark . -qfo && prettier --write '**/*.js' && xo --fix",
"generate:presets": "node script/build-presets",
"generate:rules": "node script/build-rules",
"generate": "npm run generate:presets && npm run generate:rules",
"build:bundle": "browserify packages/remark-lint/index.js --bare -s remarkLint > remark-lint.js",
"build:mangle": "esmangle remark-lint.js > remark-lint.min.js",
"build": "npm run build:bundle && npm run build:mangle",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js",
"test": "npm run build && npm run lint && npm run test-coverage"
"test": "npm run generate && npm run format && npm run build && npm run test-coverage"
},
"nyc": {
"check-coverage": true,
"lines": 100,
"functions": 100,
"branches": 100
},
"prettier": {
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"bracketSpacing": false,
"semi": false,
"trailingComma": "none"
},
"xo": {
"space": true,
"prettier": true,
"esnext": false,
"rules": {
"guard-for-in": "off",
Expand Down
69 changes: 37 additions & 32 deletions packages/remark-lint-blockquote-indentation/index.js
Expand Up @@ -45,59 +45,64 @@
* 9:3: Add 1 space between blockquote and content
*/

'use strict';
'use strict'

var rule = require('unified-lint-rule');
var plural = require('plur');
var visit = require('unist-util-visit');
var position = require('unist-util-position');
var generated = require('unist-util-generated');
var toString = require('mdast-util-to-string');
var rule = require('unified-lint-rule')
var plural = require('plur')
var visit = require('unist-util-visit')
var position = require('unist-util-position')
var generated = require('unist-util-generated')
var toString = require('mdast-util-to-string')

module.exports = rule('remark-lint:blockquote-indentation', blockquoteIndentation);
module.exports = rule(
'remark-lint:blockquote-indentation',
blockquoteIndentation
)

function blockquoteIndentation(tree, file, preferred) {
preferred = isNaN(preferred) || typeof preferred !== 'number' ? null : preferred;
function blockquoteIndentation(tree, file, pref) {
pref = typeof pref === 'number' && !isNaN(pref) ? pref : null

visit(tree, 'blockquote', visitor);
visit(tree, 'blockquote', visitor)

function visitor(node) {
var indent;
var diff;
var word;
var diff
var diffAbs
var reason

if (generated(node) || node.children.length === 0) {
return;
return
}

if (preferred) {
indent = check(node);
diff = preferred - indent;
word = diff > 0 ? 'Add' : 'Remove';

diff = Math.abs(diff);
if (pref) {
diff = pref - check(node)

if (diff !== 0) {
file.message(
word + ' ' + diff + ' ' + plural('space', diff) +
' between blockquote and content',
position.start(node.children[0])
);
diffAbs = Math.abs(diff)

reason =
(diff > 0 ? 'Add' : 'Remove') +
' ' +
diffAbs +
' ' +
plural('space', diffAbs) +
' between blockquote and content'

file.message(reason, position.start(node.children[0]))
}
} else {
preferred = check(node);
pref = check(node)
}
}
}

function check(node) {
var head = node.children[0];
var indentation = position.start(head).column - position.start(node).column;
var padding = toString(head).match(/^ +/);
var head = node.children[0]
var indentation = position.start(head).column - position.start(node).column
var padding = toString(head).match(/^ +/)

if (padding) {
indentation += padding[0].length;
indentation += padding[0].length
}

return indentation;
return indentation
}
143 changes: 67 additions & 76 deletions packages/remark-lint-checkbox-character-style/index.js
Expand Up @@ -68,103 +68,94 @@
* 1:1: Invalid checked checkbox marker `!`: use either `'x'`, or `'X'`
*/

'use strict';
'use strict'

var rule = require('unified-lint-rule');
var vfileLocation = require('vfile-location');
var visit = require('unist-util-visit');
var position = require('unist-util-position');
var generated = require('unist-util-generated');
var rule = require('unified-lint-rule')
var vfileLocation = require('vfile-location')
var visit = require('unist-util-visit')
var position = require('unist-util-position')
var generated = require('unist-util-generated')

module.exports = rule('remark-lint:checkbox-character-style', checkboxCharacterStyle);
module.exports = rule(
'remark-lint:checkbox-character-style',
checkboxCharacterStyle
)

var start = position.start;
var end = position.end;
var start = position.start
var end = position.end

var CHECKED = {x: true, X: true};
var UNCHECKED = {' ': true, '\t': true};
var checked = {x: true, X: true}
var unchecked = {' ': true, '\t': true}
var types = {true: 'checked', false: 'unchecked'}

function checkboxCharacterStyle(tree, file, preferred) {
var contents = file.toString();
var location = vfileLocation(file);
function checkboxCharacterStyle(tree, file, pref) {
var contents = String(file)
var location = vfileLocation(file)

if (preferred === 'consistent' || typeof preferred !== 'object') {
preferred = {};
}

if (!preferred.unchecked) {
preferred.unchecked = null;
}

if (!preferred.checked) {
preferred.checked = null;
}
pref = typeof pref === 'object' ? pref : {}

if (
preferred.unchecked !== null &&
UNCHECKED[preferred.unchecked] !== true
) {
if (pref.unchecked && unchecked[pref.unchecked] !== true) {
file.fail(
'Invalid unchecked checkbox marker `' +
preferred.unchecked +
'`: use either `\'\\t\'`, or `\' \'`'
);
pref.unchecked +
"`: use either `'\\t'`, or `' '`"
)
}

if (
preferred.checked !== null &&
CHECKED[preferred.checked] !== true
) {
if (pref.checked && checked[pref.checked] !== true) {
file.fail(
'Invalid checked checkbox marker `' +
preferred.checked +
'`: use either `\'x\'`, or `\'X\'`'
);
pref.checked +
"`: use either `'x'`, or `'X'`"
)
}

visit(tree, 'listItem', visitor);
visit(tree, 'listItem', visitor)

function visitor(node) {
var type;
var initial;
var final;
var stop;
var value;
var style;
var character;
var type
var initial
var final
var value
var style
var character
var reason

/* Exit early for items without checkbox. */
if (node.checked !== Boolean(node.checked) || generated(node)) {
return;
if (typeof node.checked !== 'boolean' || generated(node)) {
return
}

type = node.checked ? 'checked' : 'unchecked';

initial = start(node).offset;
final = (node.children.length ? start(node.children[0]) : end(node)).offset;

/* For a checkbox to be parsed, it must be followed
* by a white space. */
value = contents.slice(initial, final).trimRight().slice(0, -1);

/* The checkbox character is behind a square
* bracket. */
character = value.charAt(value.length - 1);
style = preferred[type];

if (style === null) {
preferred[type] = character;
} else if (character !== style) {
stop = initial + value.length;

file.message(
type.charAt(0).toUpperCase() + type.slice(1) +
' checkboxes should use `' + style + '` as a marker',
{
start: location.toPosition(stop - 1),
end: location.toPosition(stop)
}
);
type = types[node.checked]
initial = start(node).offset
final = (node.children.length ? start(node.children[0]) : end(node)).offset

/* For a checkbox to be parsed, it must be followed by a white space. */
value = contents
.slice(initial, final)
.trimRight()
.slice(0, -1)

/* The checkbox character is behind a square bracket. */
character = value.charAt(value.length - 1)
style = pref[type]

if (style) {
if (character !== style) {
reason =
type.charAt(0).toUpperCase() +
type.slice(1) +
' checkboxes should use `' +
style +
'` as a marker'

file.message(reason, {
start: location.toPosition(initial + value.length - 1),
end: location.toPosition(initial + value.length)
})
}
} else {
pref[type] = character
}
}
}

0 comments on commit 6c1b4cf

Please sign in to comment.