strict-method

strict method

npm install strict-method
29 downloads in the last month

strictmethod

strict method

example


 var m = require("strict-method");

 var user = {
    _name:"leo",
    _age:22,
    change:m(String,{min:5,default:"liang"},Number,function(name,age){
        this._name = name;
        this._age = age;
    })
 }

 user.change("brighthas",28); // not error.
 console.log(user._name);  // brighthas
 console.log(user._age);   //  28


 user.change("bri",28);
 console.log(user._name);  // brighthas
 console.log(user._age);   //  28

 user.change(null,25)
 console.log(user._name);  // liang
 console.log(user._age);   //  25

npm install

npm install strict-method

component install

component install brighthas/strict-method

core strict type


    Date
      var me = m(Date,function(){})
      me(new Date())   // pass

    Object
      var me = m(Object,function(){},true) // 'true' meaning is no throw error, return ParamError object .
      me(null)      // pass
      me("leo")     // pass
      var err = me(undefined) // return error
      console.log(err instanceof ParamError)  // true

    String
      var me = m(String,function(){})
      me("")   // pass
      me(null) // throw error
      me(13)   // throw error

    Boolean
      var me = m(Boolean,function(){})
      me(false) // pass
      me(true)  // pass
      me(1)     // throw error
      me(0)     // throw error

    RegExp
      var me = m(RegExp,function(){})
      me(new RegExp(...))   // pass
      me(/abc/)             // pass
      me("/abc/")           // throw error

    Array
      var me = m(Array,function(){})
      me([])   // pass
      me(new Array())   // throw error

    Number
      var me = m(String,function(){})
      me(13)   // pass
      me(23.6) // pass
      me("13") // throw error

    Function
      var me = m(Function,function(){})
      me(function(){})  // pass

    Arguments
      var obj  = {
         m1:function(){
            this._m2(arguments);  // pass
            this._m2("hi");       // throw error
         },
         _m2:m(m.Arguments,function(){
            ...
         })
      }

      obj.m1('hi');

custom converter and validater

use m.converter(Type,converter) to set Type's converter. use m.validater(Type,validater) to set Type's validater.


    var m = require("strict-method");

    // set converter for Type.
    m.converter(Type,function converter(value){
        if(value.name){
            return new Type(value.name);
        }else{
            throw new Error("convert Type error!");
        }
    })

    // set validater for Type.
    m.validater(Type,function validater(value,params){
         if(params.len && value.name.length === params.len){
         }else{
            throw new Error;
         }
    });

    function Type(name){
         this.name = name;
    }

    function Article(){
        this._name = null;
        this._type = null;
    }

    Article.prototype = {
        setName:m(String,function(name){
            this._name = name;
        }),
        setType:m(Type,{len:5},function(type){
            this._type = type;
        })
    }

    var article = new Article();

    article.setType({name:"ttttt"});

    console.log(article._type instanceof Type)  // true
    console.log(article._type.name) // ttttt

    article.setType(new Type("abc"));
    console.log(article._type.name) // ttttt

default value


   ...

   setName:m(String,{default:"brighthas"},function(name){
            this._name = name;
   })

   ...

   .setName() equal .setName("brighthas")

   ...

dumb


    ...
    setType:m(Type,{len:5},function(type){
        this._type = type;
    })
    ...

    // set dumb=true , then if convert or validate fail , no throw error , return ParamError object .
    // and default dumb = false , then if convert or validate fail , then throw error.

    ...
    setType:m(Type,{len:5},function(type){
        this._type = type;
    },true)
    ...

Number type validater


   Number validater
     m(Number,{min:3,max:12} ... )

String type validater


   String validater
     m(String,{min:3,max:12} ... )
     m(String,{regexp:/abc/} ...)
     m(String,{len:10} ... )
     m(String,{type:"mail"} ... )

     // type : mail | url | ip | ipv4 | ipv6 | int | float

LICENSE

MIT

npm loves you