Skip to content

Commit

Permalink
Refactor code-style
Browse files Browse the repository at this point in the history
  • Loading branch information
wooorm committed Aug 10, 2018
1 parent bd9e7e9 commit b57afe7
Show file tree
Hide file tree
Showing 9 changed files with 189 additions and 180 deletions.
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
coverage/
remark-frontmatter.js
remark-frontmatter.min.js
66 changes: 29 additions & 37 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,71 +1,63 @@
'use strict';
'use strict'

var xtend = require('xtend');
var matters = require('./lib/matters');
var parse = require('./lib/parse');
var compile = require('./lib/compile');
var xtend = require('xtend')
var matters = require('./lib/matters')
var parse = require('./lib/parse')
var compile = require('./lib/compile')

module.exports = frontmatter;
module.exports = frontmatter

function frontmatter(options) {
var parser = this.Parser;
var compiler = this.Compiler;
var config = matters(options || ['yaml']);
var parser = this.Parser
var compiler = this.Compiler
var config = matters(options || ['yaml'])

if (isRemarkParser(parser)) {
attachParser(parser, config);
attachParser(parser, config)
}

if (isRemarkCompiler(compiler)) {
attachCompiler(compiler, config);
attachCompiler(compiler, config)
}
}

function attachParser(parser, matters) {
var proto = parser.prototype;
var tokenizers = wrap(parse, matters);
var names = [];
var key;
var proto = parser.prototype
var tokenizers = wrap(parse, matters)
var names = []
var key

for (key in tokenizers) {
names.push(key);
names.push(key)
}

proto.blockMethods = names.concat(proto.blockMethods);
proto.blockTokenizers = xtend(tokenizers, proto.blockTokenizers);
proto.blockMethods = names.concat(proto.blockMethods)
proto.blockTokenizers = xtend(tokenizers, proto.blockTokenizers)
}

function attachCompiler(compiler, matters) {
var proto = compiler.prototype;
proto.visitors = xtend(wrap(compile, matters), proto.visitors);
var proto = compiler.prototype
proto.visitors = xtend(wrap(compile, matters), proto.visitors)
}

function wrap(func, matters) {
var result = {};
var length = matters.length;
var index = -1;
var tuple;
var result = {}
var length = matters.length
var index = -1
var tuple

while (++index < length) {
tuple = func(matters[index]);
result[tuple[0]] = tuple[1];
tuple = func(matters[index])
result[tuple[0]] = tuple[1]
}

return result;
return result
}

function isRemarkParser(parser) {
return Boolean(
parser &&
parser.prototype &&
parser.prototype.blockTokenizers
);
return Boolean(parser && parser.prototype && parser.prototype.blockTokenizers)
}

function isRemarkCompiler(compiler) {
return Boolean(
compiler &&
compiler.prototype &&
compiler.prototype.visitors
);
return Boolean(compiler && compiler.prototype && compiler.prototype.visitors)
}
18 changes: 9 additions & 9 deletions lib/compile.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
'use strict';
'use strict'

var fence = require('./fence');
var fence = require('./fence')

module.exports = create;
module.exports = create

function create(matter) {
var type = matter.type;
var open = fence(matter, 'open');
var close = fence(matter, 'close');
var type = matter.type
var open = fence(matter, 'open')
var close = fence(matter, 'close')

frontmatter.displayName = type + 'FrontMatter';
frontmatter.displayName = type + 'FrontMatter'

return [type, frontmatter];
return [type, frontmatter]

function frontmatter(node) {
return open + (node.value ? '\n' + node.value : '') + '\n' + close;
return open + (node.value ? '\n' + node.value : '') + '\n' + close
}
}
14 changes: 7 additions & 7 deletions lib/fence.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
'use strict';
'use strict'

module.exports = fence;
module.exports = fence

function fence(matter, prop) {
var marker;
var marker

if (matter.marker) {
marker = pick(matter.marker, prop);
return marker + marker + marker;
marker = pick(matter.marker, prop)
return marker + marker + marker
}

return pick(matter.fence, prop);
return pick(matter.fence, prop)
}

function pick(schema, prop) {
return typeof schema === 'string' ? schema : schema[prop];
return typeof schema === 'string' ? schema : schema[prop]
}
38 changes: 19 additions & 19 deletions lib/matters.js
Original file line number Diff line number Diff line change
@@ -1,55 +1,55 @@
'use strict';
'use strict'

var fault = require('fault');
var fault = require('fault')

module.exports = matters;
module.exports = matters

var own = {}.hasOwnProperty;
var own = {}.hasOwnProperty

var markers = {
yaml: '-',
toml: '+'
};
}

