Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1590)

Side by Side Diff: ui/webui/resources/js/load_time_data.js

Issue 2917003003: [MD Bookmarks] Support elision of bookmark names in the bookmark toast. (Closed)
Patch Set: fix multiline Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/webui/resources/js/compiled_resources2.gyp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview This file defines a singleton which provides access to all data 6 * @fileoverview This file defines a singleton which provides access to all data
7 * that is available as soon as the page's resources are loaded (before DOM 7 * that is available as soon as the page's resources are loaded (before DOM
8 * content has finished loading). This data includes both localized strings and 8 * content has finished loading). This data includes both localized strings and
9 * any data that is important to have ready from a very early stage (e.g. things 9 * any data that is important to have ready from a very early stage (e.g. things
10 * that must be displayed right away). 10 * that must be displayed right away).
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 * @param {string} id The ID of the string we want. 80 * @param {string} id The ID of the string we want.
81 * @param {...(string|number)} var_args The extra values to include in the 81 * @param {...(string|number)} var_args The extra values to include in the
82 * formatted output. 82 * formatted output.
83 * @return {string} The formatted string. 83 * @return {string} The formatted string.
84 */ 84 */
85 getStringF: function(id, var_args) { 85 getStringF: function(id, var_args) {
86 var value = this.getString(id); 86 var value = this.getString(id);
87 if (!value) 87 if (!value)
88 return ''; 88 return '';
89 89
90 var args = Array.prototype.slice.call(arguments);
91 args[0] = value;
92 return this.substituteString.apply(this, args);
93 },
94
95 /**
96 * Returns a formatted localized string where $1 to $9 are replaced by the
97 * second to the tenth argument. Any standalone $ signs must be escaped as
98 * $$.
99 * @param {string} label The label to substitute through.
100 * This is not an resource ID.
101 * @param {...(string|number)} var_args The extra values to include in the
102 * formatted output.
103 * @return {string} The formatted string.
104 */
105 substituteString: function(label, var_args) {
90 var varArgs = arguments; 106 var varArgs = arguments;
91 return value.replace(/\$[$1-9]/g, function(m) { 107 return label.replace(/\$(.|$|\n)/g, function(m) {
108 assert(m.match(/\$[$1-9]/), 'Unescaped $ found in localized string.');
92 return m == '$$' ? '$' : varArgs[m[1]]; 109 return m == '$$' ? '$' : varArgs[m[1]];
93 }); 110 });
94 }, 111 },
95 112
96 /** 113 /**
114 * Returns a formatted string where $1 to $9 are replaced by the second to
115 * tenth argument, split apart into a list of pieces describing how the
116 * substitution was performed. Any standalone $ signs must be escaped as $$.
117 * @param {string} label A localized string to substitute through.
118 * This is not an resource ID.
119 * @param {...(string|number)} var_args The extra values to include in the
120 * formatted output.
121 * @return {!Array<!{value: string, arg: (null|string)}>} The formatted
122 * string pieces.
123 */
124 getSubstitutedStringPieces: function(label, var_args) {
125 var varArgs = arguments;
126 // Split the string by separately matching all occurrences of $1-9 and of
127 // non $1-9 pieces.
128 var pieces = (label.match(/(\$[1-9])|(([^$]|\$([^1-9]|$))+)/g) ||
129 []).map(function(p) {
130 // Pieces that are not $1-9 should be returned after replacing $$
131 // with $.
132 if (!p.match(/^\$[1-9]$/)) {
133 assert(
134 (p.match(/\$/g) || []).length % 2 == 0,
135 'Unescaped $ found in localized string.');
136 return {value: p.replace(/\$\$/g, '$'), arg: null};
137 }
138
139 // Otherwise, return the substitution value.
140 return {value: varArgs[p[1]], arg: p};
141 });
142
143 return pieces;
144 },
145
146 /**
97 * As above, but also makes sure that the value is a boolean. 147 * As above, but also makes sure that the value is a boolean.
98 * @param {string} id The key that identifies the desired boolean. 148 * @param {string} id The key that identifies the desired boolean.
99 * @return {boolean} The corresponding boolean value. 149 * @return {boolean} The corresponding boolean value.
100 */ 150 */
101 getBoolean: function(id) { 151 getBoolean: function(id) {
102 var value = this.getValue(id); 152 var value = this.getValue(id);
103 expectIsType(id, value, 'boolean'); 153 expectIsType(id, value, 'boolean');
104 return /** @type {boolean} */ (value); 154 return /** @type {boolean} */ (value);
105 }, 155 },
106 156
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 * @param {string} type The type we expect |value| to be. 199 * @param {string} type The type we expect |value| to be.
150 */ 200 */
151 function expectIsType(id, value, type) { 201 function expectIsType(id, value, type) {
152 expect( 202 expect(
153 typeof value == type, '[' + value + '] (' + id + ') is not a ' + type); 203 typeof value == type, '[' + value + '] (' + id + ') is not a ' + type);
154 } 204 }
155 205
156 expect(!loadTimeData, 'should only include this file once'); 206 expect(!loadTimeData, 'should only include this file once');
157 loadTimeData = new LoadTimeData; 207 loadTimeData = new LoadTimeData;
158 })(); 208 })();
OLDNEW
« no previous file with comments | « ui/webui/resources/js/compiled_resources2.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698