More details here: https://developer.mozilla.org/en/docs/Simple_Firefox_build
Get Firefox' source code:
git clone https://github.com/mozilla/gecko-dev.git
git checkout fx-team
Install dependencies:
/*! Js Pub/Sub | |
* http://anasnakawa.com/ | |
* Copyright (c) Anas Nakawa | |
* inspired by Ben Alman's one <https://gist.github.com/cowboy/661855> | |
* MIT License | |
*/ | |
(function( p ) { | |
var e = p.e = {}; |
/** | |
* parse given query string url, and return it as | |
* object literal with proper type casting for primitives | |
* | |
* @param {string} url | |
* @return {object} queryString | |
* | |
* notes: | |
* - requires jQuery for linear typecasting | |
* - parameter names are all lowercased |
/** | |
* string parser with data passed as arguments | |
* | |
* @param {arguments} | |
* @return {string} | |
* | |
* example: | |
* -------- | |
* 'i used both [0] & [1], however [1] looks good so far'.parse( 'iphone', 'andoird' ); // "i used both iphone & andoird, however andoird looks good so far" | |
* 'the weather now in [0] seems to be [1]'.parse( 'Dubai', function() { return 'very hot'; }); // "the weather now in Dubai seems to be very hot" |
/** | |
* simulating constant behaviour where | |
* given value cannot be changed | |
* | |
* @param {object} target object where the constant will be defined | |
* @param {string} key | |
* @param {object} value | |
* @return {object} constant | |
* | |
* example |
// Create Base64 Object | |
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r |
More details here: https://developer.mozilla.org/en/docs/Simple_Firefox_build
Get Firefox' source code:
git clone https://github.com/mozilla/gecko-dev.git
git checkout fx-team
Install dependencies:
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
# less to scss based on http://stackoverflow.com/a/19167099/2363935 | |
namespace :convert do | |
task :less_to_scss do | |
source_glob = "assets/less/*.less" | |
dest_dir = "converted" | |
rm_r dest_dir rescue nil | |
mkdir_p(dest_dir) |
/* bling.js */ | |
window.$ = document.querySelector.bind(document); | |
window.$$ = document.querySelectorAll.bind(document); | |
Node.prototype.on = window.on = function(name, fn) { this.addEventListener(name, fn); }; | |
NodeList.prototype.__proto__ = Array.prototype; | |
NodeList.prototype.on = function(name, fn) { this.forEach((elem) => elem.on(name, fn)); }; |