added (Bernat's) JSON parser to SPLIT block

pull/89/head
jmoenig 2019-01-09 11:03:43 +01:00
rodzic 05a8c5bdfc
commit 56c5971aae
5 zmienionych plików z 37 dodań i 7 usunięć

Wyświetl plik

@ -6,6 +6,7 @@
* Store: tweaked format for serializing atomic data lists * Store: tweaked format for serializing atomic data lists
* Morphic: added option to include alpha in color comparison * Morphic: added option to include alpha in color comparison
* Objects: fixed "set pen color (color picker)" to observe, i.e. overwrite transparency * 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 ### 2019-01-08
* Objects: automatically parse csv files on import, experimental "raw data" and "parse" ops * Objects: automatically parse csv files on import, experimental "raw data" and "parse" ops

Wyświetl plik

@ -6,12 +6,12 @@
<link rel="shortcut icon" href="src/favicon.ico"> <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/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/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/blocks.js?version=2019-01-09"></script>
<script type="text/javascript" src="src/threads.js?version=2019-01-08"></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/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/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/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/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/tables.js?version=2018-10-02"></script>
<script type="text/javascript" src="src/symbols.js?version=2018-10-02"></script> <script type="text/javascript" src="src/symbols.js?version=2018-10-02"></script>

Wyświetl plik

@ -148,7 +148,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.blocks = '2019-January-08'; modules.blocks = '2019-January-09';
var SyntaxElementMorph; var SyntaxElementMorph;
var BlockMorph; var BlockMorph;
@ -1046,7 +1046,8 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
'line' : ['line'], 'line' : ['line'],
'tab' : ['tab'], 'tab' : ['tab'],
'cr' : ['cr'], 'cr' : ['cr'],
'csv' : ['csv'] 'csv' : ['csv'],
'json' : ['json']
/* /*
'csv records' : ['csv records'], 'csv records' : ['csv records'],
'csv fields' : ['csv fields'] 'csv fields' : ['csv fields']

Wyświetl plik

@ -62,7 +62,7 @@ CellMorph, ArrowMorph, MenuMorph, snapEquals, Morph, isNil, localize, isString,
MorphicPreferences, TableDialogMorph, SpriteBubbleMorph, SpeechBubbleMorph, MorphicPreferences, TableDialogMorph, SpriteBubbleMorph, SpeechBubbleMorph,
TableFrameMorph, TableMorph, Variable, isSnapObject*/ TableFrameMorph, TableMorph, Variable, isSnapObject*/
modules.lists = '2019-January-08'; modules.lists = '2019-January-09';
var List; var List;
var ListWatcherMorph; var ListWatcherMorph;

Wyświetl plik

@ -62,7 +62,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy,
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color, isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph, Color,
TableFrameMorph, ColorSlotMorph, isSnapObject, Map*/ TableFrameMorph, ColorSlotMorph, isSnapObject, Map*/
modules.threads = '2019-January-08'; modules.threads = '2019-January-09';
var ThreadManager; var ThreadManager;
var Process; var Process;
@ -2780,6 +2780,8 @@ Process.prototype.reportTextSplit = function (string, delimiter) {
break; break;
case 'csv': case 'csv':
return this.parseCSV(string); return this.parseCSV(string);
case 'json':
return this.parseJSON(string);
/* /*
case 'csv records': case 'csv records':
return this.parseCSVrecords(string); 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 debugging
Process.prototype.alert = function (data) { Process.prototype.alert = function (data) {