rule101

1.0.8 • Public • Published

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')]" />

Readme

Keywords

none

Package Sidebar

Install

npm i rule101

Weekly Downloads

0

Version

1.0.8

License

ISC

Unpacked Size

6.02 kB

Total Files

8

Last publish

Collaborators

  • romolo.co.uk