Pergunta

Recentemente, tenho trabalhado no meu primeiro robô para o Google Wave, uma parte vital do que ele faz é inserir respostas embutidas em um BLIP. Não posso para a minha vida descobrir como fazer isso!

Os documentos da API têm uma função InsertinlineBlip O que parecia promissor, no entanto, chamando isso não parece fazer nada!

Edit :: Parece que este é um bug conhecido. No entanto, a questão ainda está sendo a maneira correta de inserir um Blip em linha? Estou assumindo algo assim:

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

Solução

Se você olhar para o Código fonte por OpBasedDocument.InsertInlineBlip() Você verá o seguinte:

 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) 

Eu acho que o comentário do TODO sugere que esse recurso ainda não está ativo. O método deve ser chamável e retornar corretamente, no entanto, suspeito que a operação do documento não seja aplicada ao documento global.

A sintaxe que você incluiu na sua postagem parece correta. Como você pode ver acima, InsertInlineBlip() Retorna o valor do AddBlip(), que é ... Dun, Dun, Dun ... um 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 

Editar: é interessante notar que a assinatura do método do método de inserção InsertInlineBlip(self, position) é significativamente diferente do método de inserção InsertElement(self, position, element). InsertInlineBlip() não leva um parâmetro de elemento a ser inserido. Parece a lógica atual para InsertInlineBlip() é mais parecido Blip.CreateChild(), que devolve um novo filho com o qual trabalhar. A partir disso, podemos suspeitar que essa API mudará à medida que a funcionalidade é adicionada.

Outras dicas

Pode ser um possível incomodar.

Parece ter sido um bug anteriormente, no entanto, uma atualização hoje a consertou:http://code.google.com/p/google-wave-resources/wiki/waveapischangelog

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top