kopia lustrzana https://github.com/backface/turtlestitch
added (Bernat's) JSON parser to SPLIT block
rodzic
05a8c5bdfc
commit
56c5971aae
|
@ -6,6 +6,7 @@
|
|||
* Store: tweaked format for serializing atomic data lists
|
||||
* Morphic: added option to include alpha in color comparison
|
||||
* Objects: fixed "set pen color (color picker)" to observe, i.e. overwrite transparency
|
||||
* Lists, Threads, Objects: added (Bernat's) JSON parser to SPLIT block
|
||||
|
||||
### 2019-01-08
|
||||
* Objects: automatically parse csv files on import, experimental "raw data" and "parse" ops
|
||||
|
|
|
@ -6,12 +6,12 @@
|
|||
<link rel="shortcut icon" href="src/favicon.ico">
|
||||
<script type="text/javascript" src="src/morphic.js?version=2019-01-09"></script>
|
||||
<script type="text/javascript" src="src/widgets.js?version=2018-10-02"></script>
|
||||
<script type="text/javascript" src="src/blocks.js?version=2019-01-04"></script>
|
||||
<script type="text/javascript" src="src/threads.js?version=2019-01-08"></script>
|
||||
<script type="text/javascript" src="src/blocks.js?version=2019-01-09"></script>
|
||||
<script type="text/javascript" src="src/threads.js?version=2019-01-09"></script>
|
||||
<script type="text/javascript" src="src/objects.js?version=2019-01-09"></script>
|
||||
<script type="text/javascript" src="src/gui.js?version=2019-01-02"></script>
|
||||
<script type="text/javascript" src="src/paint.js?version=2018-10-02"></script>
|
||||
<script type="text/javascript" src="src/lists.js?version=2019-01-08"></script>
|
||||
<script type="text/javascript" src="src/lists.js?version=2019-01-09"></script>
|
||||
<script type="text/javascript" src="src/byob.js?version=2018-11-12"></script>
|
||||
<script type="text/javascript" src="src/tables.js?version=2018-10-02"></script>
|
||||
<script type="text/javascript" src="src/symbols.js?version=2018-10-02"></script>
|
||||
|
|
|
@ -148,7 +148,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
|
|||
|
||||
// Global stuff ////////////////////////////////////////////////////////
|
||||
|
||||
modules.blocks = '2019-January-08';
|
||||
modules.blocks = '2019-January-09';
|
||||
|
||||
var SyntaxElementMorph;
|
||||
var BlockMorph;
|
||||
|
@ -1046,7 +1046,8 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
|
|||
'line' : ['line'],
|
||||
'tab' : ['tab'],
|
||||
'cr' : ['cr'],
|
||||
'csv' : ['csv']
|
||||
'csv' : ['csv'],
|
||||
'json' : ['json']
|
||||
/*
|
||||
'csv records' : ['csv records'],
|
||||
'csv fields' : ['csv fields']
|
||||
|
|
|
@ -62,7 +62,7 @@ CellMorph, ArrowMorph, MenuMorph, snapEquals, Morph, isNil, localize, isString,
|
|||
MorphicPreferences, TableDialogMorph, SpriteBubbleMorph, SpeechBubbleMorph,
|
||||
TableFrameMorph, TableMorph, Variable, isSnapObject*/
|
||||
|
||||
modules.lists = '2019-January-08';
|
||||
modules.lists = '2019-January-09';
|
||||
|
||||
var List;
|
||||
var ListWatcherMorph;
|
||||
|
|
|
@ -62,7 +62,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy,
|
|||
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
|
||||
TableFrameMorph, ColorSlotMorph, isSnapObject, Map*/
|
||||
|
||||
modules.threads = '2019-January-08';
|
||||
modules.threads = '2019-January-09';
|
||||
|
||||
var ThreadManager;
|
||||
var Process;
|
||||
|
@ -2780,6 +2780,8 @@ Process.prototype.reportTextSplit = function (string, delimiter) {
|
|||
break;
|
||||
case 'csv':
|
||||
return this.parseCSV(string);
|
||||
case 'json':
|
||||
return this.parseJSON(string);
|
||||
/*
|
||||
case 'csv records':
|
||||
return this.parseCSVrecords(string);
|
||||
|
@ -2910,6 +2912,32 @@ Process.prototype.parseCSVfields = function (text) {
|
|||
};
|
||||
*/
|
||||
|
||||
Process.prototype.parseJSON = function (string) {
|
||||
// Bernat's original Snapi contribution
|
||||
function listify(jsonObject) {
|
||||
if (jsonObject instanceof Array) {
|
||||
return new List(
|
||||
jsonObject.map(function(eachElement) {
|
||||
return listify(eachElement);
|
||||
})
|
||||
);
|
||||
} else if (jsonObject instanceof Object) {
|
||||
return new List(
|
||||
Object.keys(jsonObject).map(function(eachKey) {
|
||||
return new List([
|
||||
eachKey,
|
||||
listify(jsonObject[eachKey])
|
||||
]);
|
||||
})
|
||||
);
|
||||
} else {
|
||||
return jsonObject;
|
||||
}
|
||||
}
|
||||
|
||||
return listify(JSON.parse(string));
|
||||
};
|
||||
|
||||
// Process debugging
|
||||
|
||||
Process.prototype.alert = function (data) {
|
||||
|
|
Ładowanie…
Reference in New Issue