Domanda

Ho lavorato sul mio primo robot per Google Wave di recente, una parte vitale di ciò che fa è quello di inserire in linea le risposte in un blip. Non posso per la vita di me a capire come fare questo!

La documentazione API hanno una funzione InsertInlineBlip che sembrava promettente, ma chiamando che non sembra di fare nulla!

EDIT :: Sembra che questo è un bug noto. Tuttavia, la questione si trova ancora qual è il modo corretto di inserire un blip in linea? Sto assumendo qualcosa di simile:

inline = blip.GetDocument().InsertInlineBlip(positionInText)
inline.GetDocument().SetText("some text")
È stato utile?

Soluzione

Se si guarda al codice sorgente per OpBasedDocument.InsertInlineBlip() si vedrà il seguente:

 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) 

Credo che il commento TODO suggerisce questa funzionalità non è ancora attiva. Il metodo dovrebbe essere callable e restituire correttamente, però ho il sospetto che l'operazione documento non viene applicata al documento globale.

La sintassi hai incluso nel tuo post sembra corretto. Come potete vedere sopra, InsertInlineBlip() restituisce il valore di AddBlip(), che è ... dun, dun, dun ... un 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: E 'interessante notare che la firma del metodo del metodo InsertInlineBlip(self, position) Insert è significativamente diverso dal metodo InsertElement(self, position, element) Inserisci. InsertInlineBlip() non prende un parametro elemento da inserire. Sembra che la logica corrente InsertInlineBlip() è più simile Blip.CreateChild(), che restituisce una nuova blip bambino con cui lavorare. Da ciò si può sospettare che questa API cambierà come si aggiunge la funzionalità.

Altri suggerimenti

Potrebbe essere una possibile .

Questo sembra essere stato in precedenza un bug, tuttavia, un aggiornamento oggi è si spera risolto: http://code.google.com/p/google-wave- risorse / wiki / WaveAPIsChangeLog

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top