Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/phucbm/os-util
Utility functions for open-source projects.
https://github.com/phucbm/os-util
Last synced: 25 days ago
JSON representation
Utility functions for open-source projects.
- Host: GitHub
- URL: https://github.com/phucbm/os-util
- Owner: phucbm
- License: mit
- Created: 2023-07-07T09:28:34.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-29T03:20:42.000Z (about 1 year ago)
- Last Synced: 2024-09-16T19:08:27.177Z (about 2 months ago)
- Language: JavaScript
- Size: 63.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OS Util
https://www.npmjs.com/package/@phucbm/os-util
## Install
```shell
# Install
npm i @phucbm/os-util
```## Features
### Get options from attribute
```js
import {getOptionsFromAttribute} from "@phucbm/os-util";
```#### 1. Test cases for boolean and numeric values
```html
```
```js
const options = getOptionsFromAttribute({
target: document.querySelector('section'), // required, DOM element that holds the attribute
attributeName: 'data-json', // required, attribute name that holds the value
numericValues: ['testNum'], // optional, the props will be converted into numeric values
defaultOptions: {}, // optional, options from attribute will override these default options,
// or return defaultOptions if options are not found
});
console.log(options); // => {"testNum": 480, "testFalse": false, "testTrue": true};
```#### 2. Empty value
```html
```
```js
const options = getOptionsFromAttribute({
target: document.querySelector('section'),
attributeName: 'data-json',
});
console.log(options); // => {}
```#### 3. Value is just a string
```html
```
```js
const options = getOptionsFromAttribute({
target: document.querySelector('section'),
attributeName: 'data-json',
onIsString: value => {
console.log(value); // => "hello-world"
}
});
console.log(options); // => {}
```### Events Manager
```js
import {EventsManager} from "@phucbm/os-util";
```In your plugin constructor
```js
// init events manager
this.events = new EventsManager(this, {
names: ['onInit'] // register event names
});// fire an event
this.events.fire('onInit', {source}); // the 2nd param is an object that will be passed to the callback
```Create a method to assign late-events
```js
/**
* Assign late-events
*/
function on(eventName, callback){
this.events.add(eventName, callback);
}
```Usage
```js
// add event from init
const instance = Plugin.init({
onInit: data => {
console.log('init', data)
}
});// add via method after init
instance.on('onInit', data => {
console.log('init', data)
});// with or without keyword on before the event name are all acceptable
instance.on('init', data => {
console.log('init', data)
});
```## Deployment
```shell
# Publish package
# 1. Export the new function in index.js
# 2. Update version in package.json
# 3. Run publish
npm publish# Dev
npm run dev
```