Skip to content

Instantly share code, notes, and snippets.

@ishiduca
ishiduca / gist:1195132
Created September 5, 2011 14:36
parseURI: XMLHttpClient 第2引数 に用いる配列([ url, body, headers ])に整形する関数
// "httpRequest" [ url, body, headers ]
// httpRequest = parseURI(method, uri);
function _parseQuery (uriObj) {
var buf = [];
if (! uriObj) return null;
if (typeof uriObj === 'string') return uriObj;
if (typeof uriObj === 'object') {
if (uriObj.length && uriObj.length > 0) {
uriObj.foreach(function (keyVal, i) {
@ishiduca
ishiduca / gist:1196542
Created September 6, 2011 03:58
URI.Query
function foreach (arry, func) {
var i = 0, len = arry.length;
if (len) {
for (; i < len; i += 1) {
func(arry[i], i);
}
}
}
Array.prototype.foreach = function (func) {
@ishiduca
ishiduca / gist:1197499
Created September 6, 2011 13:14
とらのあな検索の結果を ハッシュリファレンスで返す
package WWW::Search::Scrape::Toranoana;
use strict;
use utf8;
use Carp;
use Encode;
use LWP::UserAgent;
use URI;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
@ishiduca
ishiduca / gist:1207960
Created September 10, 2011 05:13
Function.test(thisObject, argsArray, forecast) の実装
// 関数の返す結果が想定した結果と同等かをチェックする test メソッド
// Func.test(thisObj, argsArray, forecast);
if (! Function.prototype.test) {
Function.prototype.test = function (that, args, forecast) {
var result = this.apply(that, args);
result = JSON.stringify(result);
forecast = JSON.stringify(forecast);
// return (result === forecast) ? true : false; 本当はこっち
@ishiduca
ishiduca / gist:1215718
Created September 14, 2011 02:22
アルファベットの大文字小文字を区別しないソート
function qw (str, cut) {
if (typeof str !== 'string') return null;
cut = cut || /\s+/;
cut = (typeof cut === 'string') ? new RegExp(cut) : cut;
return str.replace(/^\s+/,'').replace(/\s+$/,'').split(cut);
}
var ARRY = qw( " G E f b a D c " );
@ishiduca
ishiduca / gist:1225819
Created September 19, 2011 01:37
配列をソートした場合の最初もしくは最後の値を参照する
// javascriptの配列でソートした結果を取得する場合
// arrayORG.sort();
//
// すると、元々の配列(arrayORG)がソートした並びに代えられてしまって具合が良くない場合がある。
// arrayCOPY = arrayORG.sort();
//
// みたいにできないので、そういう場合には
// arrayCOPY = arrayORG.slice(0).sort();
//
// すると、arrayORGのコピーを作って、それをソートすることになるので、(コストは安くないけど)
@ishiduca
ishiduca / gist:1226332
Created September 19, 2011 11:34
Array#grep
// javascript 1.6 以上だと filteredArray = array.filter(callback[, thisObject]) を使うといい。
// 使えない場合に grep を実装する
//
// var FuncOfGrepRule = function (itemOfArray) {
// return (itemOfArray.match(/condition/)) ? true : false;
// });
//
// var newArray = orgArray.grep(FuncOfGrepRule);
//
@ishiduca
ishiduca / gist:1226478
Created September 19, 2011 13:22
Array#uniq 配列の重複した値を間引いた新しい配列を返す
// 配列の重複した値を間引いた新しい配列を返す
if (! Array.prototype.uniq) {
Array.prototype.uniq = function () {
var that = this.slice(0), len = that.length, storage = {};
for (len--; len >= 0; len--) {
if (! storage[that[len]]) {
storage[that[len]] = true;
} else {
that.splice(len, 1);
}
@ishiduca
ishiduca / gist:1229457
Created September 20, 2011 15:45
COMIC ZIN検索の結果を ハッシュリファレンスで返す
package WWW::Search::Scrape::Zin;
use strict;
use utf8;
#use Encode;
use Carp;
use URI;
use URI::Escape;
use Web::Scraper;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
@ishiduca
ishiduca / gist:1234639
Created September 22, 2011 12:16
とらのあな検索の結果を ハッシュリファレンスで返す based AnyEvent
package AnyEvent::Search::Scrape::Toranoana;
use strict;
use Carp;
use utf8;
use Encode;
use AnyEvent;
use AnyEvent::HTTP;
use URI::Escape;