ezx 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/preprocessor.d.ts +0 -2
- package/dist/preprocessor.d.ts.map +1 -1
- package/dist/preprocessor.js +67 -81
- package/dist/preprocessor.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,13 +21,15 @@ echo "We're still in my-project!"
|
|
|
21
21
|
pwd
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
+
**Note:** The directory context also affects file extraction blocks. Files created after `# set the current directory` will have their paths relative to the original directory, but the command will prepend `cd` to create them in the correct location.
|
|
25
|
+
|
|
24
26
|
### 2. File Extraction
|
|
25
27
|
|
|
26
|
-
Extract code blocks to files using
|
|
28
|
+
Extract code blocks to files using comment syntax. The file directive must be on the first line of the code block, and the file path is always relative to the original working directory (not affected by `# set the current directory`).
|
|
27
29
|
|
|
28
30
|
**TypeScript/JavaScript:**
|
|
29
31
|
```typescript
|
|
30
|
-
// file: package.json
|
|
32
|
+
// file: my-project/package.json
|
|
31
33
|
{
|
|
32
34
|
"name": "my-project",
|
|
33
35
|
"version": "1.0.0"
|
|
@@ -36,17 +38,33 @@ Extract code blocks to files using language-specific comment syntax:
|
|
|
36
38
|
|
|
37
39
|
**Bash/Shell:**
|
|
38
40
|
```bash
|
|
39
|
-
# file:
|
|
41
|
+
# file: my-project/.npmrc
|
|
40
42
|
shared-workspace-lockfile=false
|
|
41
43
|
```
|
|
42
44
|
|
|
43
45
|
**Markdown:**
|
|
44
46
|
```markdown
|
|
45
|
-
<!-- file: README.md -->
|
|
47
|
+
<!-- file: my-project/README.md -->
|
|
46
48
|
# My Project
|
|
47
49
|
```
|
|
48
50
|
|
|
49
|
-
|
|
51
|
+
**Any language:** The file directive works with any language, including unknown languages, by trying common comment patterns (`//`, `#`, `<!--`, `--`, `;`).
|
|
52
|
+
|
|
53
|
+
File extraction blocks are transformed to bash heredoc commands that execute in order with the rest of the markdown. If a directory context is active, the heredoc command will prepend `cd`:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Without directory context:
|
|
57
|
+
cat > 'path/to/file' << 'EZXEOF'
|
|
58
|
+
content here
|
|
59
|
+
EZXEOF
|
|
60
|
+
|
|
61
|
+
# With directory context (after "# set the current directory my-project"):
|
|
62
|
+
cd my-project && cat > 'path/to/file' << 'EZXEOF'
|
|
63
|
+
content here
|
|
64
|
+
EZXEOF
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This means if a parent directory doesn't exist, the command will fail (as expected). You should create directories first using `mkdir -p` in a bash block.
|
|
50
68
|
|
|
51
69
|
## Installation
|
|
52
70
|
|
|
@@ -98,10 +116,9 @@ import { preprocessMarkdown, preprocessFile } from 'ezx'
|
|
|
98
116
|
// Preprocess markdown content
|
|
99
117
|
const { preprocessedMarkdown, extractedFiles } = preprocessMarkdown(markdown)
|
|
100
118
|
|
|
101
|
-
// Preprocess markdown file
|
|
102
|
-
const result = preprocessFile('./script.md', {
|
|
103
|
-
|
|
104
|
-
cwd: process.cwd()
|
|
119
|
+
// Preprocess markdown file
|
|
120
|
+
const result = preprocessFile('./script.md', {
|
|
121
|
+
cwd: process.cwd()
|
|
105
122
|
})
|
|
106
123
|
```
|
|
107
124
|
|
|
@@ -120,7 +137,7 @@ npm init -y
|
|
|
120
137
|
\`\`\`
|
|
121
138
|
|
|
122
139
|
\`\`\`typescript
|
|
123
|
-
// file: package.json
|
|
140
|
+
// file: my-app/package.json
|
|
124
141
|
{
|
|
125
142
|
"name": "my-app",
|
|
126
143
|
"version": "1.0.0",
|
|
@@ -131,7 +148,7 @@ npm init -y
|
|
|
131
148
|
\`\`\`
|
|
132
149
|
|
|
133
150
|
\`\`\`typescript
|
|
134
|
-
// file: index.ts
|
|
151
|
+
// file: my-app/index.ts
|
|
135
152
|
console.log('Hello from ezx!')
|
|
136
153
|
\`\`\`
|
|
137
154
|
|
|
@@ -180,12 +197,11 @@ Preprocess markdown content.
|
|
|
180
197
|
**Parameters:**
|
|
181
198
|
- `input` (string) - Markdown content
|
|
182
199
|
- `options` (object)
|
|
183
|
-
- `
|
|
184
|
-
- `cwd` (string) - Current working directory
|
|
200
|
+
- `cwd` (string) - Current working directory (default: `process.cwd()`)
|
|
185
201
|
|
|
186
202
|
**Returns:** PreprocessResult
|
|
187
|
-
- `preprocessedMarkdown` (string) - The preprocessed markdown
|
|
188
|
-
- `extractedFiles` (FileExtraction[]) - Array of extracted
|
|
203
|
+
- `preprocessedMarkdown` (string) - The preprocessed markdown with file directive blocks transformed to bash heredocs
|
|
204
|
+
- `extractedFiles` (FileExtraction[]) - Array of extracted file information (for informational purposes only)
|
|
189
205
|
|
|
190
206
|
### `preprocessFile(filePath, options)`
|
|
191
207
|
|
|
@@ -209,4 +225,4 @@ node dist/cli.js test-preprocessor.md --verbose
|
|
|
209
225
|
|
|
210
226
|
## License
|
|
211
227
|
|
|
212
|
-
|
|
228
|
+
MIT
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D5G;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvG;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjH;AAGD,cAAc,IAAI,CAAC;AAGnB,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -47,10 +47,8 @@ export async function runMarkdown(markdown, options = {}) {
|
|
|
47
47
|
markdownContent = markdown.toString();
|
|
48
48
|
}
|
|
49
49
|
// Preprocess markdown with ezx enhancements
|
|
50
|
-
|
|
51
|
-
const { preprocessedMarkdown, extractedFiles } = preprocessMarkdown(markdownContent, {
|
|
50
|
+
const { preprocessedMarkdown } = preprocessMarkdown(markdownContent, {
|
|
52
51
|
cwd: options.cwd || process.cwd(),
|
|
53
|
-
outputFiles: true,
|
|
54
52
|
});
|
|
55
53
|
// Transform markdown to JavaScript
|
|
56
54
|
let jsCode = transformMarkdown(preprocessedMarkdown);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAC,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,EAAgB,aAAa,EAAC,MAAM,UAAU,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAErD,iEAAiE;AACjE,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAY3B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAyB,EAAE,UAA8B,EAAE;IAC5F,qBAAqB;IACrB,MAAM,UAAU,GAAG;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,WAAW,EAAE,CAAC,CAAC,WAAW;KAC1B,CAAC;IAEF,IAAI,CAAC;QACJ,gBAAgB;QAChB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/D,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACzD,IAAI,OAAO,CAAC,KAAK;YAAE,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM;YAAE,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9C,IAAI,OAAO,CAAC,OAAO;YAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjD,IAAI,OAAO,CAAC,GAAG;YAAE,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACrC,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;YAAE,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAE3E,4CAA4C;QAC5C,IAAI,eAAuB,CAAC;QAC5B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACrG,eAAe,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,eAAe,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACvC,CAAC;QAED,4CAA4C;QAC5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/preprocessor.d.ts
CHANGED
|
@@ -17,14 +17,12 @@ export interface PreprocessResult {
|
|
|
17
17
|
* Preprocess markdown file
|
|
18
18
|
*/
|
|
19
19
|
export declare function preprocessMarkdown(input: string, options?: {
|
|
20
|
-
outputFiles?: boolean;
|
|
21
20
|
cwd?: string;
|
|
22
21
|
}): PreprocessResult;
|
|
23
22
|
/**
|
|
24
23
|
* Read and preprocess a markdown file
|
|
25
24
|
*/
|
|
26
25
|
export declare function preprocessFile(filePath: string, options?: {
|
|
27
|
-
outputFiles?: boolean;
|
|
28
26
|
cwd?: string;
|
|
29
27
|
}): PreprocessResult;
|
|
30
28
|
//# sourceMappingURL=preprocessor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,cAAc,EAAE,CAAC;CACjC;AA2HD;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAM,GAC1B,gBAAgB,CAiKlB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAM,GAC1B,gBAAgB,CAGlB"}
|
package/dist/preprocessor.js
CHANGED
|
@@ -1,51 +1,4 @@
|
|
|
1
|
-
import { readFileSync
|
|
2
|
-
import { resolve, dirname } from 'path';
|
|
3
|
-
/**
|
|
4
|
-
* Comment tokens for different languages
|
|
5
|
-
*/
|
|
6
|
-
const COMMENT_TOKENS = {
|
|
7
|
-
// Languages with // comment
|
|
8
|
-
typescript: '//',
|
|
9
|
-
javascript: '//',
|
|
10
|
-
js: '//',
|
|
11
|
-
ts: '//',
|
|
12
|
-
cpp: '//',
|
|
13
|
-
c: '//',
|
|
14
|
-
csharp: '//',
|
|
15
|
-
go: '//',
|
|
16
|
-
rust: '//',
|
|
17
|
-
java: '//',
|
|
18
|
-
kotlin: '//',
|
|
19
|
-
swift: '//',
|
|
20
|
-
php: '//',
|
|
21
|
-
// Languages with # comment
|
|
22
|
-
bash: '#',
|
|
23
|
-
sh: '#',
|
|
24
|
-
shell: '#',
|
|
25
|
-
python: '#',
|
|
26
|
-
rb: '#',
|
|
27
|
-
ruby: '#',
|
|
28
|
-
perl: '#',
|
|
29
|
-
r: '#',
|
|
30
|
-
// Languages with -- comment
|
|
31
|
-
sql: '--',
|
|
32
|
-
lua: '--',
|
|
33
|
-
haskell: '--',
|
|
34
|
-
// Languages with ; comment
|
|
35
|
-
asm: ';',
|
|
36
|
-
// Languages with <!-- comment -->
|
|
37
|
-
html: '<!--',
|
|
38
|
-
xml: '<!--',
|
|
39
|
-
markdown: '<!--',
|
|
40
|
-
md: '<!--',
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Get the comment token for a language
|
|
44
|
-
*/
|
|
45
|
-
function getCommentToken(language) {
|
|
46
|
-
const lowerLang = language.toLowerCase().trim();
|
|
47
|
-
return COMMENT_TOKENS[lowerLang] || null;
|
|
48
|
-
}
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
49
2
|
/**
|
|
50
3
|
* Parse markdown and extract all code blocks with their line numbers
|
|
51
4
|
*/
|
|
@@ -123,52 +76,66 @@ function isFileExtractionComment(line, commentToken) {
|
|
|
123
76
|
function escapeRegExp(string) {
|
|
124
77
|
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
125
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Try to extract file path from a line using multiple comment patterns
|
|
81
|
+
*/
|
|
82
|
+
function tryExtractFilePath(line) {
|
|
83
|
+
// Common comment patterns to try, in order of preference
|
|
84
|
+
const commentPatterns = [
|
|
85
|
+
'//', // Most common
|
|
86
|
+
'#', // Shell/Python
|
|
87
|
+
'<!--', // HTML/XML/Markdown
|
|
88
|
+
'--', // SQL/Lua
|
|
89
|
+
';', // Assembly
|
|
90
|
+
];
|
|
91
|
+
const trimmed = line.trim();
|
|
92
|
+
for (const pattern of commentPatterns) {
|
|
93
|
+
const filePath = isFileExtractionComment(trimmed, pattern);
|
|
94
|
+
if (filePath) {
|
|
95
|
+
return filePath;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
126
100
|
/**
|
|
127
101
|
* Preprocess markdown file
|
|
128
102
|
*/
|
|
129
103
|
export function preprocessMarkdown(input, options = {}) {
|
|
130
|
-
const {
|
|
104
|
+
const { cwd = process.cwd() } = options;
|
|
131
105
|
const lines = input.split('\n');
|
|
132
106
|
const codeBlocks = parseCodeBlocks(input);
|
|
133
107
|
const extractedFiles = [];
|
|
134
108
|
// Track the current directory context
|
|
135
109
|
let currentDirectory = null;
|
|
136
|
-
// Set of block indices to remove completely (for file extraction)
|
|
137
|
-
const blocksToRemove = new Set();
|
|
138
110
|
// Map of block indices to transformations (prepend cd)
|
|
139
111
|
const blocksToTransform = new Map();
|
|
112
|
+
// Map of block indices to transform to heredoc
|
|
113
|
+
const blocksToHeredoc = new Map();
|
|
140
114
|
// Process each code block
|
|
141
115
|
for (let i = 0; i < codeBlocks.length; i++) {
|
|
142
116
|
const block = codeBlocks[i];
|
|
143
117
|
const blockLines = block.content.split('\n');
|
|
144
118
|
const isBash = block.language === 'bash' || block.language === 'sh' || block.language === 'shell';
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
// Create directory if it doesn't exist
|
|
166
|
-
mkdirSync(dir, { recursive: true });
|
|
167
|
-
writeFileSync(filePath, fileContent, 'utf-8');
|
|
168
|
-
console.log(`Extracted file: ${filePath}`);
|
|
169
|
-
}
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
119
|
+
// Check if this is a file extraction block by trying multiple comment patterns
|
|
120
|
+
const firstLine = blockLines[0] || '';
|
|
121
|
+
const filePath = tryExtractFilePath(firstLine);
|
|
122
|
+
if (filePath) {
|
|
123
|
+
// This is a file extraction block - transform to heredoc
|
|
124
|
+
// Remove the comment line from the file content
|
|
125
|
+
const fileContent = blockLines.slice(1).join('\n').trim();
|
|
126
|
+
extractedFiles.push({
|
|
127
|
+
filePath: filePath, // Keep relative path for heredoc command
|
|
128
|
+
content: fileContent,
|
|
129
|
+
language: block.language,
|
|
130
|
+
});
|
|
131
|
+
// Mark this block for transformation to heredoc
|
|
132
|
+
// If we have a current directory, prepend it to the heredoc command
|
|
133
|
+
blocksToHeredoc.set(i, {
|
|
134
|
+
filePath: filePath,
|
|
135
|
+
content: fileContent,
|
|
136
|
+
directoryPrefix: currentDirectory || undefined,
|
|
137
|
+
});
|
|
138
|
+
continue;
|
|
172
139
|
}
|
|
173
140
|
// Check for directory set command in bash blocks
|
|
174
141
|
if (isBash) {
|
|
@@ -223,9 +190,28 @@ export function preprocessMarkdown(input, options = {}) {
|
|
|
223
190
|
const blockIndex = codeBlocks.findIndex((b) => b.startLine === i);
|
|
224
191
|
if (blockIndex !== -1) {
|
|
225
192
|
const block = codeBlocks[blockIndex];
|
|
226
|
-
// Check if this block should be
|
|
227
|
-
if (
|
|
228
|
-
|
|
193
|
+
// Check if this block should be transformed to heredoc
|
|
194
|
+
if (blocksToHeredoc.has(blockIndex)) {
|
|
195
|
+
const heredoc = blocksToHeredoc.get(blockIndex);
|
|
196
|
+
// Transform to bash heredoc block
|
|
197
|
+
preprocessedLines.push('```bash');
|
|
198
|
+
// If we have a directory prefix, prepend cd && to the cat command
|
|
199
|
+
// Also strip the directory prefix from the file path if it matches
|
|
200
|
+
let catPath = heredoc.filePath;
|
|
201
|
+
if (heredoc.directoryPrefix) {
|
|
202
|
+
// Remove the directory prefix from the file path if it starts with it
|
|
203
|
+
if (catPath.startsWith(heredoc.directoryPrefix + '/')) {
|
|
204
|
+
catPath = catPath.slice(heredoc.directoryPrefix.length + 1);
|
|
205
|
+
}
|
|
206
|
+
preprocessedLines.push(`cd ${heredoc.directoryPrefix} && cat > '${catPath}' << 'EZXEOF'`);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
preprocessedLines.push(`cat > '${catPath}' << 'EZXEOF'`);
|
|
210
|
+
}
|
|
211
|
+
preprocessedLines.push(heredoc.content);
|
|
212
|
+
preprocessedLines.push('EZXEOF');
|
|
213
|
+
preprocessedLines.push('```');
|
|
214
|
+
// Skip to the closing ```
|
|
229
215
|
i = block.endLine;
|
|
230
216
|
continue;
|
|
231
217
|
}
|
package/dist/preprocessor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../src/preprocessor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED