feenkcom / gtoolkit

Glamorous Toolkit is the Moldable Development environment. It empowers you to make systems explainable through experiences tailored for each problem.
https://gtoolkit.com
MIT License
1.09k stars 47 forks source link

Walkback exporting personal database with a string snippet - Instance of LeRoamJSONExportVisitor did not understand #visitStringSnippet: #3833

Open macta opened 3 months ago

macta commented 3 months ago

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.

image

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:

macta commented 3 months ago

Tried deleting that String snippet - then got a similar error on a page with a PharoRewrite snippet - so something deeper missing