2009-10-13 3 views
5

Ich habe vor kurzem an meinem ersten Roboter für Google Wave gearbeitet, ein wichtiger Teil dessen, was es tut, ist es, Inline-Antworten in einen Blip einzufügen. Ich kann nicht für das Leben von mir herausfinden, wie man das macht!Google Wave-Roboter Inline-Antwort

Die API-Dokumentation hat eine Funktion InsertInlineBlip, die vielversprechend klang, aber rufen, dass nichts zu tun scheint!

EDIT :: Es scheint, dass dies ein bekannter Fehler ist. Allerdings bleibt die Frage, was ist der richtige Weg, um einen Inline-Blip einzufügen? Ich gehe davon aus so etwas wie dieses:

inline = blip.GetDocument().InsertInlineBlip(positionInText) 
inline.GetDocument().SetText("some text") 
+0

hehe, von Neuling retagged für Anfänger, was ist der wissenschaftliche Unterschied? ;) – Martin

+0

"Newbie" kann negative Konnotationen haben, nehme ich an. – ceejayoz

+0

Nummer, die Anfänger Tag folgt, ist 3051, Neuling 60. Das ist alles – SilentGhost

Antwort

4

Wenn man sich die sourcecode sucht OpBasedDocument.InsertInlineBlip() werden Sie das folgende sehen:

412 - def InsertInlineBlip(self, position): 
413  """Inserts an inline blip into this blip at a specific position. 
414 
415  Args: 
416  position: Position to insert the blip at. 
417 
418  Returns: 
419  The JSON data of the blip that was created. 
420  """ 
421  blip_data = self.__context.builder.DocumentInlineBlipInsert( 
422   self._blip.waveId, 
423   self._blip.waveletId, 
424   self._blip.blipId, 
425   position) 
426  # TODO(davidbyttow): Add local blip element. 
427  return self.__context.AddBlip(blip_data) 

Ich denke, die TODO Kommentar diese Funktion schlägt noch nicht aktiv ist. Die Methode sollte aufrufbar sein und korrekt zurückgegeben werden. Ich vermute jedoch, dass die Dokumentoperation nicht auf das globale Dokument angewendet wird.

Die Syntax, die Sie in Ihren Beitrag eingefügt haben, sieht korrekt aus. Wie Sie oben sehen können, InsertInlineBlip()returns the valueAddBlip(), die ... ist, dun, dun, dun ... ein Blip.

543 - def AddBlip(self, blip_data): 
544  """Adds a transient blip based on the data supplied. 
545 
546  Args: 
547  blip_data: JSON data describing this blip. 
548 
549  Returns: 
550  An OpBasedBlip that may have operations applied to it. 
551  """ 
552  blip = OpBasedBlip(blip_data, self) 
553  self.blips[blip.GetId()] = blip 
554  return blip 

EDIT: Es ist interessant, dass die Methode Signatur der Insert-Methode beachten InsertInlineBlip(self, position)InsertElement(self, position, element) aus der Insert-Methode deutlich unterscheidet. InsertInlineBlip() nimmt keinen einzufügenden Elementparameter. Es scheint, die aktuelle Logik für InsertInlineBlip() ist mehr wie Blip.CreateChild(), die einen neuen Kindblip zurückgibt, mit dem zu arbeiten. Daraus können wir schließen, dass sich diese API ändert, wenn die Funktionalität hinzugefügt wird.

2

Es könnte eine mögliche bug sein.

+0

Aha! Ich hoffe, dass sie bald eine Lösung veröffentlichen:/ – Martin

Verwandte Themen