code: func getParamValue(param string, dicts map[string]interface{}) (string, bool) {
  	// split between inflectors and real param
  	// real param and each inflector is seperated by `|`
  	cleanParam, inflectors := func() (string, string) {
  		arr := strings.SplitN(param, "|", 2)
  		if len(arr) != 2 {
  			return param, ""
  		}
  		return strings.TrimSpace(arr[0]), strings.TrimSpace(arr[1])
  	}()
  
  	// get the value
  	val, ok := func() (string, bool) {
  		// get from type parameters
  		val, ok := dicts[cleanParam]
  		if !ok {
  			return "", false
  		}
  		return fmt.Sprintf("%v", val), true
  	}()
  	if !ok {
  		return "", false
  	}
  
  	// inflect the value if needed
  	if inflectors != "" {
  		for _, inflector := range strings.Split(inflectors, "|") {
  			inflector = strings.TrimSpace(inflector)
  			var ok bool
  			val, ok = doInflect(val, inflector)
  			if !ok {
  				log.Fatalf("invalid inflector " + inflector)
  			}
  		}
  	}
  	return val, true
  }
docs: // get value of a resource type param
  // return false if not exists