kopia lustrzana https://github.com/backface/turtlestitch
separated extension primitives from extension dropdown menus
rodzic
a55bd02eeb
commit
990911b295
|
@ -14,6 +14,7 @@
|
||||||
* tweaked make-variables library
|
* tweaked make-variables library
|
||||||
* tweaked strings library
|
* tweaked strings library
|
||||||
* extensions: added color library dropdown menu
|
* extensions: added color library dropdown menu
|
||||||
|
* blocks, threads, extensions: separated extension primitives from extension dropdown menus
|
||||||
|
|
||||||
### 2021-06-17
|
### 2021-06-17
|
||||||
* extensions: added APL extension primitives
|
* extensions: added APL extension primitives
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
<script src="src/morphic.js?version=2021-02-10"></script>
|
<script src="src/morphic.js?version=2021-02-10"></script>
|
||||||
<script src="src/symbols.js?version=2021-03-03"></script>
|
<script src="src/symbols.js?version=2021-03-03"></script>
|
||||||
<script src="src/widgets.js?version=2021-01-05"></script>
|
<script src="src/widgets.js?version=2021-01-05"></script>
|
||||||
<script src="src/blocks.js?version=2021-06-15"></script>
|
<script src="src/blocks.js?version=2021-06-18"></script>
|
||||||
<script src="src/threads.js?version=2021-06-17"></script>
|
<script src="src/threads.js?version=2021-06-18"></script>
|
||||||
<script src="src/objects.js?version=2021-06-14"></script>
|
<script src="src/objects.js?version=2021-06-14"></script>
|
||||||
<script src="src/gui.js?version=2021-06-14"></script>
|
<script src="src/gui.js?version=2021-06-14"></script>
|
||||||
<script src="src/paint.js?version=2020-05-17"></script>
|
<script src="src/paint.js?version=2020-05-17"></script>
|
||||||
|
|
|
@ -158,7 +158,7 @@ CustomCommandBlockMorph, ToggleButtonMorph, DialMorph, SnapExtensions*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.blocks = '2021-June-15';
|
modules.blocks = '2021-June-18';
|
||||||
|
|
||||||
var SyntaxElementMorph;
|
var SyntaxElementMorph;
|
||||||
var BlockMorph;
|
var BlockMorph;
|
||||||
|
@ -9329,7 +9329,7 @@ InputSlotMorph.prototype.messagesReceivedMenu = function (searching) {
|
||||||
|
|
||||||
InputSlotMorph.prototype.primitivesMenu = function () {
|
InputSlotMorph.prototype.primitivesMenu = function () {
|
||||||
var dict = {},
|
var dict = {},
|
||||||
allNames = Array.from(SnapExtensions.keys());
|
allNames = Array.from(SnapExtensions.primitives.keys());
|
||||||
|
|
||||||
allNames.sort().forEach(name =>
|
allNames.sort().forEach(name =>
|
||||||
dict[name] = name
|
dict[name] = name
|
||||||
|
|
|
@ -34,7 +34,10 @@ modules.extensions = '2021-June-18';
|
||||||
|
|
||||||
// Global stuff
|
// Global stuff
|
||||||
|
|
||||||
var SnapExtensions = new Map();
|
var SnapExtensions = {
|
||||||
|
primitives: new Map(),
|
||||||
|
menus: new Map()
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SnapExtensions is a global dictionary of named functions which appear
|
SnapExtensions is a global dictionary of named functions which appear
|
||||||
|
@ -62,42 +65,42 @@ var SnapExtensions = new Map();
|
||||||
|
|
||||||
// errors & exceptions (err_):
|
// errors & exceptions (err_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'err_error(msg)',
|
'err_error(msg)',
|
||||||
function (msg) {
|
function (msg) {
|
||||||
throw new Error(msg);
|
throw new Error(msg);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'err_try(cmd, catch, err)',
|
'err_try(cmd, catch, err)',
|
||||||
function (action, exception, errVarName, proc) {
|
function (action, exception, errVarName, proc) {
|
||||||
proc.tryCatch(action, exception, errVarName);
|
proc.tryCatch(action, exception, errVarName);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'err_reset',
|
'err_reset',
|
||||||
function (proc) {
|
function (proc) {
|
||||||
proc.resetErrorHandling();
|
proc.resetErrorHandling();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'err_ignore',
|
'err_ignore',
|
||||||
nop
|
nop
|
||||||
);
|
);
|
||||||
|
|
||||||
// list utils (lst_):
|
// list utils (lst_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'lst_sort(list, fn)',
|
'lst_sort(list, fn)',
|
||||||
function (data, fn, proc) {
|
function (data, fn, proc) {
|
||||||
return proc.reportAtomicSort(data, fn);
|
return proc.reportAtomicSort(data, fn);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'lst_linked(list)',
|
'lst_linked(list)',
|
||||||
function (data) {
|
function (data) {
|
||||||
return data.isLinked;
|
return data.isLinked;
|
||||||
|
@ -106,14 +109,14 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// text utils (txt_):
|
// text utils (txt_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'txt_lowercase(txt)',
|
'txt_lowercase(txt)',
|
||||||
function (txt) {
|
function (txt) {
|
||||||
return txt.toLowerCase();
|
return txt.toLowerCase();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'txt_indexof(sub, txt)',
|
'txt_indexof(sub, txt)',
|
||||||
function (sub, txt) {
|
function (sub, txt) {
|
||||||
return txt.indexOf(sub) + 1;
|
return txt.indexOf(sub) + 1;
|
||||||
|
@ -122,7 +125,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// data sciene & frequency distribution analysis (dta_):
|
// data sciene & frequency distribution analysis (dta_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'dta_analyze(list)',
|
'dta_analyze(list)',
|
||||||
function (list) {
|
function (list) {
|
||||||
var dict = new Map(),
|
var dict = new Map(),
|
||||||
|
@ -144,14 +147,14 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'dta_group(list, fn)',
|
'dta_group(list, fn)',
|
||||||
function (data, fn, proc) {
|
function (data, fn, proc) {
|
||||||
return proc.reportAtomicGroup(data, fn);
|
return proc.reportAtomicGroup(data, fn);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'dta_transpose(list)',
|
'dta_transpose(list)',
|
||||||
function (data, proc) {
|
function (data, proc) {
|
||||||
proc.assertType(data, 'list');
|
proc.assertType(data, 'list');
|
||||||
|
@ -159,7 +162,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'dta_crossproduct(list)',
|
'dta_crossproduct(list)',
|
||||||
function (data, proc) {
|
function (data, proc) {
|
||||||
proc.assertType(data, 'list');
|
proc.assertType(data, 'list');
|
||||||
|
@ -169,63 +172,63 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// World map (map_):
|
// World map (map_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_zoom',
|
'map_zoom',
|
||||||
function () {
|
function () {
|
||||||
return this.parentThatIsA(StageMorph).worldMap.zoom;
|
return this.parentThatIsA(StageMorph).worldMap.zoom;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_zoom(n)',
|
'map_zoom(n)',
|
||||||
function (num) {
|
function (num) {
|
||||||
this.parentThatIsA(StageMorph).worldMap.setZoom(num);
|
this.parentThatIsA(StageMorph).worldMap.setZoom(num);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_lon(x)',
|
'map_lon(x)',
|
||||||
function (x) {
|
function (x) {
|
||||||
return this.parentThatIsA(StageMorph).worldMap.lonFromSnapX(x);
|
return this.parentThatIsA(StageMorph).worldMap.lonFromSnapX(x);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_lat(y)',
|
'map_lat(y)',
|
||||||
function (y) {
|
function (y) {
|
||||||
return this.parentThatIsA(StageMorph).worldMap.latFromSnapY(y);
|
return this.parentThatIsA(StageMorph).worldMap.latFromSnapY(y);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_view(lon, lat)',
|
'map_view(lon, lat)',
|
||||||
function (lon, lat) {
|
function (lon, lat) {
|
||||||
this.parentThatIsA(StageMorph).worldMap.setView(lon, lat);
|
this.parentThatIsA(StageMorph).worldMap.setView(lon, lat);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_y(lat)',
|
'map_y(lat)',
|
||||||
function (lat) {
|
function (lat) {
|
||||||
return this.parentThatIsA(StageMorph).worldMap.snapYfromLat(lat);
|
return this.parentThatIsA(StageMorph).worldMap.snapYfromLat(lat);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_x(lon)',
|
'map_x(lon)',
|
||||||
function (lon) {
|
function (lon) {
|
||||||
return this.parentThatIsA(StageMorph).worldMap.snapXfromLon(lon);
|
return this.parentThatIsA(StageMorph).worldMap.snapXfromLon(lon);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_pan(x, y)',
|
'map_pan(x, y)',
|
||||||
function (x, y) {
|
function (x, y) {
|
||||||
this.parentThatIsA(StageMorph).worldMap.panBy(x, y);
|
this.parentThatIsA(StageMorph).worldMap.panBy(x, y);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_dist(lat1, lon1, lat2, lon2)',
|
'map_dist(lat1, lon1, lat2, lon2)',
|
||||||
function (lat1, lon1, lat2, lon2) {
|
function (lat1, lon1, lat2, lon2) {
|
||||||
return this.parentThatIsA(StageMorph).worldMap.distanceInKm(
|
return this.parentThatIsA(StageMorph).worldMap.distanceInKm(
|
||||||
|
@ -237,7 +240,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_update',
|
'map_update',
|
||||||
function () {
|
function () {
|
||||||
var stage = this.parentThatIsA(StageMorph);
|
var stage = this.parentThatIsA(StageMorph);
|
||||||
|
@ -246,14 +249,14 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_loaded',
|
'map_loaded',
|
||||||
function () {
|
function () {
|
||||||
return !this.parentThatIsA(StageMorph).worldMap.loading;
|
return !this.parentThatIsA(StageMorph).worldMap.loading;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_costume',
|
'map_costume',
|
||||||
function () {
|
function () {
|
||||||
return new Costume(
|
return new Costume(
|
||||||
|
@ -263,7 +266,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'map_style(name)',
|
'map_style(name)',
|
||||||
function (name) {
|
function (name) {
|
||||||
this.parentThatIsA(StageMorph).worldMap.setHost(name);
|
this.parentThatIsA(StageMorph).worldMap.setHost(name);
|
||||||
|
@ -272,7 +275,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// text-to-speech (tts_):
|
// text-to-speech (tts_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'tts_speak(txt, lang, pitch, rate)',
|
'tts_speak(txt, lang, pitch, rate)',
|
||||||
function (msg, accent, pitch, rate) {
|
function (msg, accent, pitch, rate) {
|
||||||
var utter = new SpeechSynthesisUtterance(msg),
|
var utter = new SpeechSynthesisUtterance(msg),
|
||||||
|
@ -288,7 +291,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// XHR:
|
// XHR:
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'xhr_request(mth, url, dta, hdrs)',
|
'xhr_request(mth, url, dta, hdrs)',
|
||||||
function (method, url, data, headers, proc) {
|
function (method, url, data, headers, proc) {
|
||||||
var response, i, header;
|
var response, i, header;
|
||||||
|
@ -317,7 +320,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// Geo-location (geo_):
|
// Geo-location (geo_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'geo_location(acc?)',
|
'geo_location(acc?)',
|
||||||
function (includeAccuracy) {
|
function (includeAccuracy) {
|
||||||
var crd = new List(),
|
var crd = new List(),
|
||||||
|
@ -354,7 +357,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// MediaComp (mda_)
|
// MediaComp (mda_)
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'mda_snap',
|
'mda_snap',
|
||||||
function () {
|
function () {
|
||||||
var camDialog,
|
var camDialog,
|
||||||
|
@ -374,7 +377,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'mda_record',
|
'mda_record',
|
||||||
function () {
|
function () {
|
||||||
var soundRecorder,
|
var soundRecorder,
|
||||||
|
@ -403,7 +406,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// Database (db_):
|
// Database (db_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'db_store(key, val)',
|
'db_store(key, val)',
|
||||||
function (key, value, proc) {
|
function (key, value, proc) {
|
||||||
proc.assertType(key, ['text', 'number']);
|
proc.assertType(key, ['text', 'number']);
|
||||||
|
@ -412,7 +415,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'db_getall',
|
'db_getall',
|
||||||
function () {
|
function () {
|
||||||
var str = window.localStorage,
|
var str = window.localStorage,
|
||||||
|
@ -430,7 +433,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'db_remove(key)',
|
'db_remove(key)',
|
||||||
function (key, proc) {
|
function (key, proc) {
|
||||||
proc.assertType(key, ['text', 'number']);
|
proc.assertType(key, ['text', 'number']);
|
||||||
|
@ -438,7 +441,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'db_get(key)',
|
'db_get(key)',
|
||||||
function (key) {
|
function (key) {
|
||||||
var str = window.localStorage,
|
var str = window.localStorage,
|
||||||
|
@ -452,7 +455,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// Object properties (obj_):
|
// Object properties (obj_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'obj_name(obj, name)',
|
'obj_name(obj, name)',
|
||||||
function (obj, name, proc) {
|
function (obj, name, proc) {
|
||||||
var ide = this.parentThatIsA(IDE_Morph);
|
var ide = this.parentThatIsA(IDE_Morph);
|
||||||
|
@ -475,7 +478,7 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// Variables (var_):
|
// Variables (var_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'var_declare(scope, name)',
|
'var_declare(scope, name)',
|
||||||
function (scope, name, proc) {
|
function (scope, name, proc) {
|
||||||
var ide, frame;
|
var ide, frame;
|
||||||
|
@ -499,7 +502,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'var_delete(name)',
|
'var_delete(name)',
|
||||||
function (name, proc) {
|
function (name, proc) {
|
||||||
var local;
|
var local;
|
||||||
|
@ -516,7 +519,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'var_get(name)',
|
'var_get(name)',
|
||||||
function (name, proc) {
|
function (name, proc) {
|
||||||
proc.assertType(name, 'text');
|
proc.assertType(name, 'text');
|
||||||
|
@ -524,7 +527,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'var_set(name, val)',
|
'var_set(name, val)',
|
||||||
function (name, val, proc) {
|
function (name, val, proc) {
|
||||||
var local;
|
var local;
|
||||||
|
@ -537,7 +540,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'var_show(name)',
|
'var_show(name)',
|
||||||
function (name, proc) {
|
function (name, proc) {
|
||||||
proc.doShowVar(
|
proc.doShowVar(
|
||||||
|
@ -549,7 +552,7 @@ SnapExtensions.set(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'var_hide(name)',
|
'var_hide(name)',
|
||||||
function (name, proc) {
|
function (name, proc) {
|
||||||
proc.doHideVar(
|
proc.doHideVar(
|
||||||
|
@ -564,7 +567,7 @@ SnapExtensions.set(
|
||||||
// IDE (ide_):
|
// IDE (ide_):
|
||||||
// not needed right now, commented out for possibly later
|
// not needed right now, commented out for possibly later
|
||||||
/*
|
/*
|
||||||
SnapExtensions.set(
|
SnapExtensions.primitives.set(
|
||||||
'ide_refreshpalette(name)',
|
'ide_refreshpalette(name)',
|
||||||
function (name) {
|
function (name) {
|
||||||
var ide = this.parentThatIsA(IDE_Morph);
|
var ide = this.parentThatIsA(IDE_Morph);
|
||||||
|
@ -579,8 +582,8 @@ SnapExtensions.set(
|
||||||
|
|
||||||
// Brian's colors (sigh, clr_):
|
// Brian's colors (sigh, clr_):
|
||||||
|
|
||||||
SnapExtensions.set(
|
SnapExtensions.menus.set(
|
||||||
'clr_menu',
|
'clr_numbers',
|
||||||
function () {
|
function () {
|
||||||
var menuName = this.parent.inputs()[0].evaluate(), // first slot
|
var menuName = this.parent.inputs()[0].evaluate(), // first slot
|
||||||
output,
|
output,
|
||||||
|
|
|
@ -62,7 +62,7 @@ isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, BLACK,
|
||||||
TableFrameMorph, ColorSlotMorph, isSnapObject, newCanvas, Symbol, SVG_Costume,
|
TableFrameMorph, ColorSlotMorph, isSnapObject, newCanvas, Symbol, SVG_Costume,
|
||||||
SnapExtensions*/
|
SnapExtensions*/
|
||||||
|
|
||||||
modules.threads = '2021-June-17';
|
modules.threads = '2021-June-18';
|
||||||
|
|
||||||
var ThreadManager;
|
var ThreadManager;
|
||||||
var Process;
|
var Process;
|
||||||
|
@ -819,7 +819,7 @@ Process.prototype.doApplyExtension = function (prim, args) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Process.prototype.reportApplyExtension = function (prim, args) {
|
Process.prototype.reportApplyExtension = function (prim, args) {
|
||||||
var ext = SnapExtensions.get(prim);
|
var ext = SnapExtensions.primitives.get(prim);
|
||||||
if (isNil(ext)) {
|
if (isNil(ext)) {
|
||||||
throw new Error('missing / unspecified extension: ' + prim);
|
throw new Error('missing / unspecified extension: ' + prim);
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue