Skip to content
uupaa edited this page Feb 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/Validate
GLOBAL.$type  = function(v, types)   { return GLOBAL.Valid ? GLOBAL.Valid.type(v, types)  : true; };
GLOBAL.$keys  = function(o, keys)    { return GLOBAL.Valid ? GLOBAL.Valid.keys(o, keys)   : true; };
GLOBAL.$some  = function(v, cd, ig)  { return GLOBAL.Valid ? GLOBAL.Valid.some(v, cd, ig) : true; };
GLOBAL.$args  = function(api, args)  { return GLOBAL.Valid ? GLOBAL.Valid.args(api, args) : true; };
GLOBAL.$valid = function(v, api, hl) { return GLOBAL.Valid ? GLOBAL.Valid(v, api, hl)     : true; };
GLOBAL.$values = function(o, vals)   { return GLOBAL.Valid ? GLOBAL.Valid.values(o, vals) : true; };
//}@dev

UnionType

関数が引数で複数の型を受け取る場合に、その引数の型は UnionType になります。
UnionType は で連結して表現します。

function huga(arg) { // @arg Number|String

}

Any

関数が引数であらゆる型を受け取る場合に、その引数の型は Any になります。

function moga(arg) { // @arg Any

}

Function Attribute

WebModule では、Attribute(@...)を使い、関数の機能と役割をマークアップすることができます。

function Foo(id,        // @arg Number|String = "" - object id.
             callback,  // @arg Function - callback(id:String):void
             options) { // @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, ...]`

Decorated type

@arg ...$type("...") には StringNumber などの基本的な型名の他に、URLStringNumberArray などのように修飾された型名とユーザが独自に定義した形名が使用できます。
このような型はデコレーションされた型(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> , ...
]