https://github.com/kolbasa/r-line
Simple node script for quickly modifying text files.
https://github.com/kolbasa/r-line
dryrun line preview refactoring replace text textfile
Last synced: 3 months ago
JSON representation
Simple node script for quickly modifying text files.
- Host: GitHub
- URL: https://github.com/kolbasa/r-line
- Owner: kolbasa
- License: mit
- Created: 2023-07-21T12:02:28.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-09-03T09:11:57.000Z (almost 2 years ago)
- Last Synced: 2025-03-02T23:15:29.259Z (3 months ago)
- Topics: dryrun, line, preview, refactoring, replace, text, textfile
- Language: JavaScript
- Homepage:
- Size: 94.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## r-line
This node script is designed to allow quick and easy modification of text files.
For this purpose, the script offers a simple preview mode for the changes before they are applied.It has no dependencies and can be integrated directly into your project even without npm.
### Installation
```bash
npm install r-line
```Alternatively, simply use the script from `lib/r-line.js` as standalone.
### Sample usage
```node
import rl from 'r-line';rl.replaceLine('lib/r-line.js', (line) => {
if (line.includes('function preview(')) {
return line.replace('preview', 'foo'); // return string to change a line
}if (line.includes('const stringUtils')) {
return false; // return "false" to delete a line
}}, {dryRun: true});
```This leads to the following output:
```
[INFO] Preview: 'lib/r-line.js'176 ┌ function preview(originalLines, changedLines, options) {
C └▷ function foo(originalLines, changedLines, options) {
337 D ┤ const stringUtils = {```
If you remove `dryRun: true`, the changes will be applied.
### Preview options
You can customise the preview with the following optional parameters:
```node
rl.replaceLine('your/file.js', (line) => {
//
}, {
previewOptions: {
// Visualises whitespaces and tabs.
showSpaces: true / false, // default := false// Previews the complete file content, not just the changed lines.
showUnchangedLines: true / false, // default := false// Hides the original content of the changed lines.
hideOriginalLines: true / false, // default := false// By default unnecessary indentation is removed.
// However, the behavior can be turned off.
keepOriginalIndentation: true / false // default := false
}
});
```### Line context
The callback function provides a `context` object as the second parameter.
This contains the line number and previous or following lines.```node
rl.replaceLine('your/file.js', (line, context) => {
context.lineNumber; // numbercontext.next.line; // String
context.next.lines; // string[]context.previous.line; // String
context.previous.lines; // string[]
});
```### Listing files
If you are editing several files at once, then there is a helper function for this called `listFiles`.
```node
rl.listFiles('lib', (file) => rl.replaceLine(file, (line) => {
//
}));
```