Transition to using UnitJS's fun module

This commit is contained in:
Tissevert 2019-12-26 19:58:58 +01:00
parent 555e4386e3
commit bfb86a6a0d
4 changed files with 2 additions and 67 deletions

View file

@ -1,64 +0,0 @@
function Fun() {
return {
defaultCompare: defaultCompare,
insert: insert,
map: map,
mapFilter: mapFilter,
isSet: isSet,
of: of,
proj: proj
};
function insert(obj, t, compare, min, max) {
min = min == undefined ? 0 : min;
max = max == undefined ? t.length : max;
compare = compare == undefined ? defaultCompare : compare;
if(max - min < 1) {
return min;
}
var avg = Math.floor((max + min) / 2);
if (compare(obj, t[avg]) < 0) {
return insert(obj, t, compare, min, avg);
} else {
return insert(obj, t, compare, avg+1, max);
}
}
function defaultCompare(a, b) {
if(a < b) {
return -1;
} else if(a > b) {
return 1;
} else {
return 0;
}
}
function map(mapper, f) {
return function() {
var args = Array.prototype.map.call(arguments, mapper);
return f.apply(null, args);
}
}
function of(o) {
return function(key) {return o[key];};
}
function proj(key) {
return function(o) {return o[key];};
}
function mapFilter(mapper, predicate) {
return function(array) {
return array.reduce(function(accumulator, elem) {
var v = mapper(elem);
return predicate(v) ? accumulator.concat(v) : accumulator;
}, []);
};
}
function isSet(x) {
return x != undefined;
}
}

View file

@ -6,7 +6,6 @@
<script src="lib/unit.js"></script> <script src="lib/unit.js"></script>
<script src="translations.js"></script> <script src="translations.js"></script>
<script src="i18n.js"></script> <script src="i18n.js"></script>
<script src="fun.js"></script>
<script src="screen.js"></script> <script src="screen.js"></script>
<script src="save.js"></script> <script src="save.js"></script>
<script src="messaging.js"></script> <script src="messaging.js"></script>

View file

@ -1,9 +1,9 @@
window.addEventListener('load', function() { window.addEventListener('load', function() {
var dom = unitJS.Dom(); var dom = unitJS.Dom();
var async = unitJS.Async(); var async = unitJS.Async();
var fun = unitJS.Fun();
var translations = Translations(); var translations = Translations();
var i18n = I18n({translations: translations}); var i18n = I18n({translations: translations});
var fun = Fun();
var save = Save(); var save = Save();
var screen = Screen({dom: dom, i18n: i18n}); var screen = Screen({dom: dom, i18n: i18n});
var messaging = Messaging({screen: screen}); var messaging = Messaging({screen: screen});

View file

@ -242,7 +242,7 @@ Screen.Game = function(modules) {
function matchingInRiver(card) { function matchingInRiver(card) {
return modules.fun.mapFilter( return modules.fun.mapFilter(
modules.fun.of(sets.river.card), modules.fun.of(sets.river.card),
modules.fun.isSet modules.fun.defined
)(modules.hanafuda.sameMonth(card).map(modules.fun.proj('name'))); )(modules.hanafuda.sameMonth(card).map(modules.fun.proj('name')));
} }