Skip to content

Commit

Permalink
Implemented functionality
Browse files Browse the repository at this point in the history
Signed-off-by: Jaid <[email protected]>
  • Loading branch information
Jaid committed Feb 16, 2019
1 parent b834f51 commit 4661164
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
38 changes: 19 additions & 19 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
/** @module prevent-start */

import {isEqual, takeRight, slice} from "lodash"
import {isEqual, take, slice} from "lodash"

/**
* Prevents a string or an array from having a specified end
* Prevents a string or an array from having a specified start
* @example
* import prevendEnd from "prevent-start"
* prevendEnd("abcd", "cd")
* // "ab"
* import preventStart from "prevent-start"
* preventStart("abcd", "ab")
* // "cd"
* @example
* import prevendEnd from "prevent-start"
* prevendEnd(["ab", "c" "d"], ["c", "d"])
* // ["ab"]
* import preventStart from "prevent-start"
* preventStart(["ab", "c" "d"], "ab")
* // ["c", "d"]
* @function
* @param {string|array} value String or array that should not end with specified value
* @param {string|array} badEnd The unwanted end value
* @returns {*} A generated object based on the array input
* @param {string|array} value String or array that should not start with specified value
* @param {string|array} badStart The unwanted start value
* @returns {*} Cleaned value
*/
export default (value, badEnd) => {
export default (value, badStart) => {
if (typeof value === "string") {
if (value.endsWith(badEnd)) {
return value.substr(0, value.length - badEnd.length)
if (value.startsWith(badStart)) {
return value.substr(badStart.length)
}
return value
}
if (Array.isArray(value, badEnd)) {
if (!Array.isArray(badEnd)) {
badEnd = [badEnd]
if (Array.isArray(value, badStart)) {
if (!Array.isArray(badStart)) {
badStart = [badStart]
}
if (isEqual(takeRight(value, badEnd.length), badEnd)) {
return slice(value, 0, value.length - badEnd.length)
if (isEqual(take(value, badStart.length), badStart)) {
return slice(value, badStart.length)
}
return value
}
Expand Down
8 changes: 4 additions & 4 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ const indexModule = (process.env.MAIN ? path.resolve(__dirname, "..", process.en
const {default: preventStart} = require(indexModule)

it("should run run for string", () => {
const result = preventStart("abcd", "cd")
expect(result).toEqual("ab")
const result = preventStart("abcd", "ab")
expect(result).toEqual("cd")
})

it("should run run for arrays", () => {
const result = preventStart(["a", "b", "c", "d"], ["c", "d"])
expect(result).toEqual(["a", "b"])
const result = preventStart(["a", "b", "c", "d"], ["a", "b"])
expect(result).toEqual(["c", "d"])
})

0 comments on commit 4661164

Please sign in to comment.