Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. // Author @realmyst
  2. function declOfNum(number, titles) {
  3. cases = [2, 0, 1, 1, 1, 2];
  4. return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
  5. }
  6.  
  7. // use
  8. declOfNum(count, ['найдена', 'найдено', 'найдены']);
  9.  
  10. // Author @retyui
  11. // Currying (каррирование)
  12. function declOfNum(titles){
  13. number = Math.abs(number);
  14. var cases = [2, 0, 1, 1, 1, 2];
  15. return function(number){
  16. return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
  17. }
  18. }
  19. // use:
  20. declOfNum(['Яблоко','Яблока','Яблок'])(2); // Яблока
  21.  
  22. var apples = declOfNum(['Яблоко','Яблока','Яблок']);
  23. apples(0) // Яблок
  24. apples(1) // Яблоко
  25. apples(2) // Яблока
  26.  
  27. // Auto Currying (автоматическое каррирование)
  28. var declOfNum = (function(){
  29. var cases = [2, 0, 1, 1, 1, 2];
  30. var declOfNumSubFunction = function(titles, number){
  31. number = Math.abs(number);
  32. return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
  33. }
  34. return function(_titles) {
  35. if ( arguments.length === 1 ){
  36. return function(_number){
  37. return declOfNumSubFunction(_titles, _number)
  38. }
  39. }else{
  40. return declOfNumSubFunction.apply(null,arguments)
  41. }
  42. }
  43. })()
  44.  
  45. // use:
  46. declOfNum(['Яблоко','Яблока','Яблок'], 0); // Яблок
  47. declOfNum(['Яблоко','Яблока','Яблок'], 1); // Яблоко
  48. declOfNum(['Яблоко','Яблока','Яблок'], 2); // Яблока
  49.  
  50. var count_comments = declOfNum(['Коментарий', 'Коментария', 'Комантариев']);
  51. count_comments(0); // Коментариев
  52. count_comments(1); // Коментарий
  53. count_comments(2); // Коментария
  54. count_comments(69); // Коментариев
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement