/* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html version: 3.2.0 build: 2676 */ YUI.add('datatype-number-parse', function(Y) { /** * Parse number submodule. * * @module datatype * @submodule datatype-number-parse * @for DataType.Number */ var LANG = Y.Lang; Y.mix(Y.namespace("DataType.Number"), { /** * Converts data to type Number. * * @method parse * @param data {String | Number | Boolean} Data to convert. The following * values return as null: null, undefined, NaN, "". * @return {Number} A number, or null. */ parse: function(data) { var number = (data === null) ? data : +data; if(LANG.isNumber(number)) { return number; } else { Y.log("Could not parse data " + Y.dump(data) + " to type Number", "warn", "datatype-number"); return null; } } }); // Add Parsers shortcut Y.namespace("Parsers").number = Y.DataType.Number.parse; }, '3.2.0' ); YUI.add('datatype-number-format', function(Y) { /** * Number submodule. * * @module datatype * @submodule datatype-number */ /** * Format number submodule. * * @module datatype * @submodule datatype-number-format */ /** * DataType.Number provides a set of utility functions to operate against Number objects. * * @class DataType.Number * @static */ var LANG = Y.Lang; Y.mix(Y.namespace("DataType.Number"), { /** * Takes a Number and formats to string for display to user. * * @method format * @param data {Number} Number. * @param config {Object} (Optional) Optional configuration values: *
* Any strftime string is supported, such as "%I:%M:%S %p". strftime has several format specifiers defined by the Open group at * http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html * PHP added a few of its own, defined at http://www.php.net/strftime *
** This javascript implementation supports all the PHP specifiers and a few more. The full list is below. *
** If not specified, it defaults to the ISO 8601 standard date format: %Y-%m-%d. * This may be overridden by the deprecated Y.config.dateFormat property. *
** Y.DataType.Date.Locale["fr"] = Y.merge(Y.DataType.Date.Locale, { * a: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"], * A: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], * b: ["jan", "fév", "mar", "avr", "mai", "jun", "jui", "aoû", "sep", "oct", "nov", "déc"], * B: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"], * c: "%a %d %b %Y %T %Z", * p: ["", ""], * P: ["", ""], * x: "%d.%m.%Y", * X: "%T" * }); **
* Y.DataType.Date.Locale["fr-CA"] = Y.merge(Y.DataType.Date.Locale["fr"], { * x: "%Y-%m-%d" * }); **
* var d = new Date("2008/04/22"); * Y.DataType.Date.format(d, { format: "%A, %d %B == %x", locale: "fr" }); ** will return: *
* mardi, 22 avril == 22.04.2008 ** And *
* Y.DataType.Date.format(d, {format: "%A, %d %B == %x", locale: "fr-CA" }); ** Will return: *
* mardi, 22 avril == 2008-04-22 ** @requires oop * @class DataType.Date.Locale * @static * @deprecated - use Y.config.lang to request one of many built-in languages instead. */ var YDateEn = { a: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], A: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], b: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], B: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], c: "%a %d %b %Y %T %Z", p: ["AM", "PM"], P: ["am", "pm"], r: "%I:%M:%S %p", x: "%d/%m/%y", X: "%T" }; Y.namespace("DataType.Date.Locale"); Y.DataType.Date.Locale["en"] = YDateEn; Y.DataType.Date.Locale["en-US"] = Y.merge(YDateEn, { c: "%a %d %b %Y %I:%M:%S %p %Z", x: "%m/%d/%Y", X: "%I:%M:%S %p" }); Y.DataType.Date.Locale["en-GB"] = Y.merge(YDateEn, { r: "%l:%M:%S %P %Z" }); Y.DataType.Date.Locale["en-AU"] = Y.merge(YDateEn); }, '3.2.0' ,{lang:['ar','ar-JO','ca','ca-ES','da','da-DK','de','de-AT','de-DE','el','el-GR','en','en-AU','en-CA','en-GB','en-IE','en-IN','en-JO','en-MY','en-NZ','en-PH','en-SG','en-US','es','es-AR','es-BO','es-CL','es-CO','es-EC','es-ES','es-MX','es-PE','es-PY','es-US','es-UY','es-VE','fi','fi-FI','fr','fr-BE','fr-CA','fr-FR','hi','hi-IN','id','id-ID','it','it-IT','ja','ja-JP','ko','ko-KR','ms','ms-MY','nb','nb-NO','nl','nl-BE','nl-NL','pl','pl-PL','pt','pt-BR','ro','ro-RO','ru','ru-RU','sv','sv-SE','th','th-TH','tr','tr-TR','vi','vi-VN','zh-Hans','zh-Hans-CN','zh-Hant','zh-Hant-HK','zh-Hant-TW']}); YUI.add('datatype-date', function(Y){}, '3.2.0' ,{use:['datatype-date-parse', 'datatype-date-format']}); YUI.add('datatype-xml-parse', function(Y) { /** * Parse XML submodule. * * @module datatype * @submodule datatype-xml-parse * @for DataType.XML */ var LANG = Y.Lang; Y.mix(Y.namespace("DataType.XML"), { /** * Converts data to type XMLDocument. * * @method parse * @param data {String} Data to convert. * @return {XMLDoc} XML Document. */ parse: function(data) { var xmlDoc = null; if(LANG.isString(data)) { try { if(!LANG.isUndefined(DOMParser)) { xmlDoc = new DOMParser().parseFromString(data, "text/xml"); } } catch(e) { try { if(!LANG.isUndefined(ActiveXObject)) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.loadXML(data); } } catch(ee) { Y.log(ee.message + " (Could not parse data " + Y.dump(data) + " to type XML Document)", "warn", "datatype-xml"); } } } if( (LANG.isNull(xmlDoc)) || (LANG.isNull(xmlDoc.documentElement)) || (xmlDoc.documentElement.nodeName === "parsererror") ) { Y.log("Could not parse data " + Y.dump(data) + " to type XML Document", "warn", "datatype-xml"); } return xmlDoc; } }); // Add Parsers shortcut Y.namespace("Parsers").xml = Y.DataType.XML.parse; }, '3.2.0' ); YUI.add('datatype-xml-format', function(Y) { /** * Format XML submodule. * * @module datatype * @submodule datatype-xml-format */ /** * XML submodule. * * @module datatype * @submodule datatype-xml */ /** * DataType.XML provides a set of utility functions to operate against XML documents. * * @class DataType.XML * @static */ var LANG = Y.Lang; Y.mix(Y.namespace("DataType.XML"), { /** * Converts data to type XMLDocument. * * @method format * @param data {XMLDoc} Data to convert. * @return {String} String. */ format: function(data) { try { if(!LANG.isUndefined(XMLSerializer)) { return (new XMLSerializer()).serializeToString(data); } } catch(e) { if(data && data.xml) { return data.xml; } else { Y.log("Could not format data " + Y.dump(data) + " from type XML", "warn", "datatype-xml"); return (LANG.isValue(data) && data.toString) ? data.toString() : ""; } } } }); }, '3.2.0' ); YUI.add('datatype-xml', function(Y){}, '3.2.0' ,{use:['datatype-xml-parse', 'datatype-xml-format']}); YUI.add('datatype', function(Y){}, '3.2.0' ,{use:['datatype-number', 'datatype-date', 'datatype-xml']});