سؤال

لقد كنت أعمل على أول روبوت لـ Google Wave مؤخرًا ، وهو جزء حيوي من ما تفعله هو إدراج الردود المضمنة في Blip. لا أستطيع لحياة لي معرفة كيفية القيام بذلك!

مستندات API لها وظيفة insertInlineBlip الذي بدا واعدا ، ولكن استدعاء هذا لا يبدو أن يفعل أي شيء!

تحرير :: يبدو أن هذا خطأ معروف. ومع ذلك ، فإن السؤال لا يزال قائما ما هي الطريقة الصحيحة لإدراج وميض مضمّن؟ أفترض شيئًا كهذا:

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 

تحرير: من المثير للاهتمام أن نلاحظ أن توقيع طريقة طريقة الإدراج InsertInlineBlip(self, position) يختلف بشكل كبير عن طريقة الإدراج InsertElement(self, position, element). InsertInlineBlip() لا تأخذ معلمة عنصر لإدراجها. يبدو المنطق الحالي ل InsertInlineBlip() أشبه Blip.CreateChild(), ، الذي يعيد وطف طفل جديد للعمل به. من هذا يمكننا أن نشك في أن واجهة برمجة التطبيقات هذه ستتغير عند إضافة الوظيفة.

نصائح أخرى

يمكن أن يكون ممكنا خلل برمجي.

يبدو أن هذا كان في السابق خطأً ، ومع ذلك ، نأمل أن يكون تحديث اليوم إصلاحه:http://code.google.com/p/google-wave-resources/wiki/waveapischangelog

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top