-
Notifications
You must be signed in to change notification settings - Fork 4.3k
/
Copy pathutils.js
92 lines (79 loc) · 2.31 KB
/
utils.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
/**
* External dependencies
*/
import fs from 'fs';
import path from 'path';
import { uniq } from 'lodash';
const FIXTURES_DIR = path.join( __dirname, 'blocks' );
function readFixtureFile( fixturesDir, filename ) {
try {
return fs.readFileSync(
path.join( fixturesDir, filename ),
'utf8'
);
} catch ( err ) {
return null;
}
}
function writeFixtureFile( fixturesDir, filename, content ) {
fs.writeFileSync(
path.join( fixturesDir, filename ),
content
);
}
export function blockNameToFixtureBasename( blockName ) {
return blockName.replace( /\//g, '__' );
}
export function getAvailableBlockFixturesBasenames() {
// We expect 4 different types of files for each fixture:
// - fixture.html : original content
// - fixture.parsed.json : parser output
// - fixture.json : blocks structure
// - fixture.serialized.html : re-serialized content
// Get the "base" name for each fixture first.
return uniq(
fs.readdirSync( FIXTURES_DIR )
.filter( ( f ) => /(\.html|\.json)$/.test( f ) )
.map( ( f ) => f.replace( /\..+$/, '' ) )
);
}
export function getBlockFixtureHTML( basename ) {
const filename = `${ basename }.html`;
return {
filename,
file: readFixtureFile( FIXTURES_DIR, filename ),
};
}
export function getBlockFixtureJSON( basename ) {
const filename = `${ basename }.json`;
return {
filename,
file: readFixtureFile( FIXTURES_DIR, filename ),
};
}
export function getBlockFixtureParsedJSON( basename ) {
const filename = `${ basename }.parsed.json`;
return {
filename,
file: readFixtureFile( FIXTURES_DIR, filename ),
};
}
export function getBlockFixtureSerializedHTML( basename ) {
const filename = `${ basename }.serialized.html`;
return {
filename,
file: readFixtureFile( FIXTURES_DIR, filename ),
};
}
export function writeBlockFixtureHTML( basename, fixture ) {
writeFixtureFile( FIXTURES_DIR, `${ basename }.html`, fixture );
}
export function writeBlockFixtureJSON( basename, fixture ) {
writeFixtureFile( FIXTURES_DIR, `${ basename }.json`, fixture );
}
export function writeBlockFixtureParsedJSON( basename, fixture ) {
writeFixtureFile( FIXTURES_DIR, `${ basename }.parsed.json`, fixture );
}
export function writeBlockFixtureSerializedHTML( basename, fixture ) {
writeFixtureFile( FIXTURES_DIR, `${ basename }.serialized.html`, fixture );
}