docs: function transform(flapjack, options) {
      var filePath    = options.filePath;
      var names       = this.parseNames(filePath, options.prefix, options.appName);
      var uipart      = this.loadUIPart(names.appShortName, filePath);
  
      // if there is no client side module for this ui part, return resolved
      if (!uipart.view || uipart.serverOnly || uipart.abstract) { return null; }
  
      // use the uipart to get the directive scope (for partials), view html and controller
      var scope = uipart.scope ? JSON.stringify(uipart.scope) : null;
      var html = this.getHtml(uipart, options);
  
      if (options.htmlOnly) {
          return html;
      }
  
      options.isPage = names.isPage;
      var ctrlTemplateModel = this.getCtrlTemplateModel(uipart, options);
  
      // combine all the data we have into one templateModel that will go into the template
      var templateModel = _.extend(ctrlTemplateModel, names, { directiveScope: scope, viewHtml: html });
  
      //TODO: refactor this; complete hack to add initialModel to sideviews
      if (names.controllerName.match(/Sideview/)) {
          templateModel.params = templateModel.params || [];
          templateModel.convertedParams = templateModel.convertedParams || [];
          templateModel.params.push('initialModel');
          templateModel.convertedParams.push('initialModel');
      }
  
      // return the generated code
      return this.template(templateModel);
  }