Что же такое Sugar?
Это javascript-библиотека для работы со встроенными объектами javascript, которая:
В качестве примера использования, автор приводит вот такой код:
Не правда ли, код читается почти как английский текст.
Самые нетерпеливые могут изучить предоставляемые функции по этой ссылке, а остальных ждёт краткое описание под катом.
Sugar исправляет поддержку стандартных методов Javascript 1.6, таких как
Sugar исправляет кросс-браузерные различия при использовании
Основные методы объекта
Sugar добавляет к датам метод
Хотя Sugar прямо и не взаимодействует с
В Sugar есть основные методы, такие как
Полезные ссылки:
Это javascript-библиотека для работы со встроенными объектами javascript, которая:
- расширяет встроенные объекты языка, добавляя полезные и интуитивно-понятные методы;
- добавляет кросс-браузерную функциональность, где она сломана или ее нет;
- полностью покрыта тестами;
- легко взаимодействует с другими фреймоворками и сторонним кодом;
- проста в понимании и использовании
В качестве примера использования, автор приводит вот такой код:
getLatestTweets(function(t) {
var users = t.map('user').unique();
var total = users.sum('statuses_count').format();
var top = users.max('followers_count').first();
var count = top.followers_count.format();
var since = Date.create(top.created_at);
return users.length + ' users with a total of ' + total + ' tweets.\n' +
top.screen_name + ' is the top with ' + count + ' followers\n' +
'and started tweeting ' + since.relative() + '.';
});
Не правда ли, код читается почти как английский текст.
Самые нетерпеливые могут изучить предоставляемые функции по этой ссылке, а остальных ждёт краткое описание под катом.
Массивы
Sugar исправляет поддержку стандартных методов Javascript 1.6, таких как
indexOf
, forEach
, reduce
и др. Методы доработаны, чтобы принимать типы аргументов, которые стандартные функции не поддерживают: вложенные объекты, регулярные выражения, строки. При возможности будут использоваться нативные методы браузера. Полный список методов. ['a','b','c'].indexOf('c'); > 2
[{ foo:'bar' }, { moo:'car' }].indexOf({ moo: 'car' }); > 1
['rocksteady','and','bebop'].map('length'); > [10,3,5]
['rocksteady','and','bebop'].sortBy('length'); > ["and","bebop","rocksteady"]
['rocksteady','and','bebop'].findAll(/o/); > ["rocksteady","bebop"]
['rocksteady','and','bebop'].first(1); > ["rocksteady"]
['rocksteady','and','bebop'].from(1); > ["and","bebop"]
['three','two','one'].groupBy('length'); > {"5":["three"],"3":["two","one"]}
[1,65,2,77,34].average(); > 35.8
[1,2].add([2,3]); > [1,2,2,3]
[1,2].subtract([2,3]); > [1]
[1,2].intersect([2,3]); > [2]
[1,2].union([2,3]); > [1,2,3]
Строки
Sugar исправляет кросс-браузерные различия при использовании
split
с регулярными выражениями. Языковая поддержка улучшена добавлением методов, поддерживающих юникод и китайский, японский, греческий, иврит. Такие методы как each
, words
, lines
, paragraphs
были добавлены для гибкой работой с текстом. Полный список методов.'abcdefgh'.split(/[bdf]/); > ["a","c","e","gh"]
'こんにちは'.hasHiragana(); > true
'환영 합니다'.hasHangul(); > true
'Добро пожаловать!'.hasCyrillic(); > true
'welcome'.pad(1, ' ').pad(3, '-'); > "--- welcome ---"
'hut!'.repeat(3); > "hut!hut!hut!"
'off with her head!'.words(); > ["off","with","her","head!"]
'off with her head!'.each(/he.+?\b/g); > ["her","head"]
'off with her head!'.startsWith(/[a-z]ff/); > true
'off with her head!'.first(3); > "off"
'off with her head!'.from(3); > " with her head!"
Числа
Основные методы объекта
Math
доступны в Sugar в качестве шорткатов. Дополнительные плюшки — это округление с необходимой точностью, выравнивание чисел и их форматирование. В Sugar также есть методы, которые связывают числа в датами для легкой конвертации одноих в другие. Полный список методов. (125.425).round(2); > 125.43
(125.425).round(-2); > 100
(4235000).format(); > "4,235,000"
(50).pad(5); > "00050"
(23).ordinalize(); > "23rd"
(5).upto(10); > [5,6,7,8,9,10]
(5).daysAfter('Wednesday'); > "Monday, August 8, 2011 00:00"
(5).yearsBefore('2001'); > "Monday, January 1, 1996 00:00"
(5).times(function() {
/* Run 5 times */
})
Даты
Sugar добавляет к датам метод
Date.create
, который понимает даты в различных форматах (к сожалению дд.мм.гггг не понимает) — текстовых, относительых, абсолютных, timestamp'ы. Даты можно выводить в различных форматах с помощью простого синтаксиса. С помощью метода is
, который понимает все форматы ввода дат, можно производить сложные сравнения. Полный список методов. Date.create('June 15, 2002'); > "Saturday, June 15, 2002 00:00"
Date.create('2002-06-15'); > "Saturday, June 15, 2002 00:00"
Date.create('2002/06/15'); > "Saturday, June 15, 2002 00:00"
Date.create('15 June, 2002'); > "Saturday, June 15, 2002 00:00"
Date.create('today'); > "Monday, August 1, 2011 00:00"
Date.create('2 days ago'); > "Saturday, July 30, 2011 20:26"
Date.create(888888888899); > "Tuesday, March 3, 1998 04:34"
Date.create('the 15th of last month'); > "Friday, July 15, 2011 00:00"
Date.create('the first day of 1998'); > "Thursday, January 1, 1998 00:00"
Date.create().format('{12hr}:{mm} {tt} on {Weekday}'); > "8:26 pm on Monday"
Date.create('3200 seconds ago').relative(); > "53 minutes ago"
Date.create().iso(); > "2011-08-01T16:26:20.122Z"
Date.create().isAfter('May 25');> true
Date.create().is('tuesday'); > false
Date.create().is('July'); > false
Date.create().is('the 7th of June'); > false
Date.create().addDays(2); > "Wednesday, August 3, 2011 20:26"
Date.create().addMonths(2); > "Saturday, October 1, 2011 20:26"
Date.create().addYears(2); > "Thursday, August 1, 2013 20:26"
Объекты
Хотя Sugar прямо и не взаимодействует с
Object.prototype
, библиотека обеспечивает несколько шортактов для доступа к метода класса Object
. Один из них — это Object.extended
, который создает объект-хеш, у которого есть методы, аналогичные доступным в других языках. Также добавляются методы проверки типа, такие как isString
, isFunction
и др. Полный список методов. Object.extended({ broken: 'wear' }).keys(); > ["broken"]
Object.extended({ broken: 'wear' }).values(); > ["wear"]
Object.keys({ broken: 'wear' }); > ["broken"]
Object.clone({ broken: 'wear' }); > {"broken":"wear"}
Object.isString('yes, it is'); > true
Object.isFunction(function() {}); > true
Функции
В Sugar есть основные методы, такие как
bind
, который позволяет определить область видимости функции. Также есть методы delay
, defer
и Function.lazy
, который позволяет создавать замыкания для вычислений, создающих большую нагрузку на CPU. Полный список методов. (function(a) {
/* this = 'wasabi', a = 'bobby' */
}).bind('wasabi', 'bobby')();
(function() {
/* delayed 500ms */
}).delay(500);
[1,2,3].each(Function.lazy(function() {
/* Each iteration will occur 5ms after the previous one */
}, 5));
* This source code was highlighted with Source Code Highlighter.
Полезные ссылки: