function testParallel() { self::assertSame([123], co($this->c())); self::assertSame(['<b>123</b>'], co($this->b())); self::assertSame(['<a><b>123</b></a>'], co($this->a())); self::assertSame([123, 123], co($this->c(), $this->c())); self::assertSame([[123, 123]], co($this->d())); $start = microtime(true); list($res1, $res2, $req3) = co($this->req(1), $this->req(1), $this->req(1)); echo microtime(true) - $start; self::assertSame('1', $res1->getBody()); self::assertSame('1', $res2->getBody()); }
private static function asChainable($p) { switch (gettype($p)) { case "string": return cs($p); case "array": return ca($p); case "object": return co($p); default: if (is_object($p)) { return c($p); } else { return $p; } } }
// medisch /BMI br('302505', 'BMI', '{ "wd" : 10, "sm": "bmi", "as" : 12, "vr" : "ov", "t1" : "v126|t200", "t2" : "v50|t135", "rg" : "v15|t40", "bd" : "rk", "ku" : "3025a" }'); ui('3025a', 'BMI geef een verhouding tussen lengte en gewicht. Hiermee krijg je gemakkelijk een indcatie van onder- of over-gewicht. BMI kun je berekenen gewicht (in kg) / (lengte (in meter) * lengte) bv 90 kg en 1,9 m = 90 / (1,9 x 1,9) = 24,9 <br> intepretatie (bron: wikipedia) minder dan 18,5 ondergewicht, 18,5 tot 25 normaal gewicht, 25 tot 27 licht overgewicht, 27 tot 30 matig overgewicht, 30 tot 40 ernstig overgewicht, meer dan 40 ziekelijk overgewicht'); // eenheden co('c33', '3025', 'BMI', '{"br" : "302505"}'); //medisch develop ra('99', 'medisch rekenen'); ra('9910', 'eenheden'); ra('991010', 'inhoud'); // medisch / eenheden / liter br('99101005', 'percentage van is', '{ "wd" : 10, "sm": "pc3", "as" : 8, "vr" : "ov", "t1" : "v1|t99", "t2" : "v1|t14", "bd" : "rk", "ku" : "991010a" }'); ui('991010a', ' 1 procent (%) is 1 honderdste deel. bv 5 procent (%) = 10? 1% is dan 10 / 5 = 2. 100% = 100 x 2 = 200'); co('c99', '9910', 'is percentage van', '{"br" : "99101005"}'); // boodschappen bd('ovuh', 'bereken uit het hoofd en geef het juiste antwoord in'); bd('ovpp', 'bereken op papier en geef het juiste antwoord in'); bd('ovrk', 'bereken met rekenmachine en geef het juiste antwoord in'); bd('mkuh', 'bereken uit het hoofd en kies het juiste antwoord'); bd('mkpp', 'bereken op papier en kies het juiste antwoord'); bd('mkrk', 'bereken met rekenmachine en kies het juiste antwoord'); // schalen stap | eenheid | metrische stap | factor om naar metrische stap te komen bv 20 om van druppels naar ml // liters inhoud sc('l1', 'liter', '1|ml|1|1;2|cl|2|1;3|dl|3|1;4|l|4|1;di|1'); sc('l2', 'liter en druppels', '1|druppels|1|20;2|ml|1|1;3|cl|2|1;4|dl|3|1;di|1'); sc('l3', 'liter, cm³, cc, dm³', '1|cm³|1|1;2|cc|1|1;3|ml|1|1;4|cl|2|1;5|dl|3|1;6|l|4|1;7|dm³|4|1;di|1'); sc('g1', 'gram', '1|microgram (µg = mcg)|1|1;2|milligram (mg)|4|1;3|gram(g)|7|1;4|kilogram (kg)|10|1;di|1'); sc('g2', 'gram', '1|milligram (mg)|1|1;2|centigram(g)|2|1;3|decigram(g)|3|1;4|gram(g)|4|1;5|decagram(dag)|5|1;6|hectogram(hg)|6|1;7|kilogram (kg)|7|1;di|1'); sc('m1', 'meter', '1|millimeter (mm)|1|1;2|centimeter (cm)|2|1;3|decimeter (dm)|3|1;4|meter (m)|4|1;5|decameter (dam)|5|1;6|hectometer (hm)|6|1;7|kilometer (km)|7|1;di|1');
function co($generator) { if (is_callable($generator)) { $args = array_slice(func_get_args(), 1); $generator = call_user_func_array($generator, $args); } if (!$generator instanceof \Generator) { return toFuture($generator); } $next = function ($yield) use($generator, &$next) { if ($generator->valid()) { return co($yield)->then(function ($value) use($generator, &$next) { $yield = $generator->send($value); if ($generator->valid()) { return $next($yield); } if (method_exists($generator, "getReturn")) { $result = $generator->getReturn(); return $result === null ? $value : $result; } return $value; }, function ($e) use($generator, &$next) { return $next($generator->throw($e)); }); } else { if (method_exists($generator, "getReturn")) { return value($generator->getReturn()); } else { return value(null); } } }; return $next($generator->current()); }
// uitleg ui('303005a', 'in een tank van 10 liter is zuurstof onder 200 bar druk opgeslagen. Dat betekent dat 200 liter samen geperst wordt tot 1 liter. De tank bevat 10 x 200 = 2000 liter zuurstof. Als de meter 154 bar aangeeft dan bevat de tank 10 x 154 = 1540 liter '); // eenheden co('z01', '3030', 'zuurstof', '{"br" : "30300505"}'); // medisch /BMI br('30350505', 'BMI', '{ "wd" : 10, "sm": "bmi", "as" : 12, "vr" : "ov", "t1" : "v126|t200", "t2" : "v50|t135", "bd" : "rk", "ui" : "303505a" }'); // uitleg ui('303505a', 'BMI geef een verhouding tussen lengte en gewicht. Hiermee krijg je gemakkelijk een indcatie van onder- of over-gewicht. BMI kun je berekenen gewicht (in kg) / (lengte (in meter) * lengte) bv 90 kg en 1,9 m = 90 / (1,9 x 1,9) = 24,9 <br> intepretatie (bron: wikipedia) minder dan 18,5 ondergewicht, 18,5 tot 25 normaal gewicht, 25 tot 27 licht overgewicht, 27 tot 30 matig overgewicht, 30 tot 40 ernstig overgewicht, meer dan 40 ziekelijk overgewicht '); // eenheden co('i03', '3035', 'BMI', '{"br" : "30350505"}'); // boodschappen bd('ovuh', 'bereken uit het hoofd en geef het juiste antwoord in'); bd('ovpp', 'bereken op papier en geef het juiste antwoord in'); bd('ovrk', 'bereken met rekenmachine en geef het juiste antwoord in'); bd('mkuh', 'bereken uit het hoofd en kies het juiste antwoord'); bd('mkpp', 'bereken op papier en kies het juiste antwoord'); bd('mkrk', 'bereken met rekenmachine en kies het juiste antwoord'); // schalen stap | eenheid | metrische stap | factor om naar metrische stap te komen bv 20 om van druppels naar ml // liters inhoud sc('l1', 'liter', '1|ml|1}1;2|cl|2|1;3|dl|3|1;4|l|4|1;di|1'); sc('l2', 'liter en druppels', '1|druppels|1|20;2|ml|1|1;3|cl|2|1;4|dl|3|1;di|1'); sc('l3', 'liter cm3, cc en dm3', '1|cm3|1|1;2|cc|1|1;3|ml|1|1;4|cl|2|1;5|dl|3|1;6|l|4|1;7|dm3|4|1;di|1'); sc('g1', 'gram', '1|microgram (µg = mcg)|1|1;2|milligram (mg)|4|1;3|gram(g)|7|1;4|kilogram (kg)|10|1;di|1'); sc('g2', 'gram', '1|milligram (mg)|1|1;2|centigram(g)|2|1;3|decigram(g)|3|1;4|gram(g)|4|1;5|decagram(dag)|5|1;6|hectogram(hg)|6|1;7|kilogram (kg)|7|1;di|1'); sc('m1', 'meter', '1|millimeter (mm)|1|1;2|centimeter (cm)|2|1;3|decimeter (dm)|3|1;4|meter (m)|4|1;5|decameter (dam)|5|1;6|hectometer (hm)|6|1;7|kilometer (km)|7|1;di|1');