lib/stmd.js
function(tag, line_number, offset) {
  while (!canContain(this.tip.t, tag)) {
    this.finalize(this.tip, line_number);
  }

  var column_number = offset + 1; // offset 0 = column 1
  var newBlock = makeBlock(tag, line_number, column_number);
  this.tip.children.push(newBlock);
  newBlock.parent = this.tip;
  this.tip = newBlock;
  return newBlock;
}
function(tag, line_number, offset) {
  while (!canContain(this.tip.t, tag)) {
    this.finalize(this.tip, line_number);
  }

  var column_number = offset + 1; // offset 0 = column 1
  var newBlock = makeBlock(tag, line_number, column_number);
  this.tip.children.push(newBlock);
  newBlock.parent = this.tip;
  this.tip = newBlock;
  return newBlock;
}
function ( tag , line_number , offset ) { while ( ! canContain ( this . tip . t , tag ) ) { this . finalize ( this . tip , line_number ) ; } var column_number = offset + 1 ; // offset 0 = column 1 var newBlock = makeBlock ( tag , line_number , column_number ) ; this . tip . children . push ( newBlock ) ; newBlock . parent = this . tip ; this . tip = newBlock ; return newBlock ; }
Add block of type tag as a child of the tip.  If the tip can't accept children, close and finalize it and try its parent, and so on til we find a block that can accept children.
Add block of type tag as a child of the tip . If the tip can t accept children close and finalize it and try its parent and so on til we find a block that can accept children .