UNPKG

narou

Version:
1 lines 3.01 kB
{"version":3,"sources":["../src/ranking-history.ts","../src/util/date.ts"],"sourcesContent":["import type { RankingType } from \"./params.js\";\nimport { parseDate } from \"./util/date.js\";\n\nexport interface RankingHistoryRawResult {\n rtype: `${string}-${RankingType}`;\n pt: number;\n rank: number;\n}\n\nexport interface RankingHistoryResult {\n type: RankingType;\n date: Date;\n pt: number;\n rank: number;\n}\n\n/**\n * 生のランキング履歴エントリを構造化された形式にフォーマットします。\n * \n * @param rankin - フォーマットする生のランキング履歴データ\n * @returns 日付とタイプが解析されたフォーマット済みランキング履歴\n * \n * @example\n * const rawData = { rtype: \"20230101-daily\", pt: 500, rank: 10 };\n * const formattedData = formatRankingHistory(rawData);\n * // 返り値: { type: \"daily\", date: [Dateオブジェクト], pt: 500, rank: 10 }\n */\nexport function formatRankingHistory(\n rankin: RankingHistoryRawResult\n): RankingHistoryResult {\n const { rtype, pt, rank } = rankin;\n const [_date, _type] = rtype.split(\"-\");\n const date = parseDate(_date);\n const type = _type as RankingType;\n\n return { type, date, pt, rank };\n}\n","// 日付関連のユーティリティ関数\n\n/**\n * 文字列の日付(yyyyMMdd形式)をDateオブジェクトに変換する\n * @param dateStr yyyyMMdd形式の日付文字列\n * @returns Dateオブジェクト\n */\nexport function parseDate(dateStr: string): Date {\n const year = parseInt(dateStr.substring(0, 4), 10);\n const month = parseInt(dateStr.substring(4, 6), 10) - 1; // JavaScriptの月は0から始まる\n const day = parseInt(dateStr.substring(6, 8), 10);\n\n return new Date(year, month, day, 0, 0, 0, 0);\n}\n\n/**\n * 日付をyyyyMMdd形式の文字列に変換する\n * @param date 日付\n * @returns yyyyMMdd形式の文字列\n */\nexport function formatDate(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}${month}${day}`;\n}\n\n/**\n * 指定された日数を加算した新しい日付を返す\n * @param date 元の日付\n * @param days 加算する日数\n * @returns 新しい日付\n */\nexport function addDays(date: Date, days: number): Date {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOO,SAAS,UAAU,SAAuB;AAC/C,QAAM,OAAO,SAAS,QAAQ,UAAU,GAAG,CAAC,GAAG,EAAE;AACjD,QAAM,QAAQ,SAAS,QAAQ,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI;AACtD,QAAM,MAAM,SAAS,QAAQ,UAAU,GAAG,CAAC,GAAG,EAAE;AAEhD,SAAO,IAAI,KAAK,MAAM,OAAO,KAAK,GAAG,GAAG,GAAG,CAAC;AAC9C;;;ADcO,SAAS,qBACd,QACsB;AACtB,QAAM,EAAE,OAAO,IAAI,KAAK,IAAI;AAC5B,QAAM,CAAC,OAAO,KAAK,IAAI,MAAM,MAAM,GAAG;AACtC,QAAM,OAAO,UAAU,KAAK;AAC5B,QAAM,OAAO;AAEb,SAAO,EAAE,MAAM,MAAM,IAAI,KAAK;AAChC;","names":[]}