In GT 853 - I am trying to export my personal database to disk - I have 15 pages, and one of them has a string snippet (added by accident, and is blank) and when I export I get a walkback.
LeRoamJSONExportVisitor(Object)>>doesNotUnderstand: #visitStringSnippet:
LeStringSnippet>>acceptVisitor:
LeStringSnippet(LeSnippet)>>roamJsonStringContent
[ :object | object perform: accessor ] in NeoJSONObjectMapping>>mapAccessor:to: in Block: [ :object | object perform: accessor ]
NeoJSONPropertyMapping>>writeObject:on:
[ :each |
each writeObject: anObject on: jsonMapWriter ] in [ :jsonMapWriter |
properties do: [ :each |
each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :each |...
OrderedCollection>>do:
[ :jsonMapWriter |
properties do: [ :each |
each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :jsonMapWriter |...
[
block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [...
NeoJSONWriter>>indentedDo:
NeoJSONWriter>>writeStreamingDo:
NeoJSONWriter>>writeMapStreamingDo:
NeoJSONObjectMapping>>writeObject:on:
NeoJSONWriter>>nextPut:as:
NeoJSONStreamingWriter>>writeElement:as:
[ :each | listWriter writeElement: each as: LeTextSnippet ] in [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] in [ :jsonWriter :parts |
jsonWriter writeListStreamingDo: [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] in [ :mapping |
mapping
reader: [ :jsonReader |
| aCollection |
aCollection := jsonReader listClass streamContents: [ :stream |
jsonReader parseListDo: [
| element |
element := jsonReader nextAs: LeTextSnippet.
stream nextPut: element ]
].
LeSnippets new items: aCollection ];
writer: [ :jsonWriter :parts |
jsonWriter writeListStreamingDo: [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] ] in LeRoamJsonTranslator>>blocksMappingFor: in Block: [ :each | listWriter writeElement: each as: Le[..]
OrderedCollection>>do:
LeSnippets(LeCollection)>>do:
[ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] in [ :jsonWriter :parts |
jsonWriter writeListStreamingDo: [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] in [ :mapping |
mapping
reader: [ :jsonReader |
| aCollection |
aCollection := jsonReader listClass streamContents: [ :stream |
jsonReader parseListDo: [
| element |
element := jsonReader nextAs: LeTextSnippet.
stream nextPut: element ]
].
LeSnippets new items: aCollection ];
writer: [ :jsonWriter :parts |
jsonWriter writeListStreamingDo: [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] ] in LeRoamJsonTranslator>>blocksMappingFor: in Block: [ :listWriter |...
[
block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [...
NeoJSONWriter>>indentedDo:
NeoJSONWriter>>writeStreamingDo:
NeoJSONWriter>>writeListStreamingDo:
[ :jsonWriter :parts |
jsonWriter writeListStreamingDo: [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] in [ :mapping |
mapping
reader: [ :jsonReader |
| aCollection |
aCollection := jsonReader listClass streamContents: [ :stream |
jsonReader parseListDo: [
| element |
element := jsonReader nextAs: LeTextSnippet.
stream nextPut: element ]
].
LeSnippets new items: aCollection ];
writer: [ :jsonWriter :parts |
jsonWriter writeListStreamingDo: [ :listWriter |
parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] ] in LeRoamJsonTranslator>>blocksMappingFor: in Block: [ :jsonWriter :parts | ...
NeoJSONCustomMapping>>writeObject:on:
NeoJSONWriter>>nextPut:as:
NeoJSONWriter>>encodeKey:value:as:
NeoJSONStreamingWriter>>writeKey:value:as:
NeoJSONPropertyMapping>>writeObject:on:
[ :each |
each writeObject: anObject on: jsonMapWriter ] in [ :jsonMapWriter |
properties do: [ :each |
each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :each |...
OrderedCollection>>do:
[ :jsonMapWriter |
properties do: [ :each |
each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :jsonMapWriter |...
[
block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [...
NeoJSONWriter>>indentedDo:
NeoJSONWriter>>writeStreamingDo:
NeoJSONWriter>>writeMapStreamingDo:
NeoJSONObjectMapping>>writeObject:on:
NeoJSONWriter>>nextPut:as:
NeoJSONStreamingWriter>>writeElement:as:
[ :each | listWriter writeElement: each as: LePage ] in [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] in [ :jsonWriter :pages |
jsonWriter writeListStreamingDo: [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] in [ :mapping |
mapping
reader: [ :jsonReader |
| aCollection |
aCollection := jsonReader listClass streamContents: [ :stream |
jsonReader parseListDo: [
| element |
element := jsonReader nextAs: LePage.
stream nextPut: element ]
].
LeDatabase new setPages: aCollection ];
writer: [ :jsonWriter :pages |
jsonWriter writeListStreamingDo: [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] ] in LeRoamJsonTranslator>>databaseMappingFor: in Block: [ :each | listWriter writeElement: each as: Le[..]
Dictionary>>valuesDo:
[ :pageType | pageType valuesDo: aBlock ] in LeDatabase>>do: in Block: [ :pageType | pageType valuesDo: aBlock ]
IdentityDictionary(Dictionary)>>valuesDo:
LeDatabase>>do:
[ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] in [ :jsonWriter :pages |
jsonWriter writeListStreamingDo: [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] in [ :mapping |
mapping
reader: [ :jsonReader |
| aCollection |
aCollection := jsonReader listClass streamContents: [ :stream |
jsonReader parseListDo: [
| element |
element := jsonReader nextAs: LePage.
stream nextPut: element ]
].
LeDatabase new setPages: aCollection ];
writer: [ :jsonWriter :pages |
jsonWriter writeListStreamingDo: [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] ] in LeRoamJsonTranslator>>databaseMappingFor: in Block: [ :listWriter |...
[
block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [...
NeoJSONWriter>>indentedDo:
NeoJSONWriter>>writeStreamingDo:
NeoJSONWriter>>writeListStreamingDo:
[ :jsonWriter :pages |
jsonWriter writeListStreamingDo: [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] in [ :mapping |
mapping
reader: [ :jsonReader |
| aCollection |
aCollection := jsonReader listClass streamContents: [ :stream |
jsonReader parseListDo: [
| element |
element := jsonReader nextAs: LePage.
stream nextPut: element ]
].
LeDatabase new setPages: aCollection ];
writer: [ :jsonWriter :pages |
jsonWriter writeListStreamingDo: [ :listWriter |
pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] ] in LeRoamJsonTranslator>>databaseMappingFor: in Block: [ :jsonWriter :pages | ...
NeoJSONCustomMapping>>writeObject:on:
NeoJSONWriter>>nextPut:as:
LeRoamJsonTranslator>>write:stream:as:withMapping:prettyPrint:
LeRoamJsonTranslator>>write:stream:as:
LeRoamJsonTranslator>>database:toStream:
[ :aStream |
self database: aLeDatabase toStream: aStream ] in LeRoamJsonTranslator>>database:toFile: in Block: [ :aStream | ...
[ aBlock value: stream ] in FileLocator(AbstractFileReference)>>writeStreamDo: in Block: [ aBlock value: stream ]
FullBlockClosure(BlockClosure)>>ensure:
FileLocator(AbstractFileReference)>>writeStreamDo:
LeRoamJsonTranslator>>database:toFile:
LeDatabase>>toRoamJsonFile:
LeWorldDatabaseExportBadge>>exportToFile:
[ :file :button |
anAnchorElement dispatchEvent: (BrDropdownHideWish new anchor: anAnchorElement).
self exportToFile: file.
self informExportToFile: file ] in LeWorldDatabaseExportBadge>>createExportRoamJsonElementWithAnchor: in Block: [ :file :button | ...
FullBlockClosure(BlockClosure)>>cull:cull:
BrFileSelectOrCreate>>executeAction
[ self executeAction ] in BrFileSelectOrCreate(BrFileSelector)>>createOkButton in Block: [ self executeAction ]
FullBlockClosure(BlockClosure)>>gtValueWithArgs:
BrButtonModel>>clickEvent:
[ :anEvent | (self hasModifiers: anEvent) ifFalse: [ self clickEvent: anEvent ] ] in BrButtonModel>>initializeListeners in Block: [ :anEvent | (self hasModifiers: anEvent) ifFa[..]
FullBlockClosure(BlockClosure)>>cull:
BlEventHandler>>handleEvent:
[
anEvent forwardingTarget: self eventTarget.
self eventHandler handleEvent: anEvent ] in BlEventForwarder>>handleEvent: in Block: [...
FullBlockClosure(BlockClosure)>>ensure:
BlEventForwarder>>handleEvent:
BlHandlerAnnouncementSubscription>>deliver:
[ subscription deliver: anAnnouncement ] in SubscriptionRegistry>>deliver:to:startingAt: in Block: [ subscription deliver: anAnnouncement ]
FullBlockClosure(BlockClosure)>>ifCurtailed:
SubscriptionRegistry>>deliver:to:startingAt:
SubscriptionRegistry>>deliver:to:
SubscriptionRegistry>>deliver:
Announcer>>announce:
BlHandlerAnnouncerRegistry>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchBubblingEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
BlEventDispatcherChain>>dispatchEvent:
BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next:
In GT 853 - I am trying to export my personal database to disk - I have 15 pages, and one of them has a string snippet (added by accident, and is blank) and when I export I get a walkback.
LeRoamJSONExportVisitor(Object)>>doesNotUnderstand: #visitStringSnippet: LeStringSnippet>>acceptVisitor: LeStringSnippet(LeSnippet)>>roamJsonStringContent [ :object | object perform: accessor ] in NeoJSONObjectMapping>>mapAccessor:to: in Block: [ :object | object perform: accessor ] NeoJSONPropertyMapping>>writeObject:on: [ :each | each writeObject: anObject on: jsonMapWriter ] in [ :jsonMapWriter | properties do: [ :each | each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :each |... OrderedCollection>>do: [ :jsonMapWriter | properties do: [ :each | each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :jsonMapWriter |... [ block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [... NeoJSONWriter>>indentedDo: NeoJSONWriter>>writeStreamingDo: NeoJSONWriter>>writeMapStreamingDo: NeoJSONObjectMapping>>writeObject:on: NeoJSONWriter>>nextPut:as: NeoJSONStreamingWriter>>writeElement:as: [ :each | listWriter writeElement: each as: LeTextSnippet ] in [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] in [ :jsonWriter :parts | jsonWriter writeListStreamingDo: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] in [ :mapping | mapping reader: [ :jsonReader | | aCollection | aCollection := jsonReader listClass streamContents: [ :stream | jsonReader parseListDo: [ | element | element := jsonReader nextAs: LeTextSnippet. stream nextPut: element ] ]. LeSnippets new items: aCollection ]; writer: [ :jsonWriter :parts | jsonWriter writeListStreamingDo: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] ] in LeRoamJsonTranslator>>blocksMappingFor: in Block: [ :each | listWriter writeElement: each as: Le[..] OrderedCollection>>do: LeSnippets(LeCollection)>>do: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] in [ :jsonWriter :parts | jsonWriter writeListStreamingDo: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] in [ :mapping | mapping reader: [ :jsonReader | | aCollection | aCollection := jsonReader listClass streamContents: [ :stream | jsonReader parseListDo: [ | element | element := jsonReader nextAs: LeTextSnippet. stream nextPut: element ] ]. LeSnippets new items: aCollection ]; writer: [ :jsonWriter :parts | jsonWriter writeListStreamingDo: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] ] in LeRoamJsonTranslator>>blocksMappingFor: in Block: [ :listWriter |... [ block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [... NeoJSONWriter>>indentedDo: NeoJSONWriter>>writeStreamingDo: NeoJSONWriter>>writeListStreamingDo: [ :jsonWriter :parts | jsonWriter writeListStreamingDo: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] in [ :mapping | mapping reader: [ :jsonReader | | aCollection | aCollection := jsonReader listClass streamContents: [ :stream | jsonReader parseListDo: [ | element | element := jsonReader nextAs: LeTextSnippet. stream nextPut: element ] ]. LeSnippets new items: aCollection ]; writer: [ :jsonWriter :parts | jsonWriter writeListStreamingDo: [ :listWriter | parts do: [ :each | listWriter writeElement: each as: LeTextSnippet ] ] ] ] in LeRoamJsonTranslator>>blocksMappingFor: in Block: [ :jsonWriter :parts | ... NeoJSONCustomMapping>>writeObject:on: NeoJSONWriter>>nextPut:as: NeoJSONWriter>>encodeKey:value:as: NeoJSONStreamingWriter>>writeKey:value:as: NeoJSONPropertyMapping>>writeObject:on: [ :each | each writeObject: anObject on: jsonMapWriter ] in [ :jsonMapWriter | properties do: [ :each | each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :each |... OrderedCollection>>do: [ :jsonMapWriter | properties do: [ :each | each writeObject: anObject on: jsonMapWriter ] ] in NeoJSONObjectMapping>>writeObject:on: in Block: [ :jsonMapWriter |... [ block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [... NeoJSONWriter>>indentedDo: NeoJSONWriter>>writeStreamingDo: NeoJSONWriter>>writeMapStreamingDo: NeoJSONObjectMapping>>writeObject:on: NeoJSONWriter>>nextPut:as: NeoJSONStreamingWriter>>writeElement:as: [ :each | listWriter writeElement: each as: LePage ] in [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] in [ :jsonWriter :pages | jsonWriter writeListStreamingDo: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] in [ :mapping | mapping reader: [ :jsonReader | | aCollection | aCollection := jsonReader listClass streamContents: [ :stream | jsonReader parseListDo: [ | element | element := jsonReader nextAs: LePage. stream nextPut: element ] ]. LeDatabase new setPages: aCollection ]; writer: [ :jsonWriter :pages | jsonWriter writeListStreamingDo: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] ] in LeRoamJsonTranslator>>databaseMappingFor: in Block: [ :each | listWriter writeElement: each as: Le[..] Dictionary>>valuesDo: [ :pageType | pageType valuesDo: aBlock ] in LeDatabase>>do: in Block: [ :pageType | pageType valuesDo: aBlock ] IdentityDictionary(Dictionary)>>valuesDo: LeDatabase>>do: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] in [ :jsonWriter :pages | jsonWriter writeListStreamingDo: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] in [ :mapping | mapping reader: [ :jsonReader | | aCollection | aCollection := jsonReader listClass streamContents: [ :stream | jsonReader parseListDo: [ | element | element := jsonReader nextAs: LePage. stream nextPut: element ] ]. LeDatabase new setPages: aCollection ]; writer: [ :jsonWriter :pages | jsonWriter writeListStreamingDo: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] ] in LeRoamJsonTranslator>>databaseMappingFor: in Block: [ :listWriter |... [ block value: mapWriter ] in NeoJSONWriter>>writeStreamingDo: in Block: [... NeoJSONWriter>>indentedDo: NeoJSONWriter>>writeStreamingDo: NeoJSONWriter>>writeListStreamingDo: [ :jsonWriter :pages | jsonWriter writeListStreamingDo: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] in [ :mapping | mapping reader: [ :jsonReader | | aCollection | aCollection := jsonReader listClass streamContents: [ :stream | jsonReader parseListDo: [ | element | element := jsonReader nextAs: LePage. stream nextPut: element ] ]. LeDatabase new setPages: aCollection ]; writer: [ :jsonWriter :pages | jsonWriter writeListStreamingDo: [ :listWriter | pages do: [ :each | listWriter writeElement: each as: LePage ] ] ] ] in LeRoamJsonTranslator>>databaseMappingFor: in Block: [ :jsonWriter :pages | ... NeoJSONCustomMapping>>writeObject:on: NeoJSONWriter>>nextPut:as: LeRoamJsonTranslator>>write:stream:as:withMapping:prettyPrint: LeRoamJsonTranslator>>write:stream:as: LeRoamJsonTranslator>>database:toStream: [ :aStream | self database: aLeDatabase toStream: aStream ] in LeRoamJsonTranslator>>database:toFile: in Block: [ :aStream | ... [ aBlock value: stream ] in FileLocator(AbstractFileReference)>>writeStreamDo: in Block: [ aBlock value: stream ] FullBlockClosure(BlockClosure)>>ensure: FileLocator(AbstractFileReference)>>writeStreamDo: LeRoamJsonTranslator>>database:toFile: LeDatabase>>toRoamJsonFile: LeWorldDatabaseExportBadge>>exportToFile: [ :file :button | anAnchorElement dispatchEvent: (BrDropdownHideWish new anchor: anAnchorElement). self exportToFile: file. self informExportToFile: file ] in LeWorldDatabaseExportBadge>>createExportRoamJsonElementWithAnchor: in Block: [ :file :button | ... FullBlockClosure(BlockClosure)>>cull:cull: BrFileSelectOrCreate>>executeAction [ self executeAction ] in BrFileSelectOrCreate(BrFileSelector)>>createOkButton in Block: [ self executeAction ] FullBlockClosure(BlockClosure)>>gtValueWithArgs: BrButtonModel>>clickEvent: [ :anEvent | (self hasModifiers: anEvent) ifFalse: [ self clickEvent: anEvent ] ] in BrButtonModel>>initializeListeners in Block: [ :anEvent | (self hasModifiers: anEvent) ifFa[..] FullBlockClosure(BlockClosure)>>cull: BlEventHandler>>handleEvent: [ anEvent forwardingTarget: self eventTarget. self eventHandler handleEvent: anEvent ] in BlEventForwarder>>handleEvent: in Block: [... FullBlockClosure(BlockClosure)>>ensure: BlEventForwarder>>handleEvent: BlHandlerAnnouncementSubscription>>deliver: [ subscription deliver: anAnnouncement ] in SubscriptionRegistry>>deliver:to:startingAt: in Block: [ subscription deliver: anAnnouncement ] FullBlockClosure(BlockClosure)>>ifCurtailed: SubscriptionRegistry>>deliver:to:startingAt: SubscriptionRegistry>>deliver:to: SubscriptionRegistry>>deliver: Announcer>>announce: BlHandlerAnnouncerRegistry>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchBubblingEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: BlEventDispatcherChain>>dispatchEvent: BlElementEventDispatcher(BlBubblingEventDispatcher)>>dispatchEvent:next: