题
我最近一直在为 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 会随着功能的添加而改变。
其他提示
这可能是一个可能的错误一>
这似乎先前已经是错误,但是,今天的更新已希望固定它: http://code.google.com/p/google-wave-资源/维基/ WaveAPIsChangeLog
不隶属于 StackOverflow