|
Revision 561, 9.8 kB
(checked in by mayuki, 11 months ago)
|
|
lang/perl/plagger/lib/Plagger/Plugin/Filter/JugemEmoji.pm: POD書いたやつで上書きし忘れ。
|
| Line | |
|---|
| 1 | # $Id: JugemEmoji.pm 120 2007-10-19 15:45:31Z mayuki $ |
|---|
| 2 | package Plagger::Plugin::Filter::JugemEmoji; |
|---|
| 3 | use utf8; |
|---|
| 4 | use strict; |
|---|
| 5 | use base qw( Plagger::Plugin ); |
|---|
| 6 | |
|---|
| 7 | sub init { |
|---|
| 8 | my $self = shift; |
|---|
| 9 | $self->SUPER::init(@_); |
|---|
| 10 | } |
|---|
| 11 | |
|---|
| 12 | sub register { |
|---|
| 13 | my($self, $context) = @_; |
|---|
| 14 | |
|---|
| 15 | $context->register_hook( |
|---|
| 16 | $self, |
|---|
| 17 | 'update.entry.fixup' => \&filter |
|---|
| 18 | ); |
|---|
| 19 | } |
|---|
| 20 | |
|---|
| 21 | sub filter { |
|---|
| 22 | my($self, $context, $args) = @_; |
|---|
| 23 | |
|---|
| 24 | my $e = $args->{entry}; |
|---|
| 25 | |
|---|
| 26 | return unless $e->permalink =~ m#^https?://[^.]+\.jugem\.(cc|jp)/#; |
|---|
| 27 | $e->body($self->replace($e->body, $&)); |
|---|
| 28 | } |
|---|
| 29 | |
|---|
| 30 | my %EMOJI_SET = ( |
|---|
| 31 | '嬉しい' => 'a01', |
|---|
| 32 | '楽しい' => 'a02', |
|---|
| 33 | '悲しい' => 'a03', |
|---|
| 34 | '怒り' => 'a04', |
|---|
| 35 | 'びっくり' => 'a05', |
|---|
| 36 | 'ショック' => 'a06', |
|---|
| 37 | 'ときめき' => 'a07', |
|---|
| 38 | '冷や汗' => 'a08', |
|---|
| 39 | 'しょんぼり' => 'a09', |
|---|
| 40 | '男' => 'a10', |
|---|
| 41 | '女' => 'a11', |
|---|
| 42 | '拍手' => 'a12', |
|---|
| 43 | 'グッド' => 'a13', |
|---|
| 44 | 'バッド' => 'a14', |
|---|
| 45 | '聞き耳を立てる' => 'a15', |
|---|
| 46 | '見る' => 'a16', |
|---|
| 47 | '抱擁' => 'a17', |
|---|
| 48 | 'おてんき' => 'weather_01', |
|---|
| 49 | 'くもり' => 'weather_02', |
|---|
| 50 | 'あめ' => 'weather_03', |
|---|
| 51 | 'ゆき' => 'weather_04', |
|---|
| 52 | '濃霧' => 'j_001', |
|---|
| 53 | '小雨' => 'j_002', |
|---|
| 54 | '晴れ' => 'b01', |
|---|
| 55 | '曇り' => 'b02', |
|---|
| 56 | '雨' => 'b03', |
|---|
| 57 | '雪' => 'b04', |
|---|
| 58 | '雷' => 'b05', |
|---|
| 59 | '強風' => 'b06', |
|---|
| 60 | '霧' => 'b07', |
|---|
| 61 | '月' => 'b08', |
|---|
| 62 | '電車' => 'c01', |
|---|
| 63 | '飛行機' => 'c02', |
|---|
| 64 | '車' => 'c03', |
|---|
| 65 | '自転車' => 'c04', |
|---|
| 66 | '船' => 'c05', |
|---|
| 67 | 'バス' => 'c06', |
|---|
| 68 | '学校' => 'd01', |
|---|
| 69 | '家' => 'd02', |
|---|
| 70 | 'ビル' => 'd03', |
|---|
| 71 | '病院' => 'd04', |
|---|
| 72 | '犬' => 'e01', |
|---|
| 73 | '猫' => 'e02', |
|---|
| 74 | '鳥' => 'e03', |
|---|
| 75 | '魚' => 'e04', |
|---|
| 76 | '馬' => 'e05', |
|---|
| 77 | '豚' => 'e06', |
|---|
| 78 | 'かたつむり' => 'j_135', |
|---|
| 79 | 'ペンギン' => 'pengin', |
|---|
| 80 | '赤ちゃん' => 'e07', |
|---|
| 81 | '子供' => 'e08', |
|---|
| 82 | 'おばけ' => 'e09', |
|---|
| 83 | '映画' => 'f01', |
|---|
| 84 | '食事' => 'f02', |
|---|
| 85 | '美容室' => 'f03', |
|---|
| 86 | '読書' => 'f04', |
|---|
| 87 | '温泉' => 'f05', |
|---|
| 88 | 'カラオケ' => 'f06', |
|---|
| 89 | 'サッカー' => 'g01', |
|---|
| 90 | 'サーフィン' => 'g02', |
|---|
| 91 | 'スキー' => 'g03', |
|---|
| 92 | 'ジョギング' => 'g04', |
|---|
| 93 | '水泳' => 'g05', |
|---|
| 94 | 'テニス' => 'g06', |
|---|
| 95 | 'ゴルフ' => 'g07', |
|---|
| 96 | '野球' => 'g08', |
|---|
| 97 | '携帯' => 'h01', |
|---|
| 98 | 'ビール' => 'h02', |
|---|
| 99 | '熱燗' => 'h03', |
|---|
| 100 | 'ホットコーヒー' => 'h04', |
|---|
| 101 | 'ソフトクリーム' => 'h05', |
|---|
| 102 | 'ラーメン' => 'h06', |
|---|
| 103 | 'おでん' => 'h07', |
|---|
| 104 | 'パン' => 'h08', |
|---|
| 105 | 'ハンバーガー' => 'h09', |
|---|
| 106 | '靴' => 'h10', |
|---|
| 107 | 'ペン' => 'h11', |
|---|
| 108 | 'メール' => 'h12', |
|---|
| 109 | 'PC' => 'h13', |
|---|
| 110 | 'テレビ' => 'h14', |
|---|
| 111 | '花' => 'h15', |
|---|
| 112 | '植物' => 'h16', |
|---|
| 113 | 'お金' => 'h17', |
|---|
| 114 | '財布' => 'j_104', |
|---|
| 115 | '工具' => 'h18', |
|---|
| 116 | 'カチンコ' => 'j_096', |
|---|
| 117 | 'ふくろ' => 'j_097', |
|---|
| 118 | 'いす' => 'j_099', |
|---|
| 119 | 'Tシャツ' => 'j_103', |
|---|
| 120 | 'ジーンズ' => 'j_106', |
|---|
| 121 | 'スノボ' => 'j_107', |
|---|
| 122 | 'チャペル' => 'j_108', |
|---|
| 123 | 'ドア' => 'j_109', |
|---|
| 124 | 'レンチ' => 'j_110', |
|---|
| 125 | '鉛筆2' => 'j_111', |
|---|
| 126 | 'ハサミ' => 'j_030', |
|---|
| 127 | '指輪' => 'j_113', |
|---|
| 128 | 'リボン' => 'j_041', |
|---|
| 129 | '足' => 'j_046', |
|---|
| 130 | '眼鏡' => 'j_047', |
|---|
| 131 | '砂時計' => 'j_114', |
|---|
| 132 | '腕時計' => 'j_116', |
|---|
| 133 | '王冠' => 'h19', |
|---|
| 134 | '王冠2' => 'j_112', |
|---|
| 135 | 'おにぎり' => 'h20', |
|---|
| 136 | '時計' => 'h21', |
|---|
| 137 | 'ケーキ' => 'h22', |
|---|
| 138 | 'プレゼント' => 'h23', |
|---|
| 139 | 'ゲーム' => 'h24', |
|---|
| 140 | 'CD' => 'h25', |
|---|
| 141 | 'カメラ' => 'h26', |
|---|
| 142 | '銃' => 'h27', |
|---|
| 143 | '桜' => 'h28', |
|---|
| 144 | '!' => 'i01', |
|---|
| 145 | '?' => 'i02', |
|---|
| 146 | '!?' => 'i03', |
|---|
| 147 | 'ムード' => 'j_088', |
|---|
| 148 | '!!' => 'j_091', |
|---|
| 149 | 'るんるん' => 'j_081', |
|---|
| 150 | 'かわいい' => 'j_082', |
|---|
| 151 | 'キスマーク' => 'j_083', |
|---|
| 152 | '口紅' => 'j_105', |
|---|
| 153 | 'ぴかぴか' => 'j_084', |
|---|
| 154 | 'ラブ' => 'i04', |
|---|
| 155 | '失恋' => 'i05', |
|---|
| 156 | '揺れるハート' => 'j_078', |
|---|
| 157 | 'ハート大小' => 'j_079', |
|---|
| 158 | 'マル秘' => 'i07', |
|---|
| 159 | '祝' => 'i08', |
|---|
| 160 | 'zzz' => 'i09', |
|---|
| 161 | '眠たい' => 'j_090', |
|---|
| 162 | '怒りマーク' => 'i10', |
|---|
| 163 | 'むかっ' => 'j_085', |
|---|
| 164 | 'パンチ' => 'j_086', |
|---|
| 165 | '爆弾' => 'j_087', |
|---|
| 166 | '汗' => 'i11', |
|---|
| 167 | 'どんっ' => 'j_092', |
|---|
| 168 | 'あせあせ' => 'j_093', |
|---|
| 169 | 'ギザギザ' => 'j_094', |
|---|
| 170 | 'くるりん' => 'j_095', |
|---|
| 171 | 'スペード' => 'i12', |
|---|
| 172 | 'クローバー' => 'i13', |
|---|
| 173 | 'ハート' => 'i14', |
|---|
| 174 | 'ダイヤ' => 'i15', |
|---|
| 175 | 'ハートのエース' => 'card_01', |
|---|
| 176 | 'ダイヤのエース' => 'card_02', |
|---|
| 177 | 'スペードのエース' => 'card_03', |
|---|
| 178 | 'クローバーのエース' => 'card_04', |
|---|
| 179 | 'ノーノー' => 'face_01', |
|---|
| 180 | 'ニコニコ' => 'face_02', |
|---|
| 181 | 'たらーっ' => 'face_03', |
|---|
| 182 | 'モゴモゴ' => 'face_04', |
|---|
| 183 | 'ぶー' => 'face_05', |
|---|
| 184 | 'てれちゃう' => 'face_06', |
|---|
| 185 | 'ラブラブ' => 'face_07', |
|---|
| 186 | 'ポロリ' => 'face_08', |
|---|
| 187 | 'モグモグ' => 'face_09', |
|---|
| 188 | 'イヒヒ' => 'face_10', |
|---|
| 189 | 'ラッキー' => 'face_11', |
|---|
| 190 | 'ふぅ〜ん' => 'face_12', |
|---|
| 191 | 'ムニョムニョ' => 'face_13', |
|---|
| 192 | 'ポッ' => 'face_14', |
|---|
| 193 | 'わーい' => 'wai', |
|---|
| 194 | 'ちっ' => 'chi', |
|---|
| 195 | 'がく〜' => 'gaku', |
|---|
| 196 | 'ひやひや' => 'hiyaase', |
|---|
| 197 | 'あっかんべー' => 'akkanbe', |
|---|
| 198 | 'ウィンク' => 'wink', |
|---|
| 199 | '猫2' => 'neco', |
|---|
| 200 | '泣き顔' => 'nakigao', |
|---|
| 201 | '唖然' => 'skull_01', |
|---|
| 202 | '撃沈' => 'skull_02', |
|---|
| 203 | '困惑' => 'skull_03', |
|---|
| 204 | '人影' => 'j_098', |
|---|
| 205 | 'YES!' => 'comme_yes', |
|---|
| 206 | 'NO!' => 'comme_no', |
|---|
| 207 | 'ワッ!' => 'comme_h', |
|---|
| 208 | 'おや?' => 'comme_q', |
|---|
| 209 | 'ロリポップ!' => 'comme_loli', |
|---|
| 210 | 'NEW!' => 'new', |
|---|
| 211 | 'TEL' => 'tel', |
|---|
| 212 | 'FAX' => 'fax', |
|---|
| 213 | 'URL' => 'url', |
|---|
| 214 | 'MAIL' => 'mail_03', |
|---|
| 215 | 'グー' => 'hand_01', |
|---|
| 216 | 'パー' => 'hand_02', |
|---|
| 217 | 'チョキ' => 'hand_03', |
|---|
| 218 | 'イケテル' => 'hand_04', |
|---|
| 219 | 'きのこオレンジ' => 'kinoko_01', |
|---|
| 220 | 'きのこレッド' => 'kinoko_02', |
|---|
| 221 | 'きのこグリーン' => 'kinoko_03', |
|---|
| 222 | 'きのこブルー' => 'kinoko_04', |
|---|
| 223 | 'チューリップ' => 'j_132', |
|---|
| 224 | 'もみじ' => 'j_134', |
|---|
| 225 | 'パソコン' => 'pc', |
|---|
| 226 | 'ケータイ' => 'mobile', |
|---|
| 227 | 'ポケットベル' => 'j_016', |
|---|
| 228 | '電話' => 'j_042', |
|---|
| 229 | 'fax to' => 'j_055', |
|---|
| 230 | 'mac' => 'mac', |
|---|
| 231 | 'win' => 'win', |
|---|
| 232 | 'テレビジョン' => 'tv', |
|---|
| 233 | 'カレンダー' => 'calendar', |
|---|
| 234 | 'メモ' => 'j_043', |
|---|
| 235 | '壁掛時計' => 'time', |
|---|
| 236 | '本' => 'book', |
|---|
| 237 | 'メールピンク' => 'mail_01', |
|---|
| 238 | 'メールブルー' => 'mail_02', |
|---|
| 239 | '便箋' => 'memo', |
|---|
| 240 | '鉛筆' => 'pencil', |
|---|
| 241 | 'おはな' => 'flower', |
|---|
| 242 | 'よつばのクローバー' => 'clover', |
|---|
| 243 | '赤い旗' => 'flag_01', |
|---|
| 244 | '青い旗' => 'flag_02', |
|---|
| 245 | 'GO!' => 'go', |
|---|
| 246 | 'STOP!' => 'stop', |
|---|
| 247 | 'フガー' => 'smoke_01', |
|---|
| 248 | 'プシュー' => 'smoke_02', |
|---|
| 249 | 'セブン' => 'cv_01', |
|---|
| 250 | 'ホットステーション' => 'cv_02', |
|---|
| 251 | 'ファミマ' => 'cv_03', |
|---|
| 252 | '郵便局' => 'postman', |
|---|
| 253 | '赤りんご' => 'apple_01', |
|---|
| 254 | '青りんご' => 'apple_02', |
|---|
| 255 | 'さくらんぼ' => 'cherry', |
|---|
| 256 | 'バナナ' => 'j_133', |
|---|
| 257 | 'ラテ' => 'cafe', |
|---|
| 258 | 'ひらめき' => 'light', |
|---|
| 259 | 'ベースボール' => 'ball_01', |
|---|
| 260 | 'サッカーボール' => 'ball_02', |
|---|
| 261 | 'バスケットボール' => 'ball_03', |
|---|
| 262 | '地球' => 'earth', |
|---|
| 263 | 'パクッ' => 'chara_01', |
|---|
| 264 | 'ニョロ' => 'chara_02', |
|---|
| 265 | 'ピピピ' => 'chara_03', |
|---|
| 266 | 'トイレ' => 'j_027', |
|---|
| 267 | 'ディナー' => 'dinner', |
|---|
| 268 | 'バー' => 'j_028', |
|---|
| 269 | 'ワイングラス' => 'j_136', |
|---|
| 270 | '湯のみ' => 'j_115', |
|---|
| 271 | 'ハイヒール' => 'j_029', |
|---|
| 272 | 'カバン' => 'j_040', |
|---|
| 273 | '遊園地' => 'j_032', |
|---|
| 274 | '音楽' => 'j_033', |
|---|
| 275 | 'アート' => 'j_034', |
|---|
| 276 | '演劇' => 'j_035', |
|---|
| 277 | 'イベント' => 'j_036', |
|---|
| 278 | 'チケット' => 'j_037', |
|---|
| 279 | 'スポーツ' => 'j_015', |
|---|
| 280 | 'モータースポーツ' => 'm_sports', |
|---|
| 281 | '波' => 'j_130', |
|---|
| 282 | '富士山' => 'j_131', |
|---|
| 283 | 'ツリー' => 'tree', |
|---|
| 284 | 'リース' => 'wreathe', |
|---|
| 285 | 'ブーツ' => 'boots', |
|---|
| 286 | '星' => 'star', |
|---|
| 287 | 'ケーキ2' => 'cake', |
|---|
| 288 | '結晶' => 'yuki', |
|---|
| 289 | '日の出' => 'hinode', |
|---|
| 290 | '鏡もち' => 'mochi', |
|---|
| 291 | 'かどまつ' => 'kadomatsu', |
|---|
| 292 | 'お年玉' => 'otoshidama', |
|---|
| 293 | '凧' => 'taco', |
|---|
| 294 | '牡羊座' => 'j_003', |
|---|
| 295 | '牡牛座' => 'j_004', |
|---|
| 296 | '双子座' => 'j_005', |
|---|
| 297 | '蟹座' => 'j_006', |
|---|
| 298 | '獅子座' => 'j_007', |
|---|
| 299 | '乙女座' => 'j_008', |
|---|
| 300 | '天秤座' => 'j_009', |
|---|
| 301 | '蠍座' => 'j_010', |
|---|
| 302 | '射手座' => 'j_011', |
|---|
| 303 | '山羊座' => 'j_012', |
|---|
| 304 | '水瓶座' => 'j_013', |
|---|
| 305 | '魚座' => 'j_014', |
|---|
| 306 | '自動車' => 'car', |
|---|
| 307 | '路線バス' => 'bus', |
|---|
| 308 | '信号' => 'j_026', |
|---|
| 309 | 'でんしゃ' => 'train', |
|---|
| 310 | 'おうち' => 'home', |
|---|
| 311 | '地下鉄' => 'j_017', |
|---|
| 312 | '新幹線' => 'j_018', |
|---|
| 313 | '車(RV)' => 'j_019', |
|---|
| 314 | '銀行' => 'j_020', |
|---|
| 315 | 'ATM' => 'j_021', |
|---|
| 316 | 'ホテル' => 'j_022', |
|---|
| 317 | 'コンビニ' => 'j_023', |
|---|
| 318 | 'ガソリンスタンド' => 'j_024', |
|---|
| 319 | '駐車場' => 'j_025', |
|---|
| 320 | 'soon' => 'j_100', |
|---|
| 321 | 'on' => 'j_101', |
|---|
| 322 | 'end' => 'j_102', |
|---|
| 323 | 'next' => 'arrow_r', |
|---|
| 324 | 'back' => 'arrow_l', |
|---|
| 325 | 'up' => 'arrow_u', |
|---|
| 326 | 'down' => 'arrow_d', |
|---|
| 327 | '右斜め下' => 'j_044', |
|---|
| 328 | '左斜め上' => 'j_045', |
|---|
| 329 | '左斜め下' => 'j_054', |
|---|
| 330 | '右斜め上' => 'j_031', |
|---|
| 331 | '矢印左右' => 'j_128', |
|---|
| 332 | '矢印上下' => 'j_129', |
|---|
| 333 | '上向き' => 'j_080', |
|---|
| 334 | '下向き' => 'j_089', |
|---|
| 335 | '新月' => 'j_049', |
|---|
| 336 | 'やや欠け月' => 'j_050', |
|---|
| 337 | '半月' => 'j_051', |
|---|
| 338 | '三日月' => 'j_052', |
|---|
| 339 | '満月' => 'j_053', |
|---|
| 340 | '有料' => 'j_056', |
|---|
| 341 | '無料' => 'j_057', |
|---|
| 342 | 'OK' => 'i06', |
|---|
| 343 | 'OK' => 'j_077', |
|---|
| 344 | 'NG' => 'j_117', |
|---|
| 345 | 'ID' => 'j_058', |
|---|
| 346 | '次項有' => 'j_060', |
|---|
| 347 | 'クリア' => 'j_061', |
|---|
| 348 | 'NEW' => 'j_063', |
|---|
| 349 | '旗' => 'j_064', |
|---|
| 350 | 'フリーダイヤル' => 'j_065', |
|---|
| 351 | 'シャープダイヤル' => 'j_066', |
|---|
| 352 | '1' => 'j_067', |
|---|
| 353 | '2' => 'j_068', |
|---|
| 354 | '3' => 'j_069', |
|---|
| 355 | '4' => 'j_070', |
|---|
| 356 | '5' => 'j_071', |
|---|
| 357 | '6' => 'j_072', |
|---|
| 358 | '7' => 'j_073', |
|---|
| 359 | '8' => 'j_074', |
|---|
| 360 | '9' => 'j_075', |
|---|
| 361 | 'ゼロ' => 'j_076', |
|---|
| 362 | '禁止' => 'j_124', |
|---|
| 363 | '空室' => 'j_125', |
|---|
| 364 | '合格' => 'j_126', |
|---|
| 365 | '満室' => 'j_127', |
|---|
| 366 | '危険' => 'j_123', |
|---|
| 367 | '車椅子' => 'j_048', |
|---|
| 368 | '喫煙' => 'j_038', |
|---|
| 369 | '禁煙' => 'j_039', |
|---|
| 370 | '虫眼鏡' => 'j_062', |
|---|
| 371 | 'パスワード' => 'j_059', |
|---|
| 372 | 'クリップ' => 'j_118', |
|---|
| 373 | 'コピーライト' => 'j_119', |
|---|
| 374 | 'トレードマーク' => 'j_120', |
|---|
| 375 | 'リサイクル' => 'j_121', |
|---|
| 376 | 'レジスタードトレードマーク' => 'j_122', |
|---|
| 377 | ); |
|---|
| 378 | |
|---|
| 379 | sub replace { |
|---|
| 380 | my ($self, $text, $base) = @_; |
|---|
| 381 | |
|---|
| 382 | $text =~ s#\[:(.*?):\]#"<img src=\"$base/emoji/$EMOJI_SET{$1}.gif\" alt=\"$1\" />" || $1#eg; |
|---|
| 383 | |
|---|
| 384 | $text; |
|---|
| 385 | } |
|---|
| 386 | |
|---|
| 387 | 1; |
|---|
| 388 | __END__ |
|---|
| 389 | |
|---|
| 390 | =head1 NAME |
|---|
| 391 | |
|---|
| 392 | Plagger::Plugin::Filter::JugemEmoji - Expand Jugem emoji notations to HTML img elements |
|---|
| 393 | |
|---|
| 394 | =head1 SYNOPSIS |
|---|
| 395 | |
|---|
| 396 | - module: Filter::JugemEmoji |
|---|
| 397 | |
|---|
| 398 | =head1 DESCRIPTION |
|---|
| 399 | |
|---|
| 400 | Expand Jugem emoji notations to HTML img elements. |
|---|
| 401 | |
|---|
| 402 | =head1 AUTHOR |
|---|
| 403 | |
|---|
| 404 | Mayuki Sawatari |
|---|
| 405 | |
|---|
| 406 | =head1 SEE ALSO |
|---|
| 407 | |
|---|
| 408 | L<Plagger> |
|---|
| 409 | |
|---|
| 410 | =cut |
|---|