For the 0.2 release me and my partner Anh worked together. Here is the final update made by Anh to his github repo. To begin with, he created a new repository for us to work on C parser. Although I did forked his repo, for the most part we were not collaborating through github directly (e.g. we were not pushing and pulling changes on regular basis). What we did was I went into separate direction of working on ‘parsing cue text’ and he went into separate direction of working on cue timings and settings. And since he had better understanding of the spec, he was also integrating my work which I sent him through email. After we had bunch of work done, he made an update to his repo. As you can see here we only had two commits to our repo, both made by Anh. I was kind of scared of making commits directly to our github repo because I still don’t have attained a comfortable level on working with git. But, with upcoming releases, I will try to work more and more on git. Also, since my compiler had some problem, I was working off my matrix account. And making a significant progress, I just copied the file and email Anh. This is kind of an introduction to what I was working on and how I was working. Below is the details to what I was working on.
As said earlier and also in my other blog post, I was working on cue payload. Here is the link to the file I was working on. It is not solely made by me. A lot in it has been added by Anh. I will just try to explain the code in it. Almost all of it has come from following the spec.
Node is used to represent a specific portion of cue text. There are two types of node objects leaf node and internal node. Leaf node objects are the ones that can not contain children objects and the internal node objects are the ones that can contain children objects. Tags such as class, italics, bold, underline, ruby, rubytext, and voice are extended using internal node class. While the timestamp tags and text strings are extended using internal node class.