@mathrunet/masamune
Version:
Manages packages for the server portion (NodeJS) of the Masamune framework.
314 lines • 7.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ModelFieldValue = void 0;
/**
* Class for generating values for `ModelFieldValue` in katana_model.
*
* katana_modelの`ModelFieldValue`用の値を生成するためのクラス。
*/
class ModelFieldValue {
/**
* Generates text data for Like search.
*
* Like検索用のテキストデータを生成します。
*
* @param {string} text
* Text to be searched.
*
* 検索対象のテキスト。
*
* @returns
*/
static searchable({ text, }) {
const res = {};
const search = {};
text.toLowerCase().replace(/\./g, "").toHankakuNumericAndAlphabet().toZenkakuKatakana().toKatakana().removeOnlyEmoji().splitByCharacterAndBigram().forEach((e) => {
const trimed = e.trim();
if (trimed.length <= 0) {
return;
}
search[trimed] = true;
});
res["@search"] = search;
return res;
}
/**
* Class for generating data for `ModelCounter`.
*
* `ModelCounter`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {number} value
* Data value.
*
* データの値。
*
* @param {number} increment
* Increment value.
*
* インクリメントする値。
*
* @returns { [key: string]: any }
* Data for `ModelCounter`.
*
* `ModelCounter`用のデータ。
*/
static modelCounter({ key, value, increment, }) {
const res = {};
res[key] = value;
res[`#${key}`] = {
"@increment": increment !== null && increment !== void 0 ? increment : 0,
"@target": key,
"@type": "ModelCounter",
"@value": value,
};
return res;
}
/**
* Class for generating data for `ModelTimestamp`.
*
* `ModelTimestamp`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {Date} date
* Date and time.
*
* 日時。
*
* @returns { [key: string]: any }
* Data for `ModelCounter`.
*
* `ModelCounter`用のデータ。
*/
static modelTimestamp({ key, date, }) {
const res = {};
date !== null && date !== void 0 ? date : (date = new Date());
res[key] = date;
res[`#${key}`] = {
"@time": date.getTime(),
"@target": key,
"@type": "ModelTimestamp",
};
return res;
}
/**
* Class for generating data for `ModelDate`.
*
* `ModelDate`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {Date} date
* Date and time.
*
* 日時。
*
* @returns { [key: string]: any }
* Data for `ModelDate`.
*
* `ModelDate`用のデータ。
*/
static modelDate({ key, date, }) {
const res = {};
date !== null && date !== void 0 ? date : (date = new Date());
date.setHours(0, 0, 0, 0);
res[key] = date;
res[`#${key}`] = {
"@time": date.getTime(),
"@target": key,
"@type": "ModelDate",
};
return res;
}
/**
* Class for generating data for `ModelLocale`.
*
* `ModelLocale`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {string} language
* Language.
*
* 言語。
*
* @param {string} country
* Country.
*
* 国。
*
* @returns { [key: string]: any }
* Data for `ModelLocale`.
*
* `ModelLocale`用のデータ。
*/
static modelLocale({ key, language, country, }) {
const res = {};
res[key] = `${language}_${country}`;
res[`#${key}`] = {
"@country": country,
"@language": language,
"@target": key,
"@type": "ModelLocale",
};
return res;
}
/**
* Class for generating data for `ModelUri`.
*
* `ModelUri`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {string} uri
* URI.
*
* @returns { [key: string]: any }
* Data for `ModelUri`.
*
* `ModelUri`用のデータ。
*/
static modelUri({ key, uri, }) {
const res = {};
res[key] = uri;
res[`#${key}`] = {
"@target": key,
"@type": "ModelUri",
"@uri": uri,
};
return res;
}
/**
* Class for generating data for `ModelImageUri`.
*
* `ModelImageUri`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {string} uri
* URI.
*
* @returns { [key: string]: any }
* Data for `ModelImageUri`.
*
* `ModelImageUri`用のデータ。
*/
static modelImageUri({ key, uri, }) {
const res = {};
res[key] = uri;
res[`#${key}`] = {
"@target": key,
"@type": "ModelImageUri",
"@uri": uri,
};
return res;
}
/**
* Class for generating data for `ModelVideoUri`.
*
* `ModelVideoUri`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {string} uri
* URI.
*
* @returns { [key: string]: any }
* Data for `ModelVideoUri`.
*
* `ModelVideoUri`用のデータ。
*/
static modelVideoUri({ key, uri, }) {
const res = {};
res[key] = uri;
res[`#${key}`] = {
"@target": key,
"@type": "ModelVideoUri",
"@uri": uri,
};
return res;
}
/**
* Class for generating data for `ModelSearch`.
*
* `ModelSearch`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {string[]} list
* List of search values.
*
* 検索対象のリスト。
*
* @returns { [key: string]: any }
* Data for `ModelSearch`.
*
* `ModelSearch`用のデータ。
*/
static modelSearch({ key, list, }) {
const res = {};
res[key] = list;
res[`#${key}`] = {
"@list": list,
"@type": "ModelSearch",
};
return res;
}
/**
* Class for generating data for `ModelToken`.
*
* `ModelToken`用のデータを生成するためのクラス。
*
* @param {string} key
* Data key.
*
* データのキー。
*
* @param {string[]} list
* List of token values.
*
* トークンのリスト。
*
* @returns { [key: string]: any }
* Data for `ModelToken`.
*
* `ModelToken`用のデータ。
*/
static modelToken({ key, list, }) {
const res = {};
res[key] = list;
res[`#${key}`] = {
"@list": list,
"@type": "ModelToken",
};
return res;
}
}
exports.ModelFieldValue = ModelFieldValue;
//# sourceMappingURL=model_field_value.js.map