Mercurial > pub > ImplabJs
annotate core/src/js/text/format.js @ 30:2dfba21cd879
sync
author | cin |
---|---|
date | Wed, 27 Jun 2018 02:46:14 +0300 |
parents | acdcdf1a8d21 |
children |
rev | line source |
---|---|
0 | 1 define([ |
1 | 2 "../safe", |
0 | 3 "./format-compile", |
4 "dojo/number", | |
5 "dojo/date/locale", | |
6 "dojo/_base/array" ], function(safe, compile, number, date, array) { | |
7 | |
8 // {short,medium,full,long}-{date,time} | |
9 var convert = function(value, pattern) { | |
10 if (!pattern) | |
11 return value.toString(); | |
12 | |
13 if (pattern.toLocaleLowerCase() == "json") { | |
14 var cache = []; | |
15 return JSON.stringify(value, function(k, v) { | |
16 if (!safe.isPrimitive(v)) { | |
17 var id = array.indexOf(cache, v); | |
18 if (id >= 0) | |
19 return "@ref-" + id; | |
20 else | |
21 return v; | |
22 } else { | |
23 return v; | |
24 } | |
24
f750c89976d3
Added trace tools, implab/log/trace!<channel-name>, <channel-name> is optional
cin
parents:
9
diff
changeset
|
25 },2); |
0 | 26 } |
27 | |
28 if (safe.isNumber(value)) { | |
29 var nopt = {}; | |
30 if (pattern.indexOf("!") === 0) { | |
31 nopt.round = -1; | |
32 pattern = pattern.substr(1); | |
33 } | |
34 nopt.pattern = pattern; | |
35 return number.format(value, nopt); | |
36 } else if (value instanceof Date) { | |
37 var m = pattern.match(/^(\w+)-(\w+)$/); | |
38 if (m) | |
39 return date.format(value, { | |
40 selector : m[2], | |
41 formatLength : m[1] | |
42 }); | |
9 | 43 else if (pattern == "iso") |
44 return value.toISOString(); | |
0 | 45 else |
46 return date.format(value, { | |
47 selector : "date", | |
48 datePattern : pattern | |
49 }); | |
50 } else { | |
51 return value.toString(pattern); | |
52 } | |
53 }; | |
54 | |
55 function formatter(format) { | |
56 var data; | |
57 | |
58 if (arguments.length <= 1) | |
59 return format; | |
60 | |
61 data = Array.prototype.slice.call(arguments, 1); | |
62 | |
63 var template = compile(format); | |
64 | |
65 return template(function(name, pattern) { | |
66 var value = data[name]; | |
67 return !safe.isNull(value) ? convert(value, pattern) : ""; | |
68 }); | |
69 } | |
70 | |
71 formatter.compile = function(format) { | |
72 var template = compile(format); | |
73 | |
74 return function() { | |
75 var data = arguments; | |
76 | |
77 return template(function(name, pattern) { | |
78 var value = data[name]; | |
79 return !safe.isNull(value) ? convert(value, pattern) : ""; | |
80 }); | |
81 }; | |
82 }; | |
83 | |
84 formatter.convert = convert; | |
85 | |
86 return formatter; | |
87 }); |