text: var _ = require('lodash');
  var path = require('path');
  var util = require('util');
  var BackboneFile = require('./file');
  
  function Language(title, folder) {
      var that = this;
  
      this.title = title;
      this.folder = folder;
  
      Object.defineProperty(this, 'id', {
          get: function() {
              return path.basename(that.folder);
          }
      });
  }
  
  /*
  A Langs is a list of languages stored in a LANGS.md file
  */
  function Langs() {
      BackboneFile.apply(this, arguments);
  
      this.languages = [];
  }
  util.inherits(Langs, BackboneFile);
  
  Langs.prototype.type = 'langs';
  
  // Parse the readme content
  Langs.prototype.parse = function(content) {
      var that = this;
  
      return this.parser.langs(content)
      .then(function(langs) {
          that.languages = _.map(langs, function(entry) {
              return new Language(entry.title, entry.path);
          });
      });
  };
  
  // Return the list of languages
  Langs.prototype.list = function() {
      return this.languages;
  };
  
  // Return default/main language for the book
  Langs.prototype.getDefault = function() {
      return _.first(this.languages);
  };
  
  // Return true if a language is the default one
  // "lang" cam be a string (id) or a Language entry
  Langs.prototype.isDefault = function(lang) {
      lang = lang.id || lang;
      return (this.cound() > 0 && this.getDefault().id == lang);
  };
  
  // Return the count of languages
  Langs.prototype.count = function() {
      return _.size(this.languages);
  };
  
  // Return templating context for the languages list
  Langs.prototype.getContext = function() {
      if (this.count() == 0) return {};
  
      return {
          languages: {
              list: _.map(this.languages, function(lang) {
                  return {
                      id: lang.id,
                      title: lang.title
                  };
              })
          }
      };
  };
  
  module.exports = Langs;
  