Pregunta

He estado trabajando en mi primer robot de Google Wave recientemente, una parte vital de lo que hace es insertar en línea responde en un bache. No puedo por la vida de a averiguar cómo hacer esto!

Los documentos de la API tienen una función InsertInlineBlip que sonaba prometedor, sin embargo, llamar a eso no parece hacer nada!

EDITAR :: Parece que esto es un error conocido. Sin embargo, la pregunta sigue en pie ¿cuál es la forma correcta de insertar un bache en línea? Estoy asumiendo que algo como esto:

inline = blip.GetDocument().InsertInlineBlip(positionInText)
inline.GetDocument().SetText("some text")
¿Fue útil?

Solución

Si nos fijamos en la código fuente de OpBasedDocument.InsertInlineBlip() verá lo siguiente:

 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) 

Creo que el comentario TODO sugiere que esta función no está aún activa. El método debe ser exigible y devolver correctamente, sin embargo sospecho que la operación documento no se aplica al documento global.

La sintaxis que haya incluido en su entrada parece correcto. Como se puede ver arriba, InsertInlineBlip() devuelve el valor de AddBlip(), que es ... dun, dun, dun ... un problema pasajero.

 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 interesante observar que la firma del método del método de inserción InsertInlineBlip(self, position) es significativamente diferente del método InsertElement(self, position, element) Insertar. InsertInlineBlip() no toma un parámetro elemento a insertar. Parece que la lógica actual de InsertInlineBlip() es más como Blip.CreateChild(), que devuelve un nuevo bache niño con el que trabajar. De esto podemos sospechar que esta API cambiará a medida que se añade la funcionalidad.

Otros consejos

Podría ser un posible fallo .

Esto parece haber sido previamente un error, sin embargo, una actualización de hoy se ha fijado es de esperar que: http://code.google.com/p/google-wave- recursos / wiki / WaveAPIsChangeLog

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top