docs: function(setOption){
          var addData = {}, hasGroup = [];
          if(setOption.ip != undefined){
              addData = {
                  type : 'ip',
                  ip : setOption.ip,
                  domain : setOption.domain,
                  comment : setOption.comment,
                  enable : (setOption.enable != undefined) ? setOption.enable : true,
                  parent : 'root'
              }
          }else if(setOption.text != undefined){
              addData = {
                  type : 'text',
                  text  : /^#/.test(setOption.text) ? setOption.text : '#' + setOption.text,
                  parent : 'root'
              }
          }
          if(setOption.group != undefined){
              //add a group
              hasGroup = this._groupFilter(setOption);
              //if it hasn't the group
              if(hasGroup.length == 0){
                  this._dataCache.push({
                      type : 'group',
                      name : setOption.group,
                      value : [],
                      parent : 'root'
                  });
              }
              hasGroup = this._groupFilter(setOption);
              addData.parent = setOption.group
          }
          if(hasGroup.length > 0){
              hasGroup.forEach(function(item){
                  item.value.push(addData);
              });
          }else{
              this._dataCache.push(addData);
          }
          return this;
      }