最新が 1.5.0_pre0 になってたので調査 (自分用のメモなので読みにくくてもゴメンなさいってことで)
Prototype.js 1.4.0 からの変更点
CHANGELOG より
- String.prototype.truncateを追加
- String.prototype.gsub, String.prototype.sub, String.prototype.scan を追加。
- Template クラスを追加。
- $$ 関数を追加。
- Selector クラスを追加。
- Element.childOf を追加。
- String.prototype.inspect を修正。
- String.prototype.strip を追加。
String
String.prototype.truncate
文章を短くする。
var text = 'とっても長い文章です。読むのがわずらわしいです。概要だけを捕らえたいため短くしたいと思います。'; // 元の文章を確認 alert(text.inspect()); alert(text.length); // 短くする。('...' を含んで30文字) alert(text.truncate().inspect()); alert(text.truncate().length); // 短くする。('...' を含んで10文字) alert(text.truncate(10).inspect()); alert(text.truncate(10).length); // 短くする。('<以下略>' を含む10文字 alert(text.truncate(10, ' <以下略>').inspect()); alert(text.truncate(10, ' <以下略>').length);
String.prototype.gsub
文字列全体を置換する。
var text = '天野 山下 勝野 天野 山下 勝野'; alert(text); var replacer1 = function(t){ return '<b>' + t + '</b>';}; var replacer2 = '<b>天野</b>'; var replacer3 = '<b>#{1}</b><b>#{2}</b>'; alert(text.gsub('天野', replacer1)); alert(text.gsub('天野', replacer2)); alert(text.gsub('(天)(.)', replacer3));
String.prototype.sub
文字列の最初にマッチする箇所を置換する。
var text = '天野 山下 勝野 天野 山下 勝野'; alert(text); var replacer1 = function(t){ return '<b>' + t + '</b>';}; var replacer2 = '<b>天野</b>'; var replacer3 = '<b>#{1}</b><b>#{2}</b>'; alert(text.sub('天野', replacer1)); alert(text.sub('天野', replacer2)); alert(text.sub('(天)(.)', replacer3));
String.prototype.scan
文章からマッチする文字列を抽出する。
var text = '天野 山下 勝野 天野 山下 勝野'; text.scan('天.', alert);
String.prototype.strip
文章の前後のスペース (改行、タブ、スペース) を削除する。
var text = ' \n\t \n\ttext \n\t \n\ttext \n\t \n\t'; // 元の文章を確認 alert(text); alert(text.length); // スペースを削除 alert(text.strip()); alert(text.strip().length);
$$
Event.observe(window, 'load', function() { // CSS ライクなセレクタを指定する(複数可)。 var elements = $$('div.class1 div.class2', '#id .class3'); for(var i = 0, len = elements.length; i < len; i ++) { alert(elements[i]); } });
Selector
CSS ライクのセレクタ(ひとつのトークン)で要素を選択する。
Event.observe(window, 'load', function() { // CSS ライクなセレクタを指定する(ひとつのトークンだけ)。 var selector = new Selector('div.class1.class2'); // selector にスコープとなる要素を指定する。(省略時はスコープを document とする。) var elements = selector.findElements(document.body); for(var i = 0, len = elements.length; i < len; i ++) { alert(elements[i]); } });
Template
簡易テンプレートエンジン
var template1 = new Template('僕の名前は#{name}です。趣味は#{hobby}です。\\#{gufufu}'); var message1 = template1.evaluate({ name: '天野', hobby: '勉強' }); var message2 = template1.evaluate({ name: '山下', hobby: '遊ぶこと' }); alert(message1); alert(message2); var template2 = new Template('僕の名前は*nameです。趣味は*hobbyです。\\*gufufu', /(^|.|\r|\n)(\*([a-zA-Z_]+))/); var message3 = template2.evaluate({ name: '勝野', hobby: 'バンド' }); var message4 = template2.evaluate({ name: '龍之介', hobby: '女と遊ぶこと' }); alert(message3); alert(message4);
Element
Element.childOf
要素がある要素の子孫に当たるかを調べる。
Event.observe(window, 'load', function() { // 要素の ID を指定する。 var result = Element.childOf('element_id', 'parent_id'); alert(result); var element = $('element_id'); var parent = $('parent_id'); // 要素のオブジェクトを指定する。 result = Element.childOf(element, parent); alert(result); });