- Notifications
You must be signed in to change notification settings - Fork8
Validate
uupaa edited this pageFeb 25, 2016 ·19 revisions
WebModule には、Valid.js 由来のバリデート関数$valid
,$type
,$keys
,$values
,$some
,$args
が組み込まれています。
これらは lib/WebModule.js で定義されており、関数の実体は test/wmtools.js に定義されています。
$type
で使用可能な型 も参照してください。
// --- validate and assert functions -----------------------//{@dev https://github.com/uupaa/WebModule/wiki/ValidateGLOBAL.$type=function(v,types){returnGLOBAL.Valid ?GLOBAL.Valid.type(v,types) :true;};GLOBAL.$keys=function(o,keys){returnGLOBAL.Valid ?GLOBAL.Valid.keys(o,keys) :true;};GLOBAL.$some=function(v,cd,ig){returnGLOBAL.Valid ?GLOBAL.Valid.some(v,cd,ig) :true;};GLOBAL.$args=function(api,args){returnGLOBAL.Valid ?GLOBAL.Valid.args(api,args) :true;};GLOBAL.$valid=function(v,api,hl){returnGLOBAL.Valid ?GLOBAL.Valid(v,api,hl) :true;};GLOBAL.$values=function(o,vals){returnGLOBAL.Valid ?GLOBAL.Valid.values(o,vals) :true;};//}@dev
関数が引数で複数の型を受け取る場合に、その引数の型は UnionType になります。
UnionType は|
で連結して表現します。
functionhuga(arg){//@arg Number|String}
関数が引数であらゆる型を受け取る場合に、その引数の型は Any になります。
functionmoga(arg){//@arg Any}
WebModule では、Attribute(@...
)を使い、関数の機能と役割をマークアップすることができます。
functionFoo(id,//@arg Number|String = "" - object id.callback,//@arg Function - callback(id:String):voidoptions){//@arg Object = null - { key, value }}
- 引数
@arg Type1
- 型を指定します@arg Type1|Type2
- 型を|
で連結し複数指定することもできます@arg Type1|Type2 = defaultValue
- デフォルト値を指定することもできます@arg Type1|Type2 = defaultValue - comment
--
を追加することでコメントを記述できます@arg String|Boolean = false - options.verbose
- 可変長引数
@var_args Type1
- 型を指定します@var_args Type1|Type2
- 型を|
で連結し複数指定することもできます@var_args Type1|Type2 - comment
--
を追加することでコメントを記述できます@var_args Node - HTML nodes
- 戻り値
@ret Type1
- 型を指定します@ret Type1|Type2
- 型を|
で連結し複数指定することもできます@ret Type1|Type2 - comment
--
を追加することでコメントを記述できます@ret Uint8Array - UTF8 array. [u8, ...]
- 概要
@desc comment
- description を 1行で記述します@desc convert string to Base64String.
- 例外
@throw Type("message")
- 関数が発生させる可能性のある例外とメッセージを記述します@throw TypeError("invalid args")
- 廃止予定
@deprecated comment
- 廃止予定なことをコメント付きで表明します@deprecated version 0.3 and later
- その他
@...
- その他の属性も利用可能です@... comment
- コメントも付与できます@see this function spec https://.../wiki/
@arg
の 例:
- `@arg String`- `@arg String = ""`- `@arg Number|Integer = 0`- `@arg Number|Integer = 0 - value`- `@arg URLStringArray = [] - [URLString, ...]`
@arg ...
や$type("...")
にはString
やNumber
などの基本的な型名の他に、URLString
やNumberArray
などのように修飾された型名とユーザが独自に定義した形名が使用できます。
このような型はデコレーションされた型(DecoratedType)と呼びます。
DecoratedType は、String などの基本型よりも、詳細度が高くなるため、WebModule の多くの場所で使用されています。
型の性質 | Basic Type | DecoratedType |
---|---|---|
URL文字列 | String | @arg URLString - "url" |
絶対URLの文字列 | String | @arg AbsoluteURLString - "http://..." |
絶対URLの文字列 の配列 | String | @arg AbsoluteURLStringArray - ["http://...", ...] |
数値の配列 | Array | @arg NumberArray - [number, ...] |
StringのKeyと NumberのValueを ペアにした配列 | Array | @arg StringKeyAndNumberValuePairArray - [ <key:String, value:Number> , ... ] |