kopia lustrzana https://github.com/backface/turtlestitch
optimized serialization of lists with atomic data in project files
rodzic
dfb2907c84
commit
cefb945ec1
|
@ -4,6 +4,7 @@
|
|||
### 2019-01-08
|
||||
* Objects: automatically parse csv files on import, experimental "raw data" and "parse" ops
|
||||
* Lists: fixed an off-by-one error in becomeLinked()
|
||||
* Store: optimized serialization of lists with atomic data in project files
|
||||
|
||||
### 2019-01-07
|
||||
* Lists, Objects: directly export and import lists as csv files, under construction
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<script type="text/javascript" src="src/symbols.js?version=2018-10-02"></script>
|
||||
<script type="text/javascript" src="src/sketch.js?version=2018-10-02"></script>
|
||||
<script type="text/javascript" src="src/xml.js?version=2018-11-12"></script>
|
||||
<script type="text/javascript" src="src/store.js?version=2019-01-02"></script>
|
||||
<script type="text/javascript" src="src/store.js?version=2019-01-08"></script>
|
||||
<script type="text/javascript" src="src/locale.js?version=2019-01-04"></script>
|
||||
<script type="text/javascript" src="src/cloud.js?version=2018-11-28"></script>
|
||||
<script type="text/javascript" src="src/sha512.js?version=2018-10-02"></script>
|
||||
|
|
29
src/store.js
29
src/store.js
|
@ -55,13 +55,13 @@ CommandBlockMorph, detect, CustomCommandBlockMorph, CustomReporterBlockMorph,
|
|||
Color, List, newCanvas, Costume, Sound, Audio, IDE_Morph, ScriptsMorph,
|
||||
BlockMorph, ArgMorph, InputSlotMorph, TemplateSlotMorph, CommandSlotMorph,
|
||||
FunctionSlotMorph, MultiArgMorph, ColorSlotMorph, nop, CommentMorph, isNil,
|
||||
localize, sizeOf, ArgLabelMorph, SVG_Costume, MorphicPreferences,
|
||||
localize, sizeOf, ArgLabelMorph, SVG_Costume, MorphicPreferences, Process,
|
||||
SyntaxElementMorph, Variable, isSnapObject, console, BooleanSlotMorph,
|
||||
normalizeCanvas, contains*/
|
||||
|
||||
// Global stuff ////////////////////////////////////////////////////////
|
||||
|
||||
modules.store = '2019-January-02';
|
||||
modules.store = '2019-January-08';
|
||||
|
||||
|
||||
// XML_Serializer ///////////////////////////////////////////////////////
|
||||
|
@ -852,7 +852,7 @@ SnapSerializer.prototype.loadSounds = function (object, model) {
|
|||
// private
|
||||
var sounds = model.childNamed('sounds');
|
||||
if (sounds) {
|
||||
// object.sounds = this.loadValue(sounds.require('list')); +++
|
||||
// object.sounds = this.loadValue(sounds.require('list'));
|
||||
object.sounds = this.loadValue(sounds.require(
|
||||
'list',
|
||||
function () {
|
||||
|
@ -1315,6 +1315,12 @@ SnapSerializer.prototype.loadValue = function (model, object) {
|
|||
return model.contents === 'true';
|
||||
case 'list':
|
||||
if (model.attributes.hasOwnProperty('linked')) {
|
||||
if (model.attributes.format === 'csv') {
|
||||
v = Process.prototype.parseCSV(model.contents);
|
||||
v.becomeLinked();
|
||||
record();
|
||||
return v;
|
||||
}
|
||||
v = new List();
|
||||
v.isLinked = true;
|
||||
record();
|
||||
|
@ -1341,6 +1347,11 @@ SnapSerializer.prototype.loadValue = function (model, object) {
|
|||
});
|
||||
return lst;
|
||||
}
|
||||
if (model.attributes.format === 'csv') {
|
||||
v = Process.prototype.parseCSV(model.contents);
|
||||
record();
|
||||
return v;
|
||||
}
|
||||
v = new List();
|
||||
record();
|
||||
v.contents = model.childrenNamed('item').map(function (item) {
|
||||
|
@ -2137,6 +2148,18 @@ List.prototype.toXML = function (serializer, mediaContext) {
|
|||
// mediaContext is an optional name-stub
|
||||
// when collecting media into a separate module
|
||||
var xml, value, item;
|
||||
|
||||
if (this.hasOnlyAtomicData() &&
|
||||
(!this.isLinked || !StageMorph.prototype.enableSublistIDs)) {
|
||||
// special case for a less cluttered format
|
||||
return serializer.format(
|
||||
'<list format="csv" ' +
|
||||
(this.isLinked ? 'linked="linked" ' : '') +
|
||||
'~>%</list>',
|
||||
this.asCSV()
|
||||
);
|
||||
}
|
||||
|
||||
if (this.isLinked) {
|
||||
xml = '<list linked="linked" ~>';
|
||||
if (StageMorph.prototype.enableSublistIDs) {
|
||||
|
|
Ładowanie…
Reference in New Issue