4.1.1 • Published 4 years ago
ssv v4.1.1
ssv
- Opensource JavaScript for space separated values
- Uses simple methods you can explore online
- Coded universally for websites or Node.js
- Compresses
<600B - Fully tested
download
<script src="ssv.js"></script>package
npm install ssvconst ssv = require("ssv")methods
ssv.allssv.andssv.anyssv.atssv.blankssv.countssv.editssv.gumssv.jamssv.notssv.orssv.sayssv.splitssv.statessv.xorssv.yolo
all
Test if SSV contains all search values
ssv.all(SSV="", search="")ssv.all("mark tom travis", "scott") // false
ssv.all("mark tom travis", "mark tom") // true
ssv.all("mark tom travis", "mark scott") // falseand
- Get unique values present both in
leftandright - Ideal for intersecting
ssv.and(left="", right="")ssv.and("", "mark") // ""
ssv.and("mark matt travis", "tom scott") // ""
ssv.and("mark tom tom", "mark tom travis") // "mark tom"let many = ["mark tom", "mark travis", "mark matt"]
many.reduce(ssv.and) // "mark"any
Test if SSV contains any search values
ssv.any(SSV="", search="")ssv.any("mark tom travis", "matt") // false
ssv.any("mark tom travis", "mark") // true
ssv.any("mark tom travis", "mark scott") // true
ssv.any("mark tom travis", "mark travis") // trueat
Get the value at index
ssv.at(SSV="", index)ssv.at("mark tom travis", 0) // "mark"
ssv.at("mark tom travis", 1) // "tom"
ssv.at("mark tom travis", -1) // "travis"
ssv.at("mark tom travis", -2) // "tom"
ssv.at("mark tom travis", 5) // ""blank
Test if SSV is blank
ssv.blank(SSV="")ssv.blank("travis") // false
ssv.blank(" ") // true
ssv.blank("") // true
ssv.blank(0) // false
ssv.blank() // truecount
Count SSV values
ssv.count(SSV="")ssv.count("matt matt matt") // 3
ssv.count("mark tom ") // 2edit
- Edit an SSV string via an object or string
- Optimal for batch editing CSS classes
- Keys for falsey values are removed
- Keys for truthy values are added
- Removals process before adds
- Result is compact and unique
- Like
ssv.orifbossis string ssv.stateusesssv.edit
ssv.edit(SSV="", boss={})ssv.edit("mark tom travis", {
"matt": true,
"tom scott": false
}) // "mark travis matt"
ssv.edit("mark", {
"mark travis": true,
"travis": false
}) // "mark travis"ssv.edit("mark tom scott", Object.assign(
{ scott: false },
{ travis: true }
)) // "mark tom travis"let bosses = [/* objects or strings */]
bosses.reduce(ssv.edit, "") // forward
bosses.reduceRight(ssv.edit, "") // backwardgum
Concatenate with compact space
ssv.gum(left="", right="")ssv.gum("mark tom", "scott travis") // "mark tom scott travis"
ssv.gum("mark tom", "tom travis") // "mark tom tom travis"let many = ["tom tom", null, "travis travis", ""]
many.reduce(ssv.gum) // "tom tom travis travis"jam
Compact excess space
ssv.jam(SSV)ssv.jam(" mark travis matt ") // "mark travis matt"
ssv.jam(" matt ") // "matt"
ssv.jam(" 0 182 ") // "0 182"
ssv.jam(-182) // "-182"
ssv.jam(182) // "182"
ssv.jam(" ") // ""
ssv.jam(0) // "0"
ssv.jam() // ""not
- Get values in
leftthat are not inright - Ideal for removing values or diffing
ssv.not(left="", right="")ssv.not("mark tom travis", "tom") // "mark travis"
ssv.not("mark tom tom", "mark matt") // "tom tom"
ssv.not("matt matt matt", "") // "matt matt matt"
ssv.not("mark mark", "tom tom") // "mark mark"
ssv.not("mark tom tom tom", "tom") // "mark"let many = ["mark tom", "mark travis", "mark matt"]
many.reduce(ssv.not) // "tom"or
- Get unique values found in
leftorrightor both - Ideal for adding values or unioning
ssv.or(left="", right="")ssv.or("mark tom ", "travis tom") // "mark tom travis"
ssv.or("mark tom tom", "travis tom") // "mark tom travis"
ssv.or("matt mark", "matt") // "matt mark"let many = ["mark tom", "mark travis", "mark matt"]
many.reduce(ssv.or) // "mark tom travis matt"say
Simply stringify unknown
ssv.say(unknown="")ssv.say(undefined) // ""
ssv.say(null) // ""
ssv.say(0) // "0"
ssv.say(NaN) // "NaN"
ssv.say(182) // "182"
ssv.say("tom") // "tom"
ssv.say(true) // "true"
ssv.say(false) // "false"
ssv.say(new Number(182), "182")
ssv.say(new String("tom"), "tom")
ssv.say(new Boolean(true), "true")- Used internally when expecting strings
- Not intended for arrays or plain objects
- Join arrays instead like
[].join(" ") - Plain objects may use
ssv.editorssv.state
split
Split SSV into dense array
ssv.split(SSV)ssv.split("mark tom travis") // ["mark", "tom", "travis"]
ssv.split(" mark tom ") // ["mark", "tom"]
ssv.split("0 0 182 ") // ["0", "0", "182"]
ssv.split(0) // ["0"]
ssv.split(" ") // []
ssv.split("") // []
ssv.split() // []state
- Get unique compact SSV string from state object or string
- Shorthand for
ssv.edit("", state) - Like
ssv.yolo(state)if string - Optimal for conditional CSS classes
ssv.state(state={})ssv.state("mark tom ") // "mark tom"
ssv.state({
"mark travis": true,
"matt": true,
"tom scott": false
}) // "mark travis matt"
ssv.state({
"mark": true,
"mark travis": true,
"travis": false
}) // "mark mark travis"let states = [/* objects or strings */]
ssv.yolo(states.map(ssv.state).join(" "))xor
- Get unique values found in either
leftorrightbut not both - Ideal for toggling values
ssv.xor(left="", right="")ssv.xor("", "mark mark") // "mark"
ssv.xor("mark tom", "mark") // "tom"
ssv.xor("mark tom", "travis") // "mark tom travis"
ssv.xor("mark tom", "travis tom") // "mark travis"
ssv.xor("mark tom travis", "tom matt") // "mark travis matt"
ssv.xor("mark tom tom", "mark mark") // "tom"
ssv.xor("mark mark", "tom tom") // "mark tom"let many = ["mark tom", "mark travis", "mark matt"]
many.reduce(ssv.xor) // "tom travis mark matt"
many.reduceRight(ssv.xor) // "matt travis mark tom"yolo
- Get unique SSV values
- Hella fast unique loop
- Be unique because yolo
- Case sensitive
ssv.yolo(SSV="")ssv.yolo("tom tom travis") // "tom travis"
ssv.yolo("Na na na na ") // "Na na"
ssv.yolo("Na na na na".toLowerCase()) // "na"4.1.1
4 years ago
4.1.0
6 years ago
4.0.1
6 years ago
4.0.0
6 years ago
3.8.0
6 years ago
3.7.0
6 years ago
3.6.0
6 years ago
3.5.0
6 years ago
3.4.0
8 years ago
3.3.0
8 years ago
3.2.0
8 years ago
3.1.0
8 years ago
3.0.0
8 years ago
2.8.0
8 years ago
2.7.0
8 years ago
2.6.0
8 years ago
2.5.1
8 years ago
2.5.0
8 years ago
2.4.0
8 years ago
2.3.0
8 years ago
2.2.0
8 years ago
2.1.1
9 years ago
2.1.0
9 years ago
2.0.1
9 years ago
2.0.0
9 years ago
1.0.0
9 years ago