An open API service indexing awesome lists of open source software.

https://github.com/ioncakephper/file-easy

Working with the Node.js file system can be cumbersome. File-easy simplifies common file operations with a clean and easy-to-use API, making file management a breeze.
https://github.com/ioncakephper/file-easy

file-default-extension file-helpers file-manipulation file-utils file-write filename-slug save-files

Last synced: 16 days ago
JSON representation

Working with the Node.js file system can be cumbersome. File-easy simplifies common file operations with a clean and easy-to-use API, making file management a breeze.

Awesome Lists containing this project

README

        

# file-easy

File utilities to speed up creating document files, setting default extension, and getting a `slug` from a string. `file-easy` provides a simple, lightweight, and easy-to-use set of functions for common file-related tasks. If you're tired of writing boilerplate code for handling filenames, creating text files, or generating URL-friendly slugs, `file-easy` simplifies these operations so you can focus on your core application logic. It's particularly well-suited for projects that frequently handle text files or need to sanitize filenames for web use. No more complex regex or manual string manipulation – just clean, efficient file handling.

[![npm](https://img.shields.io/npm/v/file-easy.svg)](https://www.npmjs.com/package/file-easy)
[![npm](https://img.shields.io/npm/dm/file-easy.svg)](https://www.npmjs.com/package/file-easy)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
[![Build Status](https://github.com/ioncakephper/file-easy/actions/workflows/node.js.yml/badge.svg)](https://github.com/ioncakephper/file-easy/actions/workflows/node.js.yml)
[![njsscan sarif](https://github.com/ioncakephper/file-easy/actions/workflows/njsscan.yml/badge.svg)](https://github.com/ioncakephper/file-easy/actions/workflows/njsscan.yml)
[![Node.js CI](https://github.com/ioncakephper/file-easy/actions/workflows/node.js.yml/badge.svg)](https://github.com/ioncakephper/file-easy/actions/workflows/node.js.yml)
[![CodeQL Advanced](https://github.com/ioncakephper/file-easy/actions/workflows/codeql.yml/badge.svg)](https://github.com/ioncakephper/file-easy/actions/workflows/codeql.yml)
[![DeepScan grade](https://deepscan.io/api/teams/15501/projects/18710/branches/463828/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=15501&pid=18710&bid=463828)

## Installation

```bash
npm i file-easy
```

## Usage

### `.slug()`

```javascript
const fileEasy = require('file-easy')

// getting a slug
let fn = 'source Filename';
let slug = fileEasy.slug(fn)
console.log('Slug:', slug)
```

Will show:

```bash
Slug: source-filename
```

```javascript
const fileEasy = require('file-easy')

let names = [
'Simple_File$Goes%Here',
'%%Welcome** Buddy%&^#$%'
];
names.forEach((name) => {
console.log('Source: "', name, '" is:', fileEasy.slug(name))
})
```

Will show:

```bash
Source: " Simple_File$Goes%Here " is: " simple-file-goes-here
Source: " %%Welcome** Buddy%&^#$% " is: " welcome-buddy
```

### `.setDefaultExtension()`

```javascript
const fileEasy = require('file-easy')

// f1 is filename.js (no extension in original, apply extension)
let f1 = fileEasy.setDefaultExtension('filename', '.js)

// f2 is filename.js (extension already exists)
let f2 = fileEasy.setDefaultExtension('filename.js', '.json')

// f3 is filename. (extension starts with . in original)
let f3 = fileEasy.setDefaultExtension('filename.', '.js')
```

### `.saveDocument()`

```javascript
const fileEasy = require('file-easy')

let filename = './docs/sample.txt'
let content = 'String to go in'

/**
* Creates the `sample.txt` file in `./docs` folder
* If path does not exist, it will create it (e.g. `./docs`)
* The file is saved as a utf-8 format (standard format)
*/
fileEasy.saveDocument(filename, content)
```

## Functions


saveDocument(filename, content)


Save content in a file using utf8 format.




setDefaultExtension(filename, extension)string


Append specified extension if needed.




slug(s)string


Convert a string into an identifier.



## saveDocument(filename, content)
Save content in a file using utf8 format.

**Kind**: global function
**Throws**:

- Error If input is invalid or if there was an error during the save process.

| Param | Type | Description |
| --- | --- | --- |
| filename | string | The filename to create. It can also include a path ending with the filename. Path will be created if not exists. |
| content | string | The content to place in the file. |

## setDefaultExtension(filename, extension) ⇒ string
Append specified extension if needed.

**Kind**: global function
**Returns**: string - filename with either existing or specified extension
**Throws**:

- TypeError If filename or extension is not a string.
- Error If extension is empty or doesn't start with a dot.

| Param | Type | Description |
| --- | --- | --- |
| filename | string | The filename to check for an existing extension. |
| extension | string | The extension to append if filename has no extension. It should start with a dot (e.g. `.txt`) |

## slug(s) ⇒ string
Convert a string into an identifier.

**Kind**: global function
**Returns**: string - The identifier string.

The following operations are performed on the string:
1. Trim and convert to lower case.
2. Remove diacritics (transliterate or remove non-ASCII characters).
3. Replace spaces and special characters with hyphens, allowing underscores.
4. Replace multiple hyphens with a single hyphen.
5. Remove leading and trailing hyphens.

| Param | Type | Description |
| --- | --- | --- |
| s | string | The string to convert. |

## Author

[Ion Gireada](https://github.com/ioncakephper) - shytiger[at]yahoo.com

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.