-
Notifications
You must be signed in to change notification settings - Fork 406
/
readDocumentation.js
146 lines (132 loc) · 4.39 KB
/
readDocumentation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
'use strict';
const _ = require('lodash');
const path = require('path');
const fs = require('fs-extra');
const ch = require('./changes_hunter');
const logger = require('./log');
const mp = require('./markdown_parser');
const changes_hunter = new ch();
const markdown_parser = new mp();
const FILE_EXTENSION = '.md';
module.exports = function(pattern, patternlab) {
try {
const markdownFileName = path.resolve(
patternlab.config.paths.source.patterns,
pattern.subdir,
pattern.fileName + FILE_EXTENSION
);
changes_hunter.checkLastModified(pattern, markdownFileName);
const markdownFileContents = fs.readFileSync(markdownFileName, 'utf8');
const markdownObject = markdown_parser.parse(markdownFileContents);
if (!_.isEmpty(markdownObject)) {
//set keys and markdown itself
pattern.patternDescExists = true;
pattern.patternDesc = markdownObject.markdown;
//Add all markdown to the pattern, including frontmatter
pattern.allMarkdown = markdownObject;
//consider looping through all keys eventually. would need to blacklist some properties and whitelist others
if (markdownObject.state) {
pattern.patternState = markdownObject.state;
}
if (markdownObject.order) {
pattern.order = markdownObject.order;
}
if (markdownObject.hidden) {
pattern.hidden = markdownObject.hidden;
}
if (markdownObject.excludeFromStyleguide) {
pattern.excludeFromStyleguide = markdownObject.excludeFromStyleguide;
}
if (markdownObject.tags) {
pattern.tags = markdownObject.tags;
}
if (markdownObject.title) {
pattern.patternName = markdownObject.title;
}
if (markdownObject.links) {
pattern.links = markdownObject.links;
}
if (
!markdownObject.hasOwnProperty('deeplyNested') ||
(markdownObject.hasOwnProperty('deeplyNested') &&
!markdownObject.deeplyNested)
) {
// Reset to pattern without own pattern-directory
pattern.promoteFromFlatPatternToDirectory(patternlab);
}
} else {
logger.warning(`error processing markdown for ${pattern.patternPartial}`);
}
logger.debug(
`found pattern-specific markdown for ${pattern.patternPartial}`
);
} catch (err) {
// do nothing when file not found
if (err.code !== 'ENOENT') {
logger.warning(
`'there was an error setting pattern keys after markdown parsing of the companion file for pattern ${pattern.patternPartial}`
);
logger.warning(err);
}
}
// Read Documentation for Pattern-Group
// Use this approach, since pattern lab is a pattern driven software
try {
const markdownFileNameGroup = path.resolve(
patternlab.config.paths.source.patterns,
pattern.patternType,
pattern.patternGroup + FILE_EXTENSION
);
const markdownFileContentsGroup = fs.readFileSync(
markdownFileNameGroup,
'utf8'
);
const markdownObjectGroup = markdown_parser.parse(
markdownFileContentsGroup
);
if (!_.isEmpty(markdownObjectGroup)) {
pattern.patternGroupData = markdownObjectGroup;
}
} catch (err) {
// do nothing when file not found
if (err.code !== 'ENOENT') {
logger.warning(
`'there was an error setting pattern group data after markdown parsing for ${path.join(
pattern.patternType,
pattern.patternGroup + FILE_EXTENSION
)}`
);
logger.warning(err);
}
}
// Read Documentation for Pattern-Subgroup
try {
const markdownFileNameSubGroup = path.resolve(
patternlab.config.paths.source.patterns,
pattern.patternType,
pattern.patternSubType,
pattern.patternSubGroup + FILE_EXTENSION
);
const markdownFileContentsSubGroup = fs.readFileSync(
markdownFileNameSubGroup,
'utf8'
);
const markdownObjectSubGroup = markdown_parser.parse(
markdownFileContentsSubGroup
);
if (!_.isEmpty(markdownObjectSubGroup)) {
pattern.patternSubGroupData = markdownObjectSubGroup;
}
} catch (err) {
// do nothing when file not found
if (err.code !== 'ENOENT') {
logger.warning(
`'there was an error setting pattern sub group data after markdown parsing for ${path.join(
pattern.patternSubType,
pattern.patternSubGroup + FILE_EXTENSION
)}`
);
logger.warning(err);
}
}
};