Lesterpig/openparty-mafia

View on GitHub
lib/french.js

Summary

Maintainability
A
0 mins
Test Coverage
module.exports = {

  nb2word: function(nb) {
    switch(nb) {
      case 0: return "aucun";
      case 1: return "un";
      case 2: return "deux";
      case 3: return "trois";
      case 4: return "quatre";
      case 5: return "cinq";
      case 6: return "six";
      case 7: return "sept";
      case 8: return "huit";
      case 9: return "neuf";
      case 10: return "dix";
      case 11: return "onze";
      case 12: return "douze";
      default: return ""+nb;
    }
  },

  /**
   * Joins an object as a french sentence.
   *
   * join({ a: 1, b: 2 }) = "un a et deux b"
   *
   * @param  Object obj      Keys are "noun" and values are "nb of noun"
   * @param  String beforeNb
   * @param  String afterNb
   * @return String
   */
  join: function(obj, beforeNb, afterNb) {

    beforeNb = beforeNb || "";
    afterNb  = afterNb  || "";

    var array = [];
    for(var i in obj) { // to array
      array.push({k: i, v: obj[i]});
    }

    if(array.length === 0)
      return false;

    var output = "";
    array.forEach(function(e, i, a) {

      if(i > 0) {
        output += i < a.length-1 ? ", " : " et ";
      }
      output += beforeNb + this.nb2word(e.v) + afterNb + " " + e.k;
      if(e.v > 1)
        output += "s"; //should be improved

    }.bind(this));

    return output;
  }

};