From: Lars Knoll Date: Mon, 21 Jan 2013 12:46:39 +0000 (+0100) Subject: Implement String.prototype.trim X-Git-Tag: upstream/5.2.1~669^2~659^2~457 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ba8676b15f8afc28e9cc2a0fff9579bc9d1ac2df;p=platform%2Fupstream%2Fqtdeclarative.git Implement String.prototype.trim Change-Id: I6bbe52f77221a0e5bd8d9f275983a0513c7c50e0 Reviewed-by: Simon Hausmann --- diff --git a/qv4ecmaobjects.cpp b/qv4ecmaobjects.cpp index 5024f86..8ce8bce 100644 --- a/qv4ecmaobjects.cpp +++ b/qv4ecmaobjects.cpp @@ -615,6 +615,7 @@ void StringPrototype::init(ExecutionContext *ctx, const Value &ctor) defineDefaultProperty(ctx, QStringLiteral("toLocaleLowerCase"), method_toLocaleLowerCase); defineDefaultProperty(ctx, QStringLiteral("toUpperCase"), method_toUpperCase); defineDefaultProperty(ctx, QStringLiteral("toLocaleUpperCase"), method_toLocaleUpperCase); + defineDefaultProperty(ctx, QStringLiteral("trim"), method_trim); } QString StringPrototype::getThisString(ExecutionContext *ctx) @@ -1054,6 +1055,26 @@ Value StringPrototype::method_fromCharCode(ExecutionContext *ctx) return Value::fromString(ctx, str); } +Value StringPrototype::method_trim(ExecutionContext *ctx) +{ + if (ctx->thisObject.isNull() || ctx->thisObject.isUndefined()) + __qmljs_throw_type_error(ctx); + + QString s = __qmljs_to_string(ctx->thisObject, ctx).stringValue()->toQString(); + const QChar *chars = s.constData(); + int start, end; + for (start = 0; start < s.length(); ++start) { + if (!chars[start].isSpace() && chars[start].unicode() != 0xfeff) + break; + } + for (end = s.length() - 1; end >= start; --end) { + if (!chars[end].isSpace() && chars[end].unicode() != 0xfeff) + break; + } + + return Value::fromString(ctx, QString(chars + start, end - start + 1)); +} + // // Number object // diff --git a/qv4ecmaobjects_p.h b/qv4ecmaobjects_p.h index a2726c7..aaef393 100644 --- a/qv4ecmaobjects_p.h +++ b/qv4ecmaobjects_p.h @@ -122,6 +122,7 @@ struct StringPrototype: StringObject static Value method_toUpperCase(ExecutionContext *ctx); static Value method_toLocaleUpperCase(ExecutionContext *ctx); static Value method_fromCharCode(ExecutionContext *ctx); + static Value method_trim(ExecutionContext *ctx); }; struct NumberCtor: FunctionObject diff --git a/tests/TestExpectations b/tests/TestExpectations index ee19fde..87f9f96 100644 --- a/tests/TestExpectations +++ b/tests/TestExpectations @@ -520,7 +520,6 @@ S15.1.3.2_A5.3 failing 15.2.3.3-4-13 failing 15.2.3.3-4-164 failing 15.2.3.3-4-51 failing -15.2.3.3-4-82 failing 15.2.3.3-4-9 failing 15.2.3.3-4-90 failing 15.2.3.6-2-17-1 failing @@ -537,7 +536,6 @@ S15.1.3.2_A5.3 failing 15.2.3.6-4-300-1 failing 15.2.3.6-4-360-3 failing 15.2.3.6-4-360-7 failing -15.2.3.6-4-621 failing 15.2.3.7-6-a-110 failing 15.2.3.7-6-a-280 failing 15.2.3.7-6-a-286 failing @@ -775,134 +773,11 @@ S15.5.4.15_A1_T2 failing S15.5.4.15_A1_T7 failing S15.5.4.15_A1_T8 failing S15.5.4.15_A1_T9 failing -15.5.4.20-0-1 failing -15.5.4.20-0-2 failing -15.5.4.20-1-3 failing -15.5.4.20-1-4 failing -15.5.4.20-1-5 failing -15.5.4.20-1-6 failing -15.5.4.20-1-7 failing -15.5.4.20-1-8 failing -15.5.4.20-1-9 failing -15.5.4.20-2-1 failing -15.5.4.20-2-10 failing -15.5.4.20-2-11 failing -15.5.4.20-2-12 failing -15.5.4.20-2-13 failing -15.5.4.20-2-14 failing -15.5.4.20-2-15 failing -15.5.4.20-2-16 failing -15.5.4.20-2-17 failing -15.5.4.20-2-18 failing -15.5.4.20-2-19 failing -15.5.4.20-2-2 failing -15.5.4.20-2-20 failing -15.5.4.20-2-21 failing -15.5.4.20-2-22 failing -15.5.4.20-2-23 failing -15.5.4.20-2-24 failing -15.5.4.20-2-25 failing -15.5.4.20-2-26 failing -15.5.4.20-2-27 failing -15.5.4.20-2-28 failing -15.5.4.20-2-29 failing -15.5.4.20-2-3 failing -15.5.4.20-2-30 failing -15.5.4.20-2-31 failing -15.5.4.20-2-32 failing -15.5.4.20-2-33 failing -15.5.4.20-2-34 failing -15.5.4.20-2-35 failing -15.5.4.20-2-36 failing -15.5.4.20-2-37 failing -15.5.4.20-2-38 failing -15.5.4.20-2-39 failing -15.5.4.20-2-4 failing -15.5.4.20-2-40 failing -15.5.4.20-2-41 failing -15.5.4.20-2-42 failing -15.5.4.20-2-43 failing -15.5.4.20-2-44 failing -15.5.4.20-2-45 failing -15.5.4.20-2-46 failing -15.5.4.20-2-47 failing -15.5.4.20-2-49 failing -15.5.4.20-2-5 failing -15.5.4.20-2-50 failing -15.5.4.20-2-51 failing -15.5.4.20-2-6 failing -15.5.4.20-2-7 failing -15.5.4.20-2-8 failing -15.5.4.20-2-9 failing -15.5.4.20-3-1 failing -15.5.4.20-3-10 failing -15.5.4.20-3-11 failing -15.5.4.20-3-12 failing -15.5.4.20-3-13 failing -15.5.4.20-3-14 failing -15.5.4.20-3-2 failing -15.5.4.20-3-3 failing -15.5.4.20-3-4 failing -15.5.4.20-3-5 failing -15.5.4.20-3-6 failing -15.5.4.20-3-7 failing -15.5.4.20-3-8 failing -15.5.4.20-3-9 failing 15.5.4.20-4-1 failing S15.5.4.5_A1_T10 failing S15.5.4.6_A1_T10 failing S15.5.4.7_A1_T10 failing S15.5.4.7_A1_T11 failing -15.5.4.20-4-10 failing -15.5.4.20-4-11 failing -15.5.4.20-4-12 failing -15.5.4.20-4-13 failing -15.5.4.20-4-14 failing -15.5.4.20-4-16 failing -15.5.4.20-4-18 failing -15.5.4.20-4-19 failing -15.5.4.20-4-2 failing -15.5.4.20-4-20 failing -15.5.4.20-4-21 failing -15.5.4.20-4-22 failing -15.5.4.20-4-24 failing -15.5.4.20-4-27 failing -15.5.4.20-4-28 failing -15.5.4.20-4-29 failing -15.5.4.20-4-3 failing -15.5.4.20-4-30 failing -15.5.4.20-4-32 failing -15.5.4.20-4-34 failing -15.5.4.20-4-35 failing -15.5.4.20-4-36 failing -15.5.4.20-4-37 failing -15.5.4.20-4-38 failing -15.5.4.20-4-39 failing -15.5.4.20-4-4 failing -15.5.4.20-4-40 failing -15.5.4.20-4-41 failing -15.5.4.20-4-42 failing -15.5.4.20-4-43 failing -15.5.4.20-4-44 failing -15.5.4.20-4-45 failing -15.5.4.20-4-46 failing -15.5.4.20-4-47 failing -15.5.4.20-4-48 failing -15.5.4.20-4-49 failing -15.5.4.20-4-5 failing -15.5.4.20-4-50 failing -15.5.4.20-4-51 failing -15.5.4.20-4-52 failing -15.5.4.20-4-53 failing -15.5.4.20-4-54 failing -15.5.4.20-4-55 failing -15.5.4.20-4-56 failing -15.5.4.20-4-57 failing -15.5.4.20-4-58 failing -15.5.4.20-4-59 failing -15.5.4.20-4-6 failing -15.5.4.20-4-60 failing -15.5.4.20-4-8 failing S15.5.4.4_A1_T10 failing S15.5.4.8_A1_T10 failing S15.5.4.8_A1_T12 failing @@ -1093,4 +968,4 @@ S15.4.4.4_A1_T2 failing 15.4.4.21-8-b-iii-1-6 failing 15.12.3_4-1-1 -15.12.3_4-1-3 +15.12.3_4-1-3 \ No newline at end of file