kopia lustrzana https://github.com/backface/turtlestitch
added "csv records" to SPLIT options, renamed "csv" to "csv fields"
rodzic
6b963671f0
commit
1d963ab0ca
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
);
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue