我最近一直在为 google wave 开发我的第一个机器人,它所做的一个重要部分是将内联回复插入到 blip 中。我一辈子都不知道该怎么做!

API文档有一个函数 插入内联Blip 这听起来很有希望,但是调用它似乎没有任何作用!

编辑::看来这是一个已知的错误。然而,问题仍然是插入内联 blip 的正确方法是什么?我假设是这样的:

inline = blip.GetDocument().InsertInlineBlip(positionInText)
inline.GetDocument().SetText("some text")
有帮助吗?

解决方案

如果你看一下 源代码 为了 OpBasedDocument.InsertInlineBlip() 您将看到以下内容:

 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) 

我认为 TODO 评论表明此功能尚未激活。该方法应该是可调用的并正确返回,但是我怀疑文档操作未应用于全局文档。

您在帖子中包含的语法看起来是正确的。正如你在上面看到的, InsertInlineBlip() 返回值AddBlip(), ,这是...邓,邓,邓...一个昙花一现。

 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 

编辑:有趣的是,Insert 方法的方法签名 InsertInlineBlip(self, position) 与Insert方法有显着不同 InsertElement(self, position, element). InsertInlineBlip() 不需要插入元素参数。目前的逻辑似乎是 InsertInlineBlip() 更像是 Blip.CreateChild(), ,它返回一个要处理的新子 blip。由此我们可以怀疑这个 API 会随着功能的添加而改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top