thash / ravy Goto Github PK
View Code? Open in Web Editor NEWThis project forked from soplana/ravy
javascriptでrubyのメソッドが使いたい
This project forked from soplana/ravy
javascriptでrubyのメソッドが使いたい
/************************************************************** * * Ravy.js v0.0.1 * * ----- Support ------------------- * Browser : Chrome, Firefox, Safari, Opera (latest version) * OS : Mac OS X 10.6.8~ * node.js : v0.4.8~ * * ----- Contact ------------------ * Twitter : https://twitter.com/#!/soplana * * ----- license ------------------ * free * *************************************************************/ // how to use /* html : <script type="text/javascript" src="Ravy.js"></script> <script type="text/javascript"> function onloadEvent(){ require_ravy(); }; </script> node.js require.paths.push("/Users/user_name/ravy"); // Ravy.js directory path require("Ravy"); require_ravy(); */ /*=============== Methods ======================= Number.prototype.times Number.prototype.next Number.prototype.prev Number.prototype.class_name Array.prototype.each Array.prototype.each_with_index Array.prototype.to_a Array.prototype.uniq Array.prototype.include Array.prototype.each_slice Array.prototype.inject Array.prototype.select Array.prototype.size Array.prototype.correct Array.prototype.one Array.prototype.all Array.prototype.clone Array.prototype.class_name Hash.prototype.to_a Hash.prototype.each_with_index Hash.prototype.each Hash.prototype.each_slice Hash.prototype.merge Hash.prototype.inject Hash.prototype.select Hash.prototype.keys Hash.prototype.values Hash.prototype.include Hash.prototype.size Hash.prototype.correct Hash.prototype.one Hash.prototype.all Hash.prototype.to_obj Hash.prototype.clone Hash.prototype.class_name String.prototype.to_a String.prototype.gsub String.prototype.include String.prototype.scan String.prototype.reverse String.prototype.chomp String.prototype.class_name Function.prototype.class_name */ /*=============== Sample code ===================*/ require.paths.push("/Users/kanaya/node"); require("Ravy"); require_ravy(); // Number.prototype.times console.log( "== Number.prototype.times ==" ); var num = 5; num.times(function(index){ console.log(index) }); /* > 0 > 1 > 2 > 3 > 4 */ // Number.prototype.next console.log( "== Number.prototype.next ==" ); var a = 10; var b = 0; var c = -10; console.log( a.next(10) ) // > 20 console.log( b.next(10) ) // > 10 console.log( c.next(10) ) // > 0 console.log( a.next() ) // > 11 console.log( b.next() ) // > 1 console.log( c.next() ) // > -9 // Number.prototype.prev console.log( "== Number.prototype.prev ==" ); var a = 10; var b = 0; var c = -10; console.log( a.prev(10) ) // > 0 console.log( b.prev(10) ) // > -10 console.log( c.prev(10) ) // > -20 console.log( a.prev() ) // > 9 console.log( b.prev() ) // > -1 console.log( c.prev() ) // > -11 // Number.prototype.class_name console.log( "== Number.prototype.class_name ==" ); var a = 0; console.log( a.class_name() ) // > Number // Array.prototype.each console.log( "== Array.prototype.each ==" ); ["aaa", "bbb","ccc"].each( function(i){ console.log(i); }); /* > aaa > bbb > ccc */ // Hash.prototype.each console.log( "== Hash.prototype.each ==" ); var object = {key_a : "value_a", key_b : "value_b", key_c : "value_c"}; var hash = new Hash( object ); hash.each(function(k,v){ console.log(k + " : " + v); }); /* > key_a : value_a > key_b : value_b > key_c : value_c */ // Array.prototype.each_with_index console.log( "== Array.prototype.each_with_index ==" ); ["aaa", "bbb","ccc"].each_with_index( function(rec, index){ console.log("record: " + rec + " index: " + index); }); /* > record: aaa index: 0 > record: bbb index: 1 > record: ccc index: 2 */ // Hash.prototype.each_with_index console.log( "== Hash.prototype.each_with_index ==" ); var object = {key_a : "value_a", key_b : "value_b", key_c : "value_c"}; var hash = new Hash( object ); hash.each_with_index(function(rec, index){ console.log("record: " + rec[0] + " " + rec[1] + " index: " + index); }); /* > record: key_a value_a index: 0 > record: key_b value_b index: 1 > record: key_c value_c index: 2 */ // Array.prototype.uniq console.log( "== Array.prototype.uniq ==" ); var a = [1,2,3,4,5,6,7]; var b = [1,2,3,4,5,6,7,1,2,1]; var c = [1,1,1]; var d = ["aa","bb","cc","a","aa","cc"]; var e = []; console.log(a.uniq()); // > [ 1, 2, 3, 4, 5, 6, 7 ] console.log(b.uniq()); // > [ 1, 2, 3, 4, 5, 6, 7 ] console.log(c.uniq()); // > [ 1 ] console.log(d.uniq()); // > [ 'aa', 'bb', 'cc', 'a' ] console.log(e.uniq()); // > [] // Array.prototype.include console.log( "== Array.prototype.include ==" ); var a = [1,2,3,4,5,6,7]; var b = ["aa","bb","cc","a","aa","cc"]; console.log(a.include(5)); // > true console.log(a.include(10)); // > false console.log(b.include("cc")); // > true console.log(b.include("k")); // > false // String.prototype.include console.log( "== String.prototype.include ==" ); var hoge = "hogehoge"; console.log(hoge.include("k")); // > false console.log(hoge.include("geh")); // > true console.log(hoge.include(/[1-9]/)); // > false console.log(hoge.include(/a|o/)); // > true // Array.prototype.each_slice console.log( "== Array.prototype.each_slice ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; a.each_slice(4, function( slice ){ console.log(slice); }); /* > [ 1, 2, 3, 4 ] > [ 5, 6, 7, 8 ] > [ 9, 10, 11, 12 ] > [ 13, 14 ] */ console.log( a.each_slice(4) ); /* > [ [ 1, 2, 3, 4 ], > [ 5, 6, 7, 8 ], > [ 9, 10, 11, 12 ], > [ 13, 14 ] ] */ // Hash.prototype.each_slice console.log( "== Hash.prototype.each_slice ==" ); var object = { key_a : "value_a", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "value_e", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "value_i" }; var hash = new Hash( object ); hash.each_slice(4, function(rec){ console.log( rec ); }); /* > [ [ 'key_a', 'value_a' ], > [ 'key_b', 'value_b' ], > [ 'key_c', 'value_c' ], > [ 'key_d', 'value_d' ] ] > [ [ 'key_e', 'value_e' ], > [ 'key_f', 'value_f' ], > [ 'key_g', 'value_g' ], > [ 'key_h', 'value_h' ] ] > [ [ 'key_i', 'value_i' ] ] */ console.log( hash.each_slice(4) ); /* > [ [ [ 'key_a', 'value_a' ], > [ 'key_b', 'value_b' ], > [ 'key_c', 'value_c' ], > [ 'key_d', 'value_d' ] ], > [ [ 'key_e', 'value_e' ], > [ 'key_f', 'value_f' ], > [ 'key_g', 'value_g' ], > [ 'key_h', 'value_h' ] ], > [ [ 'key_i', 'value_i' ] ] ] */ // Array.prototype.inject console.log( "== Array.prototype.inject ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; console.log( a.inject([], function(list, record){ if(record%2 == 0) list.push(record * 100) }) ); // > [ 200, 400, 600, 800, 1000, 1200, 1400 ] console.log( a.inject("", function(str, record){ return str += (record*10).toString() }) ); // > 102030405060708090100110120130140 // Hash.prototype.inject console.log( "== Hash.prototype.inject ==" ); var object = { key_a : "value_a", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "value_e", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "value_i" }; var hash = new Hash( object ); console.log( hash.inject({}, function(obj, record){ obj["hoge_"+record[0]]="hoge_"+record[1]}) ); /* > { hoge_key_a: 'hoge_value_a', > hoge_key_b: 'hoge_value_b', > hoge_key_c: 'hoge_value_c', > hoge_key_d: 'hoge_value_d', > hoge_key_e: 'hoge_value_e', > hoge_key_f: 'hoge_value_f', > hoge_key_g: 'hoge_value_g', > hoge_key_h: 'hoge_value_h', > hoge_key_i: 'hoge_value_i' } */ console.log( hash.inject("", function(str, record){ return str += record[0]+":"+record[1]+"-"; }) ); // > key_a:value_a-key_b:value_b-key_c:value_c-key_d:value_d-key_e:value_e-key_f:value_f-key_g:value_g-key_h:value_h-key_i:value_i- // Array.prototype.select console.log( "== Array.prototype.select ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; console.log( a.select( function(record){return record%2 == 0} )); // > [ 2, 4, 6, 8, 10, 12, 14 ] // Hash.prototype.select console.log( "== Hash.prototype.select ==" ); var object = { key_a : "111", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "313", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "424", aa : "1234" }; var hash = new Hash( object ); console.log( hash.select( function(record){return record[0].include(/^key_.$/)} )); /* > { key_a: '111', > key_b: 'value_b', > key_c: 'value_c', > key_d: 'value_d', > key_e: '313', > key_f: 'value_f', > key_g: 'value_g', > key_h: 'value_h', > key_i: '424' } */ console.log( hash.select( function(record){return record[1].include(/[0-9]+/)} )); // > { key_a: '111', key_e: '313', key_i: '424', aa: '1234' } // Array.prototype.size console.log( "== Array.prototype.size ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; var b = []; console.log( a.size() ); // > 14 console.log( b.size() ); // > 0 // Hash.prototype.size console.log( "== Hash.prototype.size ==" ); var object = { key_a : "value_a", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "value_e", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "value_i" }; var hash = new Hash( object ); console.log( hash.size() ); // > 9 console.log( new Hash({}).size() ); // > 0 // Array.prototype.correct console.log( "== Array.prototype.correct ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; console.log( a.correct(function(record){return record * 10}) ); // > [ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140 ] // Hash.prototype.correct console.log( "== Hash.prototype.correct ==" ); var object = { key_a : "value_a", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "value_e", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "value_i" }; var hash = new Hash( object ); console.log( hash.correct(function(key, value){return key + " : " + value}) ); /* > [ 'key_a : value_a', > 'key_b : value_b', > 'key_c : value_c', > 'key_d : value_d', > 'key_e : value_e', > 'key_f : value_f', > 'key_g : value_g', > 'key_h : value_h', > 'key_i : value_i' ] */ // Array.prototype.one console.log( "== Array.prototype.one ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; console.log( a.one(function(record){ return record%7 == 0 }) ); // > false console.log( a.one(function(record){ return record%8 == 0 }) ); // > true // Hash.prototype.one console.log( "== Hash.prototype.one ==" ); var object = { key_a : "value_a", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "value_e", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "value_i" }; var hash = new Hash( object ); console.log( hash.one(function(key, value){ return key.include(/^key/) })); // > false console.log( hash.one(function(key, value){ return key.include(/a$/) })); // > true // Array.prototype.all console.log( "== Array.prototype.all ==" ); var a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]; console.log( a.all(function(record){ return record.class_name()=="Number" }) ); // > true console.log( a.all(function(record){ return record.toString().include(/^[0-9]*/) }) ); // > true console.log( a.all(function(record){ return record.toString().include(/^[0-9]$/) }) ); // > false // Hash.prototype.all console.log( "== Hash.prototype.all ==" ); var object = { key_a : "value_a", key_b : "value_b", key_c : "value_c", key_d : "value_d", key_e : "value_e", key_f : "value_f", key_g : "value_g", key_h : "value_h", key_i : "value_i" }; var hash = new Hash( object ); console.log( hash.all(function(key, value){ return value.class_name()=="String" })); // > true console.log( hash.all(function(key, value){ return key.include(/^key/) })); // > true console.log( hash.all(function(key, value){ return key.include(/a$/) })); // > false // Hash.prototype.merge console.log( "== Hash.prototype.merge ==" ); var hash_a = new Hash({key_a : "value_a", key_b : "value_b", key_c : "value_c", hoge : "hoge_a"}); var hash_b = new Hash({key_e : "value_e", key_d : "value_d", key_f : "value_f", hoge : "hoge_b"}); console.log( hash_a.merge(hash_b) ); /* > { key_a: 'value_a', > key_b: 'value_b', > key_c: 'value_c', > hoge: 'hoge_b', > key_e: 'value_e', > key_d: 'value_d', > key_f: 'value_f' } */ console.log( hash_a.merge({hello: "hello!!!", raby: "raby!!!"}) ); /* > { key_a: 'value_a', > key_b: 'value_b', > key_c: 'value_c', > hoge: 'hoge_a', > hello: 'hello!!!', > raby: 'raby!!!' } */ // Hash.prototype.keys console.log( "== Hash.prototype.keys ==" ); var hash = new Hash({key_a : "value_a", key_b : "value_b", key_c : "value_c", hoge : "hoge_a"}); console.log( hash.keys() ); // > [ 'key_a', 'key_b', 'key_c', 'hoge' ] // Hash.prototype.values console.log( "== Hash.prototype.values ==" ); var hash = new Hash({key_a : "value_a", key_b : "value_b", key_c : "value_c", hoge : "hoge_a"}); console.log( hash.values() ); // > [ 'value_a', 'value_b', 'value_c', 'hoge_a' ] // Hash.prototype.to_obj console.log( "== Hash.prototype.to_obj ==" ); var hash = new Hash({key_a : "value_a", key_b : "value_b", key_c : "value_c", hoge : "hoge_a"}); console.log( hash.constructor ); // > [Function: Hash] console.log( hash.to_obj().constructor ); // > [Function: Object] console.log( hash.to_obj() ); /* { key_a: 'value_a', key_b: 'value_b', key_c: 'value_c', hoge: 'hoge_a' } */
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.