Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
sprintf-kit
Advanced tools
Readme
npm install sprintf-kit
Parses format string into data map with respect to printf syntax
const parse = require("sprintf-kit/parse");
const data = parse("Some %s with %d count");
// `data` resolves with following content:
{
literals: ["Some ", " with ", " count"],
placeholders: [
{ type: "s", content: "%s" },
{ type: "d", content: "%d" }
],
isParameterIndexingValid: true
}
data
spec:
literals
- Surrounding string literalsplaceholders
- Meta data of parsed placholders.
Placeholder properties map (refer to spec for explanation of each property)
parameter
- (optional) parameter setting (e.g. 1
)flags
- (optional) array of flags (e.g. ["0", "-"]
)width
- (optional) width (e.g. 4
or "*"
if dynamic)precision
- (optional) precision (e.g. 4
or "*"
if dynamic)length
- (optional) length (e.g. "z"
)type
- Modifier type (e.g. "s"
or "d"
)content
- Full string representation of placeholder (e.g. "%s"
)isParameterIndexingValid
- Whether parameter indexing is valid across all placeholders.
e.g. if no placeholders come with parameters it'll be true. If some but not all of them will come with parameters, it'll be false (if used, then all placeholders should use them).// Configure format function that resolves 's' and 'd' modifiers
let format = require("sprintf-kit")({
d: require("sprintf-kit/modifiers/d"),
s: require("sprintf-kit/modifiers/s")
});
format("Some %s with %d count %x boo", "foo", 12, "ignored"); // Some foo with 12 count %x boo
// Special `rest` formater can be used to handle leftover arguments
format = require("sprintf-kit")({
d: require("sprintf-kit/modifiers/d"),
s: require("sprintf-kit/modifiers/s"),
rest: args => " " + args.join(" ")
});
format("Some %s with %d count", "foo", 12, "rest", "args"); // Some foo with 12 count rest args
// Message string literals (all but placeholders text) can be additionally decorated
// Useful when we want to apply some specific color to message without affecting format of special arguments
const clc = require("cli-color");
format = require("sprintf-kit")({
d: require("sprintf-kit/modifiers/d"),
s: require("sprintf-kit/modifiers/s"),
literal: literal => clc.red(literal)
});
Resolver returns resolved data in form of object parts, which maybe helpful if additional programmatical processing is needed
// Configure format function that resolves 's' and 'd' modifiers
let resolve = require("sprintf-kit/get-resolver")({
d: require("sprintf-kit/modifiers/d"),
s: require("sprintf-kit/modifiers/s")
});
resolve("Some %s with %d count %x boo", "foo", 12, "ignored");
// {
// literals: ["Some ", " with ", " count ", " boo"],
// substitutions: [
// { value: "foo", placeholder: { type: "s", content: "%s" } },
// { value: "12", placeholder: { type: "d", content: "%d" } },
// { value: "%x", placeholder: { type: "x", content: "%x" }
// ],
// rest: null
// }
resolve = require("sprintf-kit/get-resolver")({
d: require("sprintf-kit/modifiers/d"),
s: require("sprintf-kit/modifiers/s"),
rest: args => " " + args.join(" ")
});
resolve("Some %s with %d count", "foo", 12, "rest", "args");
// {
// literals: ["Some ", " with ", " count"],
// substitutions: [
// { value: "foo", placeholder: { type: "s", content: "%s" } },
// { value: "12", placeholder: { type: "d", content: "%d" } }
// ],
// rest: " rest args"
// }
Currently just basic modifiers are configured in (PR's welcome to extend this support).
Modifiers can be found at sprintf-kit/modifiers
folder.
Preconfigured modifiers
d
- Numberf
- Floating point valuei
- Integerj
- JSONs
- StringEvery modifier is exception safe, in case of approaching invalid value, adequate error message token is displayed in place of placeholder
npm test
Project cross-browser compatibility supported by:
FAQs
sprintf parser and basic formatter
The npm package sprintf-kit receives a total of 808,852 weekly downloads. As such, sprintf-kit popularity was classified as popular.
We found that sprintf-kit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.