1.0.8 • Published 2 years ago

rule101 v1.0.8

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

rule101

rule101 is a human-readable way of creating rules that returns true or an error message (string)

setup

import { createUseRules, combineRuleDefinitions } from "rule101";

import stringRuleDefinitions from "./stringRuleDefinitions.js";
import arrayRuleDefinitions from "./arrayRuleDefinitions.js";

export const useStringRules = createUseRules(stringRuleDefinitions);
export const useArrayRules = createUseRules(arrayRuleDefinitions);

const allRuleDefinitions = combineRuleDefinitions(
  stringRuleDefinitions,
  arrayRuleDefinitions
);
export const useRules = createUseRules(allRuleDefinitions);

where ./stringRuleDefinitions.js is;

export default {
  isNotBlankString: () => ({
    test: (val) => val === "",
    msg: "cannot accept blank string",
  }),
  stringDoesNotContainX: (someString) => ({
    test: (val) => !val.includes(someString),
    msg: `cannot contain ${someString}`,
  }),
  stringMustContainX: (someString) => ({
    test: (val) => val.includes(someString),
    msg: `must contain ${someString}`,
  }),
  stringMustContainWord1andWord2: (w1, w2) => ({
    test: (val) => val.includes(w1) && val.includes(w2),
    msg: `must contain ${x} & ${y}`,
  }),
  stringContainsA: () => ({
    test: (val) => val.includes("a"),
    msg: "cannot contain a",
  }),
  stringContainsB: () => ({
    test: (val) => val.includes("b"),
    msg: "cannot contain b",
  }),
};

implementation

import { useStringRules } from "src/rules";
const { stringMustContainXandY, stringContainsA } = useStringRules();

// vue-quasar input in template - other patterns work similarly
<q-input :rules="[stringMustContainXandY('word1','word2'), stringContainsA()]" />

be more specific if not using a bundler

ts;dr (too sarcastic; don't read) let's be honest, no one really knows how webpack works. If this package appears to be a drain on resources, you may be better to be explicit anyway...

import { useStringRules } from "src/rules";
const { stringMustContainXandY, stringContainsA } = useStringRules(['stringMustContainXandY', 'stringContainsA']);

// vue-quasar input in template - other patterns work similarly
<q-input :rules="[stringMustContainXandY('word1','word2'), stringContainsA()]" />

or

import { useStringRules } from "src/rules";
const { stringMustContainXandY } = useStringRules('stringMustContainXandY');

// vue-quasar input in template - other patterns work similarly
<q-input :rules="[stringMustContainXandY('word1','word2')]" />
1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago