diff options
| author | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2013-06-13 19:39:00 +0200 |
| commit | a61e7cb0c80ae773cab9753bd8a4e7e888bbf415 (patch) | |
| tree | 019a235869a5e087055700895d4584c80e2f9afb /addons/web/static/lib | |
| parent | 5ed0ac2614b9430e61dae472d657a21c037d6ee9 (diff) | |
| parent | 180e6e41d81e28df43b41e3cb6131225d4169a28 (diff) | |
[MERGE] forward port of branch saas-1 up to revid 4887 chs@openerp.com-20130612153934-qyp6pb3bc4za4taf
bzr revid: chs@openerp.com-20130613172414-dln3g4j0ykcwaa02
bzr revid: chs@openerp.com-20130613173900-xl7rh321nnw2b04b
Diffstat (limited to 'addons/web/static/lib')
32 files changed, 132 insertions, 23 deletions
diff --git a/addons/web/static/lib/cleditor/jquery.cleditor.js b/addons/web/static/lib/cleditor/jquery.cleditor.js index e3446991daf..3de9089443d 100644 --- a/addons/web/static/lib/cleditor/jquery.cleditor.js +++ b/addons/web/static/lib/cleditor/jquery.cleditor.js @@ -296,6 +296,11 @@ // Bind the window resize event when the width or height is auto or %
if (/auto|%/.test("" + options.width + options.height))
$(window).resize(function() {
+ //Forcefully blurred iframe contentWindow, chrome, IE, safari doesn't trigger blur on window resize and due to which text disappears
+ var contentWindow = editor.$frame[0].contentWindow;
+ if(!$.browser.mozilla && contentWindow){
+ $(contentWindow).trigger('blur');
+ }
// CHM Note MonkeyPatch: if the DOM is not remove, refresh the cleditor
if(editor.$main.parent().parent().size()) {
refresh(editor);
diff --git a/addons/web/static/lib/datejs/date.js b/addons/web/static/lib/datejs/date.js index eda450113bb..96b96924da4 100644 --- a/addons/web/static/lib/datejs/date.js +++ b/addons/web/static/lib/datejs/date.js @@ -7,7 +7,7 @@ * date.js // English (United States)
* date-en-US.js // English (United States)
* date-de-DE.js // Deutsch (Deutschland)
- * date-es-MX.js // français (France)
+ * date-es-MX.js // français (France)
*/
alert(
@@ -17,5 +17,5 @@ alert( " date.js // English (United States)\n" +
" date-en-US.js // English (United States)\n" +
" date-de-DE.js // Deutsch (Deutschland)\n" +
- " date-es-MX.js // français (France)\n"
+ " date-es-MX.js // français (France)\n"
);
\ No newline at end of file diff --git a/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js b/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js index d8051fa269d..d8051fa269d 100755..100644 --- a/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js +++ b/addons/web/static/lib/jquery.placeholder/jquery.placeholder.js diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png Binary files differindex 5b5dab2ab7b..e425e6e46eb 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png Binary files differindex ad3d6346e00..3b2914a2db9 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png Binary files differindex 42ccba269b6..e7d01fac6a7 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png Binary files differindex 5a46b47cb16..22641ccb51c 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_dadada_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png Binary files differindex 86c2baa655e..c0911d8cd44 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png Binary files differindex e65ca1297c7..d45b4160fa9 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_glass_75_ffffff_1x400.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary files differindex 7c9fa6c6edc..3cd467e18ef 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png Binary files differindex 0e05810fffe..06a6708da17 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png Binary files differindex b273ff111d2..e913bce11f7 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_222222_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png Binary files differindex 09d1cdc856c..34e38d1146e 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_2e83ff_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png Binary files differindex 59bd45b907c..1486b0cfc2e 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_454545_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png Binary files differindex 6d02426c114..ae855c08a0e 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_888888_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png Binary files differindex 2ab019b73ec..9e8939e38f8 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_cd0a0a_256x240.png diff --git a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png Binary files differindex c9869351a73..68d801e2563 100644 --- a/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png +++ b/addons/web/static/lib/jquery.ui.bootstrap/css/custom-theme/images/ui-icons_f6cf3b_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png Binary files differindex 5b5dab2ab7b..e425e6e46eb 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png Binary files differindex ac8b229af95..72d4757363c 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png Binary files differindex b39a6fb27ff..e3fcd7c9898 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png Binary files differindex 42ccba269b6..e7d01fac6a7 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png Binary files differindex 5a46b47cb16..22641ccb51c 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png Binary files differindex 86c2baa655e..c0911d8cd44 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png Binary files differindex 4443fdc1a15..5fd6c50c715 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png Binary files differindex 7c9fa6c6edc..3cd467e18ef 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png Binary files differindex b273ff111d2..e913bce11f7 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png Binary files differindex 84defe6e8ab..34e38d1146e 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png Binary files differindex 59bd45b907c..1486b0cfc2e 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png Binary files differindex 6d02426c114..ae855c08a0e 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png diff --git a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png Binary files differindex 2ab019b73ec..9e8939e38f8 100644 --- a/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png +++ b/addons/web/static/lib/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png diff --git a/addons/web/static/lib/py.js/.hg_archival.txt b/addons/web/static/lib/py.js/.hg_archival.txt index 1d47dff4445..94f4a9ad6e8 100644 --- a/addons/web/static/lib/py.js/.hg_archival.txt +++ b/addons/web/static/lib/py.js/.hg_archival.txt @@ -1,5 +1,5 @@ repo: 076b192d0d8ab2b92d1dbcfa3da055382f30eaea -node: 142c22b230636674a0cee6bc29e6975f0f1600a5 +node: 7ee0bc7b4e9138f485cdc9ec791961d8ef452f17 branch: default latesttag: 0.7 -latesttagdistance: 9 +latesttagdistance: 11 diff --git a/addons/web/static/lib/py.js/lib/py.js b/addons/web/static/lib/py.js/lib/py.js index 8d6443b7753..2c738dc95d1 100644 --- a/addons/web/static/lib/py.js/lib/py.js +++ b/addons/web/static/lib/py.js/lib/py.js @@ -273,7 +273,7 @@ var py = {}; var Special = '[:;.,`@]'; var Funny = group(Operator, Bracket, Special); - var ContStr = group("[uU]?'([^']*)'", '[uU]?"([^"]*)"'); + var ContStr = group("([uU])?'([^']*)'", '([uU])?"([^"]*)"'); var PseudoToken = Whitespace + group(Number, Funny, ContStr, Name); @@ -311,7 +311,8 @@ var py = {}; } else if (string_pattern.test(token)) { var m = string_pattern.exec(token); tokens.push(create(symbols['(string)'], { - value: (m[2] !== undefined ? m[2] : m[3]) + unicode: !!(m[2] || m[4]), + value: (m[3] !== undefined ? m[3] : m[5]) })); } else if (token in symbols) { var symbol; @@ -393,13 +394,14 @@ var py = {}; switch(val.constructor) { case Object: - var out = py.PY_call(py.object); - for(var k in val) { - if (val.hasOwnProperty(k)) { - out[k] = val[k]; + // TODO: why py.object instead of py.dict? + var o = py.PY_call(py.object); + for (var prop in val) { + if (val.hasOwnProperty(prop)) { + o[prop] = val[prop]; } } - return out; + return o; case Array: return py.list.fromJSON(val); } @@ -521,7 +523,7 @@ var py = {}; } }; py.PY_getAttr = function (o, attr_name) { - return PY_ensurepy(o.__getattribute__(attr_name),attr_name); + return PY_ensurepy(o.__getattribute__(attr_name)); }; py.PY_str = function (o) { var v = o.__str__(); @@ -762,14 +764,7 @@ var py = {}; // Conversion toJSON: function () { - var out = {}; - for(var k in this) { - if (this.hasOwnProperty(k) && !/^__/.test(k)) { - var val = this[k]; - out[k] = val.toJSON ? val.toJSON() : val; - } - } - return out; + throw new Error(this.constructor.name + ' can not be converted to JSON'); } }); var NoneType = py.type('NoneType', null, { @@ -998,7 +993,7 @@ var py = {}; } var t = py.PY_call(py.tuple); for(var i=0; i<ar.length; ++i) { - t._values.push(PY_ensurepy(ar[i],i)); + t._values.push(PY_ensurepy(ar[i])); } return t; } @@ -1032,7 +1027,7 @@ var py = {}; if (!d.hasOwnProperty(k)) { continue; } instance.__setitem__( py.str.fromJSON(k), - PY_ensurepy(d[k],k)); + PY_ensurepy(d[k])); } return instance; }, @@ -1108,6 +1103,114 @@ var py = {}; }); + /** + * Implements the decoding of Python string literals (embedded in + * JS strings) into actual JS strings. This includes the decoding + * of escapes into their corresponding JS + * characters/codepoints/whatever. + * + * The ``unicode`` flags notes whether the literal should be + * decoded as a bytestring literal or a unicode literal, which + * pretty much only impacts decoding (or not) of unicode escapes + * at this point since bytestrings are not technically handled + * (everything is decoded to JS "unicode" strings) + * + * Eventurally, ``str`` could eventually use typed arrays, that'd + * be interesting... + */ + var PY_decode_string_literal = function (str, unicode) { + var out = [], code; + // Directly maps a single escape code to an output + // character + var direct_map = { + '\\': '\\', + '"': '"', + "'": "'", + 'a': '\x07', + 'b': '\x08', + 'f': '\x0c', + 'n': '\n', + 'r': '\r', + 't': '\t', + 'v': '\v' + }; + + for (var i=0; i<str.length; ++i) { + if (str[i] !== '\\') { + out.push(str[i]); + continue; + } + var escape = str[i+1]; + if (escape in direct_map) { + out.push(direct_map[escape]); + ++i; + continue; + } + + switch (escape) { + // Ignored + case '\n': ++i; continue; + // Character named name in the Unicode database (Unicode only) + case 'N': + if (!unicode) { break; } + throw Error("SyntaxError: \\N{} escape not implemented"); + case 'u': + if (!unicode) { break; } + var uni = str.slice(i+2, i+6); + if (!/[0-9a-f]{4}/i.test(uni)) { + throw new Error([ + "SyntaxError: (unicode error) 'unicodeescape' codec", + " can't decode bytes in position ", + i, "-", i+4, + ": truncated \\uXXXX escape" + ].join('')); + } + code = parseInt(uni, 16); + out.push(String.fromCharCode(code)); + // escape + 4 hex digits + i += 5; + continue; + case 'U': + if (!unicode) { break; } + // TODO: String.fromCodePoint + throw Error("SyntaxError: \\U escape not implemented"); + case 'x': + // get 2 hex digits + var hex = str.slice(i+2, i+4); + if (!/[0-9a-f]{2}/i.test(hex)) { + if (!unicode) { + throw new Error('ValueError: invalid \\x escape'); + } + throw new Error([ + "SyntaxError: (unicode error) 'unicodeescape'", + " codec can't decode bytes in position ", + i, '-', i+2, + ": truncated \\xXX escape" + ].join('')) + } + code = parseInt(hex, 16); + out.push(String.fromCharCode(code)); + // skip escape + 2 hex digits + i += 3; + continue; + default: + // Check if octal + if (!/[0-8]/.test(escape)) { break; } + var r = /[0-8]{1,3}/g; + r.lastIndex = i+1; + var m = r.exec(str); + var oct = m[0]; + code = parseInt(oct, 8); + out.push(String.fromCharCode(code)); + // skip matchlength + i += oct.length; + continue; + } + out.push('\\'); + } + + return out.join(''); + }; // All binary operators with fallbacks, so they can be applied generically var PY_operators = { '==': ['eq', 'eq', function (a, b) { return a === b; }], @@ -1217,7 +1320,8 @@ var py = {}; } return PY_ensurepy(val, expr.value); case '(string)': - return py.str.fromJSON(expr.value); + return py.str.fromJSON(PY_decode_string_literal( + expr.value, expr.unicode)); case '(number)': return py.float.fromJSON(expr.value); case '(constant)': |
