added "csv records" to SPLIT options, renamed "csv" to "csv fields"

pull/68/head
jmoenig 2018-10-24 16:14:34 +02:00
rodzic 6b963671f0
commit 1d963ab0ca
4 zmienionych plików z 36 dodań i 6 usunięć

Wyświetl plik

@ -1,6 +1,9 @@
# Snap<em>!</em> (BYOB) History
## Development
### 2018-10-24
* Blocks, Threads: added "csv records" to SPLIT options, renamed "csv" to "csv fields"
### 2018-10-23
* Objects: Don't stamp if the canvas is too small (and would throw an error)
* Threads: New "reportAtomicGroup" HOF primitive using the JIT compiler

Wyświetl plik

@ -6,8 +6,8 @@
<link rel="shortcut icon" href="src/favicon.ico">
<script type="text/javascript" src="src/morphic.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=2018-10-02"></script>
<script type="text/javascript" src="src/threads.js?version=2018-10-23"></script>
<script type="text/javascript" src="src/blocks.js?version=2018-10-24"></script>
<script type="text/javascript" src="src/threads.js?version=2018-10-24"></script>
<script type="text/javascript" src="src/objects.js?version=2018-10-23"></script>
<script type="text/javascript" src="src/gui.js?version=2018-10-23"></script>
<script type="text/javascript" src="src/paint.js?version=2018-10-02"></script>

Wyświetl plik

@ -148,7 +148,7 @@ CustomCommandBlockMorph, SymbolMorph, ToggleButtonMorph, DialMorph*/
// Global stuff ////////////////////////////////////////////////////////
modules.blocks = '2018-October-02';
modules.blocks = '2018-October-24';
var SyntaxElementMorph;
var BlockMorph;
@ -1044,7 +1044,8 @@ SyntaxElementMorph.prototype.labelPart = function (spec) {
'line' : ['line'],
'tab' : ['tab'],
'cr' : ['cr'],
'csv' : ['csv']
'csv records' : ['csv records'],
'csv fields' : ['csv fields']
},
false // read-only
);

Wyświetl plik

@ -62,7 +62,7 @@ StageMorph, SpriteMorph, StagePrompterMorph, Note, modules, isString, copy,
isNil, WatcherMorph, List, ListWatcherMorph, alert, console, TableMorph,
TableFrameMorph, ColorSlotMorph, isSnapObject, Map*/
modules.threads = '2018-October-23';
modules.threads = '2018-October-24';
var ThreadManager;
var Process;
@ -2775,6 +2775,9 @@ Process.prototype.reportTextSplit = function (string, delimiter) {
case 'letter':
del = '';
break;
case 'csv records':
return this.parseCSVrecords(string);
case 'csv fields':
case 'csv':
return this.parseCSV(string);
default:
@ -2783,10 +2786,33 @@ Process.prototype.reportTextSplit = function (string, delimiter) {
return new List(str.split(del));
};
Process.prototype.parseCSVrecords = function (string) {
// parse csv formatted text into a one-dimensional list of records
var lines = this.reportTextSplit(string, ['line']).asArray(),
len = lines.length,
i = 0,
cur,
records = [];
while (i < len) {
cur = lines[i];
while ((cur.split('"').length - 1) % 2 > 0) {
i += 1;
cur += '\n';
cur += lines[i];
}
records.push(cur);
i += 1;
}
if (records[records.length - 1].length < 1) {
records.pop();
}
return new List(records);
};
Process.prototype.parseCSV = function (string) {
// parse a single row of CSV data into a one-dimensional list
// this assumes that the whole csv data has already been split
// by lines.
// by records.
// taken from:
// https://stackoverflow.com/questions/8493195/how-can-i-parse-a-csv-string-with-javascript-which-contains-comma-in-data