whole_func_string: function(input) {
      this.reset();
      // Prepare form
      this.form = {
        signature: utils.sha256(input),
        text: input,
        html: {
          prompt: '',
          template: '',
          solution: ''
        },
        controls: []
      };
      // Inject formCompiler into inline compiler
      this.inline.formCompiler = this;
      // Render form
      this.form.html.template = this.append(input).outToString();
      this.prepareHtml();
      return this.form;
    }
func_code_string: function(input) {
      this.reset();
      // Prepare form
      this.form = {
        signature: utils.sha256(input),
        text: input,
        html: {
          prompt: '',
          template: '',
          solution: ''
        },
        controls: []
      };
      // Inject formCompiler into inline compiler
      this.inline.formCompiler = this;
      // Render form
      this.form.html.template = this.append(input).outToString();
      this.prepareHtml();
      return this.form;
    }
func_documentation_string: Compiles the plain text into a form descriptor.
  
  Form descriptor is an object with following properties:
  
  * `signature` -- SHA256 hash of the `input`
  * `text` -- a copy of `input`
  * `html` -- an object containing three markup strings:
  
  * `template` -- initial compilation result (correct values stripped)
  
  * `prompt` -- an empty HTML form (correct values stripped,
  solution blocks removed, sortables shuffled)
  
  * `solution` -- correct values applied, solution blocks shown.
  
  * `controls` -- an array of control descriptors.
  
  @param input {String} source text
  @returns {Object} Form descriptor