Skip to content

Commit a57fe5c

Browse files
committed
Refactor code to improve size
1 parent 2932008 commit a57fe5c

18 files changed

+137
-157
lines changed

lib/handle/code.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ function code(node, _, context) {
1212
var raw = node.value || ''
1313
var suffix = marker === '`' ? 'GraveAccent' : 'Tilde'
1414
var value
15-
var fence
15+
var sequence
1616
var exit
1717
var subexit
1818

1919
if (formatCodeAsIndented(node, context)) {
2020
exit = context.enter('codeIndented')
2121
value = indentLines(raw, map)
2222
} else {
23-
fence = repeat(marker, Math.max(streak(raw, marker) + 1, 3))
23+
sequence = repeat(marker, Math.max(streak(raw, marker) + 1, 3))
2424
exit = context.enter('codeFenced')
25-
value = fence
25+
value = sequence
2626

2727
if (node.lang) {
2828
subexit = context.enter('codeFencedLang' + suffix)
@@ -52,7 +52,7 @@ function code(node, _, context) {
5252
value += raw + '\n'
5353
}
5454

55-
value += fence
55+
value += sequence
5656
}
5757

5858
exit()

lib/handle/definition.js

+11-10
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ var checkQuote = require('../util/check-quote')
55
var safe = require('../util/safe')
66

77
function definition(node, _, context) {
8-
var quote = checkQuote(context)
9-
var suffix = quote === '"' ? 'Quote' : 'Apostrophe'
10-
var url = node.url || ''
11-
var title = node.title || ''
8+
var marker = checkQuote(context)
9+
var suffix = marker === '"' ? 'Quote' : 'Apostrophe'
1210
var exit = context.enter('definition')
1311
var subexit = context.enter('label')
1412
var value =
@@ -18,24 +16,27 @@ function definition(node, _, context) {
1816

1917
if (
2018
// If there’s no url, or…
21-
!url ||
19+
!node.url ||
2220
// If there’s whitespace, enclosed is prettier.
23-
/[ \t\r\n]/.test(url)
21+
/[ \t\r\n]/.test(node.url)
2422
) {
2523
subexit = context.enter('destinationLiteral')
26-
value += '<' + safe(context, url, {before: '<', after: '>'}) + '>'
24+
value += '<' + safe(context, node.url, {before: '<', after: '>'}) + '>'
2725
} else {
2826
// No whitespace, raw is prettier.
2927
subexit = context.enter('destinationRaw')
30-
value += safe(context, url, {before: ' ', after: ' '})
28+
value += safe(context, node.url, {before: ' ', after: ' '})
3129
}
3230

3331
subexit()
3432

35-
if (title) {
33+
if (node.title) {
3634
subexit = context.enter('title' + suffix)
3735
value +=
38-
' ' + quote + safe(context, title, {before: quote, after: quote}) + quote
36+
' ' +
37+
marker +
38+
safe(context, node.title, {before: marker, after: marker}) +
39+
marker
3940
subexit()
4041
}
4142

lib/handle/heading.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ var phrasing = require('../util/container-phrasing')
66

77
function heading(node, _, context) {
88
var rank = Math.max(Math.min(6, node.depth || 1), 1)
9-
var value
109
var exit
1110
var subexit
11+
var value
1212
var sequence
1313

1414
if (formatHeadingAsSetext(node, context)) {

lib/handle/image-reference.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,27 @@ function imageReference(node, _, context) {
99
var exit = context.enter('imageReference')
1010
var subexit = context.enter('label')
1111
var alt = safe(context, node.alt, {before: '[', after: ']'})
12+
var value = '![' + alt + ']'
1213
var reference
13-
var currentStack
14+
var stack
1415

1516
subexit()
1617
// Hide the fact that we’re in phrasing, because escapes don’t work.
17-
currentStack = context.stack
18+
stack = context.stack
1819
context.stack = []
1920
subexit = context.enter('reference')
2021
reference = safe(context, association(node), {before: '[', after: ']'})
2122
subexit()
22-
context.stack = currentStack
23+
context.stack = stack
2324
exit()
2425

25-
if (type !== 'full' && alt && alt === reference) {
26-
return '![' + alt + ']' + (type === 'shortcut' ? '' : '[]')
26+
if (type === 'full' || !alt || alt !== reference) {
27+
value += '[' + reference + ']'
28+
} else if (type !== 'shortcut') {
29+
value += '[]'
2730
}
2831

29-
return '![' + alt + '][' + reference + ']'
32+
return value
3033
}
3134

3235
function imageReferencePeek() {

lib/handle/image.js

+12-8
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ var safe = require('../util/safe')
77
function image(node, _, context) {
88
var quote = checkQuote(context)
99
var suffix = quote === '"' ? 'Quote' : 'Apostrophe'
10-
var url = node.url || ''
11-
var title = node.title || ''
1210
var exit = context.enter('image')
1311
var subexit = context.enter('label')
1412
var value = '![' + safe(context, node.alt, {before: '[', after: ']'}) + ']('
@@ -17,24 +15,30 @@ function image(node, _, context) {
1715

1816
if (
1917
// If there’s no url but there is a title…
20-
(!url && title) ||
18+
(!node.url && node.title) ||
2119
// Or if there’s markdown whitespace or an eol, enclose.
22-
/[ \t\r\n]/.test(url)
20+
/[ \t\r\n]/.test(node.url)
2321
) {
2422
subexit = context.enter('destinationLiteral')
25-
value += '<' + safe(context, url, {before: '<', after: '>'}) + '>'
23+
value += '<' + safe(context, node.url, {before: '<', after: '>'}) + '>'
2624
} else {
2725
// No whitespace, raw is prettier.
2826
subexit = context.enter('destinationRaw')
29-
value += safe(context, url, {before: '(', after: title ? ' ' : ')'})
27+
value += safe(context, node.url, {
28+
before: '(',
29+
after: node.title ? ' ' : ')'
30+
})
3031
}
3132

3233
subexit()
3334

34-
if (title) {
35+
if (node.title) {
3536
subexit = context.enter('title' + suffix)
3637
value +=
37-
' ' + quote + safe(context, title, {before: quote, after: quote}) + quote
38+
' ' +
39+
quote +
40+
safe(context, node.title, {before: quote, after: quote}) +
41+
quote
3842
subexit()
3943
}
4044

lib/handle/link-reference.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,27 @@ function linkReference(node, _, context) {
1010
var exit = context.enter('linkReference')
1111
var subexit = context.enter('label')
1212
var text = phrasing(node, context, {before: '[', after: ']'})
13+
var value = '[' + text + ']'
1314
var reference
14-
var currentStack
15+
var stack
1516

1617
subexit()
1718
// Hide the fact that we’re in phrasing, because escapes don’t work.
18-
currentStack = context.stack
19+
stack = context.stack
1920
context.stack = []
2021
subexit = context.enter('reference')
2122
reference = safe(context, association(node), {before: '[', after: ']'})
2223
subexit()
23-
context.stack = currentStack
24+
context.stack = stack
2425
exit()
2526

26-
if (type !== 'full' && text && text === reference) {
27-
return '[' + text + ']' + (type === 'shortcut' ? '' : '[]')
27+
if (type === 'full' || !text || text !== reference) {
28+
value += '[' + reference + ']'
29+
} else if (type !== 'shortcut') {
30+
value += '[]'
2831
}
2932

30-
return '[' + text + '][' + reference + ']'
33+
return value
3134
}
3235

3336
function linkReferencePeek() {

lib/handle/link.js

+16-12
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,19 @@ var safe = require('../util/safe')
99
function link(node, _, context) {
1010
var quote = checkQuote(context)
1111
var suffix = quote === '"' ? 'Quote' : 'Apostrophe'
12-
var url = node.url || ''
13-
var title = node.title || ''
1412
var exit
15-
var value
1613
var subexit
17-
var currentStack
14+
var value
15+
var stack
1816

1917
if (formatLinkAsAutolink(node)) {
2018
// Hide the fact that we’re in phrasing, because escapes don’t work.
21-
currentStack = context.stack
19+
stack = context.stack
2220
context.stack = []
2321
exit = context.enter('autolink')
2422
value = '<' + phrasing(node, context, {before: '<', after: '>'}) + '>'
2523
exit()
26-
context.stack = currentStack
24+
context.stack = stack
2725
return value
2826
}
2927

@@ -34,24 +32,30 @@ function link(node, _, context) {
3432

3533
if (
3634
// If there’s no url but there is a title…
37-
(!url && title) ||
35+
(!node.url && node.title) ||
3836
// Or if there’s markdown whitespace or an eol, enclose.
39-
/[ \t\r\n]/.test(url)
37+
/[ \t\r\n]/.test(node.url)
4038
) {
4139
subexit = context.enter('destinationLiteral')
42-
value += '<' + safe(context, url, {before: '<', after: '>'}) + '>'
40+
value += '<' + safe(context, node.url, {before: '<', after: '>'}) + '>'
4341
} else {
4442
// No whitespace, raw is prettier.
4543
subexit = context.enter('destinationRaw')
46-
value += safe(context, url, {before: ' ', after: ' '})
44+
value += safe(context, node.url, {
45+
before: '(',
46+
after: node.title ? ' ' : ')'
47+
})
4748
}
4849

4950
subexit()
5051

51-
if (title) {
52+
if (node.title) {
5253
subexit = context.enter('title' + suffix)
5354
value +=
54-
' ' + quote + safe(context, title, {before: quote, after: quote}) + quote
55+
' ' +
56+
quote +
57+
safe(context, node.title, {before: quote, after: quote}) +
58+
quote
5559
subexit()
5660
}
5761

lib/handle/list-item.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ var indentLines = require('../util/indent-lines')
99
function listItem(node, parent, context) {
1010
var bullet = checkBullet(context)
1111
var listItemIndent = checkListItemIndent(context)
12-
var indentSize
13-
var exit
12+
var size
1413
var value
14+
var exit
1515

1616
if (parent && parent.ordered) {
1717
bullet =
@@ -22,13 +22,13 @@ function listItem(node, parent, context) {
2222
'.'
2323
}
2424

25-
indentSize = bullet.length + 1
25+
size = bullet.length + 1
2626

2727
if (
2828
listItemIndent === 'tab' ||
2929
(listItemIndent === 'mixed' && ((parent && parent.spread) || node.spread))
3030
) {
31-
indentSize = Math.ceil(indentSize / 4) * 4
31+
size = Math.ceil(size / 4) * 4
3232
}
3333

3434
exit = context.enter('listItem')
@@ -39,11 +39,9 @@ function listItem(node, parent, context) {
3939

4040
function map(line, index, blank) {
4141
if (index) {
42-
return (blank ? '' : repeat(' ', indentSize)) + line
42+
return (blank ? '' : repeat(' ', size)) + line
4343
}
4444

45-
return (
46-
(blank ? bullet : bullet + repeat(' ', indentSize - bullet.length)) + line
47-
)
45+
return (blank ? bullet : bullet + repeat(' ', size - bullet.length)) + line
4846
}
4947
}

lib/handle/thematic-break.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ var checkRepeat = require('../util/check-rule-repeat')
55
var checkRule = require('../util/check-rule')
66

77
function thematicBreak(node, parent, context) {
8-
var rule = checkRule(context)
9-
var repetition = checkRepeat(context)
10-
var spaces = context.options.ruleSpaces
11-
var value = repeat(rule + (spaces ? ' ' : ''), repetition)
12-
return spaces ? value.slice(0, -1) : value
8+
var value = repeat(
9+
checkRule(context) + (context.options.ruleSpaces ? ' ' : ''),
10+
checkRepeat(context)
11+
)
12+
13+
return context.options.ruleSpaces ? value.slice(0, -1) : value
1314
}

lib/index.js

+7-10
Original file line numberDiff line numberDiff line change
@@ -53,25 +53,22 @@ function unknown(node) {
5353
}
5454

5555
function configure(settings) {
56-
var unsafe = defaultUnsafePatterns
57-
var join = defaultJoin
58-
var handlers = Object.assign({}, defaultHandlers)
5956
var extensions = [
6057
{unsafe: settings.unsafe, handlers: settings.handlers, join: settings.join}
6158
].concat(settings.extensions || [])
62-
var length = extensions.length
59+
var unsafe = defaultUnsafePatterns
60+
var join = defaultJoin
61+
var handlers = Object.assign({}, defaultHandlers)
6362
var index = -1
64-
var extension
6563

6664
if (settings.tightDefinitions) {
6765
join = [joinDefinition].concat(join)
6866
}
6967

70-
while (++index < length) {
71-
extension = extensions[index]
72-
unsafe = unsafe.concat(extension.unsafe || [])
73-
join = join.concat(extension.join || [])
74-
Object.assign(handlers, extension.handlers || {})
68+
while (++index < extensions.length) {
69+
unsafe = unsafe.concat(extensions[index].unsafe || [])
70+
join = join.concat(extensions[index].join || [])
71+
Object.assign(handlers, extensions[index].handlers || {})
7572
}
7673

7774
return {unsafe: unsafe, join: join, handlers: handlers}

lib/join.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ var formatHeadingAsSetext = require('./util/format-heading-as-setext')
66
function joinDefaults(left, right, parent, context) {
77
if (
88
// Two lists with the same marker.
9-
(left.type === 'list' &&
9+
(right.type === 'list' &&
1010
right.type === left.type &&
1111
Boolean(left.ordered) === Boolean(right.ordered)) ||
1212
// Indented code after list or another indented code.

lib/util/association.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,11 @@ var characterReference = /&(#(\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi
1616
// it has whitespace, casing, and we can ignore most useless character escapes
1717
// and all character references.
1818
function association(node) {
19-
var value = node.label || ''
20-
var identifier = node.identifier
21-
22-
if (value || !identifier) {
23-
return value
19+
if (node.label || !node.identifier) {
20+
return node.label || ''
2421
}
2522

26-
return identifier
23+
return node.identifier
2724
.replace(characterEscape, '$1')
2825
.replace(characterReference, decodeIfPossible)
2926
}

lib/util/check-list-item-indent.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function checkListItemIndent(context) {
44
var style = context.options.listItemIndent || 'tab'
55

66
if (style === 1 || style === '1') {
7-
style = 'one'
7+
return 'one'
88
}
99

1010
if (style !== 'tab' && style !== 'one' && style !== 'mixed') {

0 commit comments

Comments
 (0)