Code Piece Project

(Out-In Piece)

by yasumodev

HTML

<!-- CodePieceProject -->
<textarea rows="8" cols="40" id="log">
</textarea>

JavaScript

// Sum4
//   $in  {vals:Array}
//   $out {sum:Number, progress:String}
var Sum4 = new Piece4(function($in, $out, $mem, done, fail, prog) {
  $out.sum = 0;
  for(var i in $in.vals) {
    $out.sum += $in.vals[i];
    $out.progress = (i / ($in.vals.length - 1)) * 100 + "%";
    prog();
  }
  done();
  var a = a.a;
});

Sum4.out({
	done: function(out){
    LogAdd("[onDone1] out: prog=" + out.progress + " sum=" + out.sum);
  },
  fail: function(err){
  	alert(err);
  	alert(err.out.sum);
  },
  prog: function(out){
    LogAdd("[onProg] out: prog=" + out.progress + " sum=" + out.sum);
	}
})
.in({vals:[1,2,3,4,5,6,7,8,9]});
/*
Sum4.out({
	done : function(out){
    LogAdd("[onDone2] out: 進捗=" + out.progress + " 合計=" + out.sum);
  },
  prog : null
})
.in();
*/
//===========================
// Piece4クラス
//===========================
function Piece4(fncExec) {
    var self = this;
    var $in  = {}; // input object
    var $out = {}; // output object
    var $mem = {}; // memory object
    var onDone;
    var onFail;
    var onProg;
    function done() {if(onDone) onDone($out);}
    function fail() {if(onFail) onFail($out);}
    function prog() {if(onProg) onProg($out);}
    self.in = function(obj) {
        for(var key in obj) {
            $in[key] = obj[key];
        }
        run();
        return self;
    };
    self.out = function(funcs) {
    	if(funcs){
        if(funcs.done !== undefined) onDone = funcs.done;
        if(funcs.fail !== undefined) onFail = funcs.fail;
        if(funcs.prog !== undefined) onProg = funcs.prog;
        LogAdd("out funcs set.");
      }
      return self;
    };
    self.clear = function() {
        $in  = {};
        $out = {};
        return self;
    };
    function run() {
    	try{
        LogAdd("run!");
        fncExec($in, $out, $mem, done, fail, prog);
      }catch(err){
      	err.out = $out;
        $out = err;
      	fail();
      }
    }
}
return;
/*
// Sum3
//   $in  {vals:Array}
//   $out {sum:Number, progress:String}
var...