「
Master Schema Specification
」を編集中
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
マスターのスキーマの仕様書 == 基本的なフォーマット == 基本的にroot要素にdataの配列が来るものとする。 <pre> id: idName type: object isDefaultOpen: true properties: - key: data type: array overrideCodeGeneratePropertyName: OverrideName items: type: object properties: - key: masterId type: uuid autoGenerated: true </pre> == 各プロパティの詳細 == === 基本のプロパティ === {| class="wikitable" |+ !プロパティ名 !説明 !プロパティの型 !フォーマット !エディタ上の挙動 !コード生成時の挙動 |- |id |そのスキーマのid |string |任意の文字列 | | |- |key |その要素の名前 |string |任意の文字列 | | |- |type |その要素の型 |string |array, object, string, number, integer, boolean, uuid, vecotr2, vecotr3, vecotr4, vecotr2Int, vecotr3Int, vecotr4Int | | |- |properties |object型の中に入っている要素を列挙する。 |object array |各要素はkeyがMUST。typeかrefのどちらかMUST | | |- |items |array型の型を定義する。 |object |typeとそのタイプの定義に必要な付随要素 | | |- |autoGenerated |uuid専用、エディタ上でuuidを自動生成する。 |boolean | | | |- |foreignKey |外部キーとなる要素を指定する。 |object |schemaId, keyPath, displayElementPathの3要素のobject型 パスは絶対パス固定? | | |- |optional |その要素がnullもしくは要素無しでも良いか。 |boolean | | | |- |default |その要素のエディタ上でのデフォルト値を指定する。 |typeによる | | | |- |enum |string要素をいくつかの値に固定する。 |string array | | | |- |ref |他のスキーマをインポートする |string |スキーマIDを指定する | | |} === 旧OneOf関連 === {| class="wikitable" |+ !プロパティ名 !説明 !プロパティの型 !フォーマット !エディタ上の挙動 !コード生成時の挙動 |- |switch |要素の値ごとのスキーマを変更するとき、その要素のパスを指定する caseとセットで使う。 |string |絶対パス or 相対パス 指定出来るタイプはstring, number, integer, boolean | | |- |case |switchで指定した要素でどのスキーマに分岐するかを記述する。 switchとセットで使う。 |object array |when, typeがMUST | | |- |when |case内で、そのスキーマとなる値を設定する。 |switchで指定したタイプによる | | | |} === エディタ、コード生成関連 === {| class="wikitable" !プロパティ名 !説明 !プロパティの型 !フォーマット !エディタ上の挙動 !コード生成時の挙動 |- |isDefaultOpen |その要素を表示時に展開しておくか |boolean | | | |- |overrideCodeGeneratePropertyName |コードジェネレート時のプロパティ、クラス名を上書きする |string |任意の文字列 | | |} === 新規プロパティ === {| class="wikitable" !プロパティ名 !説明 !プロパティの型 !フォーマット !エディタ上の挙動 !コード生成時の挙動 |- |fixedParameter |パスで指定した要素を特定の値に固定する |object |path 指定する要素のパス value 固定する値 | |無し |} == 今は使ってないが将来的に必要になる機能 == === ユーザーによるスキーマ拡張 === schemaExtensionディレクトリにhogehoge.yamlが入っていて、各yamlが拡張情報を持っている感じ。 以下のような拡張スキーマがあったとき extensions: - schemaId: item path: properties[0]/items/properties schema: - key: hp type: integer default: 100 optional: true こうする {| class="wikitable" |+ !変更前 !変更後 |- | id: items type: object isDefaultOpen: true properties: - key: data type: array items: type: object thumbnail: imagePath properties: - key: itemGuid type: uuid autoGenerated: true - key: name type: string - key: maxStack type: integer default: 100 | id: items type: object isDefaultOpen: true properties: - key: data type: array items: type: object thumbnail: imagePath properties: - key: itemGuid type: uuid autoGenerated: true - key: name type: string - key: maxStack type: integer default: 100 # ---- ここが追加分 ---- - key: hp type: integer default: 100 optional: true |} ...みたいな スキーマの拡張の順番等をちゃんと定義しないといけなかったり、例みたいにindexを直で指定すると他のスキーマを拡張したときに意図した拡張ができないと言ったリスクがあるので、色々検討事項が多い。 ただ、これはスキーマをロードしてUIを構築する前段階で行うものなので、今置いておいても大きな問題にはならないはず。 === 複数modロード === 複数のmodをロードするということは、当然複数の実データファイルを読み込む必要がある。 どうすればいいか思いついていないが、root直下のdata配列だけマージする、もしくはmergeableといったプロパティを容易して、複数ロードしたときにマージするかオーバーライドするかと言った情報を付与できるようにするのが良いのかもしれない。 === パッケージマネージャー === package.jsonみたいなものを定義して、パッケージマネージャーからmodをDLしてnode_cache的なところに全部ぶち込むみたいな処理をする必要がある。
編集内容の要約:
moorestechWikiへの投稿はすべて、クリエイティブ・コモンズ・ゼロ(パブリックドメイン) (詳細は
MoorestechWiki:著作権
を参照)のもとで公開したと見なされることにご注意ください。 自分が書いたものが他の人に容赦なく編集され、自由に配布されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。
著作権保護されている作品は、許諾なしに投稿しないでください!
キャンセル
編集の仕方
(新しいウィンドウで開きます)
案内メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
ソースを編集
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWikiについてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報