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

Side by Side Diff: charted/lib/core/utils/bidi_formatter.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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 | « charted/lib/core/utils.dart ('k') | charted/lib/core/utils/color.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 //
2 // Copyright 2014 Google Inc. All rights reserved.
3 //
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file or at
6 // https://developers.google.com/open-source/licenses/bsd
7 //
8
9 part of charted.core.utils;
10
11 /// Charts are always drawn with LTR context.
12 BidiFormatter _bidiFormatter = new BidiFormatter.LTR();
13
14 /// Fix direction of HTML using <span dir="..."> for RTL when required
15 fixMarkupDirection(String markup) =>
16 _bidiFormatter.wrapWithSpan(markup, isHtml:true);
17
18 /// Fix direction of text using unicode markers for RTL when required
19 /// This is a simplified version of BidiFormatter.wrapWithUnicode that
20 /// is meant to be used for small labels only (Eg: axis ticks).
21 String fixSimpleTextDirection(String text) {
22 TextDirection direction = estimateDirectionOfSimpleText(text);
23 if (TextDirection.RTL == direction) {
24 var marker = direction == TextDirection.RTL ? Bidi.RLE : Bidi.LRE;
25 return "${marker}$text${Bidi.PDF}";
26 }
27 return text;
28 }
29
30 /// Estimates direction of simple text.
31 /// This is a simplified version of Bidi.estimateDirectionOfText
32 var _spaceRegExp = new RegExp(r'\s+');
33 var _digitsRegExp = new RegExp(r'\d');
34 TextDirection estimateDirectionOfSimpleText(String text) {
35 var rtlCount = 0,
36 total = 0,
37 hasWeaklyLtr = false,
38 tokens = text.split(_spaceRegExp);
39
40 for (int i = 0, len = tokens.length; i < len; ++i) {
41 var token = tokens.elementAt(i);
42 if (Bidi.startsWithRtl(token)) {
43 rtlCount++;
44 total++;
45 } else if (Bidi.hasAnyLtr(token)) {
46 total++;
47 } else if (_digitsRegExp.hasMatch(token)) {
48 hasWeaklyLtr = true;
49 }
50 }
51 if (total == 0) {
52 return hasWeaklyLtr ? TextDirection.LTR : TextDirection.UNKNOWN;
53 } else {
54 return rtlCount > 0.4 * total ? TextDirection.RTL : TextDirection.LTR;
55 }
56 }
OLDNEW
« no previous file with comments | « charted/lib/core/utils.dart ('k') | charted/lib/core/utils/color.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698