function matters(options) {
var results = [];
var index = -1;
var length;
var results = []
var index = -1
var length

/* One preset or matter. */
if (typeof options === 'string' || !('length' in options)) {
options = [options];
options = [options]
}

length = options.length;
length = options.length

while (++index < length) {
results[index] = matter(options[index]);
results[index] = matter(options[index])
}

return results;
return results
}

function matter(option) {
var result = option;
var result = option

if (typeof result === 'string') {
if (!own.call(markers, result)) {
throw fault('Missing matter definition for `%s`', result);
throw fault('Missing matter definition for `%s`', result)
}

result = {type: result, marker: markers[result]};
result = {type: result, marker: markers[result]}
} else if (typeof result !== 'object') {
throw fault('Expected matter to be an object, not `%j`', result);
throw fault('Expected matter to be an object, not `%j`', result)
}

if (!own.call(result, 'type')) {
throw fault('Missing `type` in matter `%j`', result);
throw fault('Missing `type` in matter `%j`', result)
}

if (!own.call(result, 'fence') && !own.call(result, 'marker')) {
throw fault('Missing `marker` or `fence` in matter `%j`', result);
throw fault('Missing `marker` or `fence` in matter `%j`', result)
}

return result;
return result
}
36 changes: 18 additions & 18 deletions lib/parse.js
Original file line number Diff line number Diff line change
@@ -1,45 +1,45 @@
'use strict';
'use strict'

var fence = require('./fence');
var fence = require('./fence')

module.exports = create;
module.exports = create

function create(matter) {
var name = matter.type + 'FrontMatter';
var open = fence(matter, 'open');
var close = fence(matter, 'close');
var newline = '\n';
var name = matter.type + 'FrontMatter'
var open = fence(matter, 'open')
var close = fence(matter, 'close')
var newline = '\n'

frontmatter.displayName = name;
frontmatter.onlyAtStart = true;
frontmatter.displayName = name
frontmatter.onlyAtStart = true

return [name, frontmatter];
return [name, frontmatter]

function frontmatter(eat, value, silent) {
var index = open.length;
var offset;
var index = open.length
var offset

if (value.slice(0, index) !== open || value.charAt(index) !== newline) {
return;
return
}

offset = value.indexOf(close, index);
offset = value.indexOf(close, index)

while (offset !== -1 && value.charAt(offset - 1) !== newline) {
index = offset + close.length;
offset = value.indexOf(close, index);
index = offset + close.length
offset = value.indexOf(close, index)
}

if (offset !== -1) {
/* istanbul ignore if - never used (yet) */
if (silent) {
return true;
return true
}

return eat(value.slice(0, offset + close.length))({
type: matter.type,
value: value.slice(open.length + 1, offset - 1)
});
})
}
}
}
18 changes: 13 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"is-hidden": "^1.1.0",
"not": "^0.1.0",
"nyc": "^12.0.0",
"prettier": "^1.14.2",
"remark": "^9.0.0",
"remark-cli": "^5.0.0",
"remark-preset-wooorm": "^4.0.0",
Expand All @@ -40,23 +41,30 @@
"xo": "^0.22.0"
},
"scripts": {
"build-md": "remark *.md -qfo",
"format": "remark *.md -qfo && prettier --write \"**/*.js\" && xo --fix",
"build-bundle": "browserify . -s remarkFrontmatter > remark-frontmatter.js",
"build-mangle": "browserify . -s remarkFrontmatter -p tinyify > remark-frontmatter.min.js",
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"lint": "xo",
"build": "npm run build-bundle && npm run build-mangle",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test/index.js",
"test": "npm run build && npm run lint && npm run test-coverage"
"test": "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
22 changes: 11 additions & 11 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,25 @@ title = "New Website"
And our script, `example.js`, looks as follows:

```javascript
var vfile = require('to-vfile');
var report = require('vfile-reporter');
var unified = require('unified');
var parse = require('remark-parse');
var stringify = require('remark-stringify');
var frontmatter = require('remark-frontmatter');
var vfile = require('to-vfile')
var report = require('vfile-reporter')
var unified = require('unified')
var parse = require('remark-parse')
var stringify = require('remark-stringify')
var frontmatter = require('remark-frontmatter')

unified()
.use(parse)
.use(stringify)
.use(frontmatter, ['yaml', 'toml'])
.use(logger)
.process(vfile.readSync('example.md'), function (err, file) {
console.log(String(file));
console.error(report(err || file));
});
.process(vfile.readSync('example.md'), function(err, file) {
console.log(String(file))
console.error(report(err || file))
})

function logger() {
return console.dir;
return console.dir
}
```

Expand Down
Loading

0 comments on commit b57afe7

Please sign in to comment.