「
モジュール:Citation/Show date
」を編集中
2025年8月22日 (金) 15:19時点における
Wikipedia>本日晴天
による版
(一部のページでスクリプトエラーが発生する不具合を修正)
(差分) ← 古い版 |
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
require('strict') local cfg = mw.loadData('Module:Citation/Show date/Configuration') local validation = require('Module:Citation/CS1/Date validation') local function is_set (var) return not (var == nil or var == ''); end local function in_array (needle, haystack) if needle == nil then return false; end for n, v in ipairs (haystack) do if v == needle then return n; end end return false; end -- [[モジュール:Citation/CS1/Utilities]]が返すテーブルの簡易版 local utilities = { is_set = is_set, in_array = in_array } -- utilities.set_message()などが空文字列を返すようにする local _mt = { __index = function (t, key) return ( function () return '' end ) end } setmetatable(utilities, _mt) validation.set_selected_modules(cfg, utilities) local function show_date(frame) local param_name = frame.args['param-name'] if not is_set(param_name) then param_name = 'date' end local value = frame.args[1] local date_parameters_list = { [param_name] = {val = value} } local error_list = {} -- CS1モジュールによる日付の検査 validation.dates(date_parameters_list, {}, error_list) if param_name == 'access-date' then -- 閲覧日については他の日付とは分けて処理する local post_text = frame.args['post-text'] or '閲覧。' if #error_list > 0 then -- validation.dates()による検査に不合格ならば{{Accessdate}}を呼び出す local args = { value, ['post-text'] = post_text } return frame:expandTemplate{ title = 'Accessdate', args = args } end -- validation.dates()による検査に合格していれば、 -- validation.reformat_dates()を用いて日本語の形式に変換する validation.reformat_dates(date_parameters_list, 'ja') return date_parameters_list[param_name].val .. post_text end -- 閲覧日以外の日付 if #error_list > 0 then -- validation.dates()による検査に不合格だった場合の追加処理 -- {{ISO dateJA}}を用いてISO形式への変換を試みる local iso_date = frame:expandTemplate{ title = 'ISO dateJA', args = { value } } -- {{ISO dateJA}}でも認識できない日付はエラーとして扱う -- {{ISO dateJA|28 juin 06}}のように空でない不正な文字列を返す場合も考慮する if not is_set(iso_date) or not iso_date:match('^%d%d%d%d') then return value .. frame:expandTemplate{ title = 'Citation/showdateError' } end -- 日付が再来年以降であればエラーとして扱う local current_year = tonumber(mw.getContentLanguage():formatDate('Y')) if tonumber(iso_date:sub(1, 4)) - current_year > 1 then local args = { message = '日付が有効な範囲を超えています。' } return value .. frame:expandTemplate{ title = 'Citation/showdateError' , args = args } end -- 以後の処理は、validation.dates()による検査に合格した場合と基本的に同じ -- ただしvalidation.reformat_dates()を用いた日付の変換を行う場合は、 -- valueではなくiso_dateを変換の対象とする date_parameters_list[param_name].val = iso_date end if param_name == 'archive-date' then -- アーカイブの日付は常に日本語の形式に変換する validation.reformat_dates(date_parameters_list, 'ja') value = date_parameters_list[param_name].val if in_array(mw.ustring.sub(value, -1, -1), {'年', '月'}) then -- 変換後の日付が「年」または「月」で終わる場合はエラーとして扱う local args = { message = 'アーカイブの日付は年・月・日のすべてを記入してください。' } return value .. frame:expandTemplate{ title = 'Citation/showdateError' , args = args } end return value else -- 閲覧日・アーカイブ日以外の日付 -- df引数が空でなければ、CS1モジュールを用いて日付を変換する local df = frame.args['df'] if is_set(df) then validation.reformat_dates(date_parameters_list, df) value = date_parameters_list[param_name].val end return value end end return { show_date = show_date }
編集内容の要約:
uwuzu 非公式Wikiへの投稿はすべて、クリエイティブ・コモンズ 表示-非営利-継承 (詳細は
UwuzuWiki:著作権
を参照)のもとで公開したと見なされることにご注意ください。 自分が書いたものが他の人に容赦なく編集され、自由に配布されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。
著作権保護されている作品は、許諾なしに投稿しないでください!
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
このページで参照読み込みされているページ:
テンプレート:Lua
(
編集
)
テンプレート:Ombox
(
編集
)
テンプレート:Para
(
編集
)
テンプレート:Param value
(
編集
)
テンプレート:Pval
(
編集
)
テンプレート:Replace
(
編集
)
テンプレート:Sandbox other
(
編集
)
テンプレート:Tl
(
編集
)
テンプレート:使用箇所の多いテンプレート
(
編集
)
モジュール:Arguments
(
編集
)
モジュール:Citation/Show date/doc
(
編集
)
モジュール:List
(
編集
)
モジュール:Lua banner
(
編集
)
モジュール:Message box
(
編集
)
モジュール:Message box/configuration
(
編集
)
モジュール:Message box/ombox.css
(
編集
)
モジュール:String
(
編集
)
モジュール:TableTools
(
編集
)
モジュール:Yesno
(
編集
)
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
モジュール
議論
English
表示
閲覧
ソースを編集
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
このWIkiについて
ツール
リンク元
関連ページの更新状況
ページ情報
他のプロジェクト