comunicationLeap/node_modules/utf8/coverage/utf8.js/utf8.js.html
node_modules/utf8/coverage/utf8.js/utf8.js.htmlRaw
1<!doctype html>
2<html lang="en">
3<head>
4 <title>Code coverage report for utf8.js/utf8.js</title>
5 <meta charset="utf-8">
6
7 <link rel="stylesheet" href="../prettify.css">
8
9 <style>
10 body, html {
11 margin:0; padding: 0;
12 }
13 body {
14 font-family: Helvetica Neue, Helvetica,Arial;
15 font-size: 10pt;
16 }
17 div.header, div.footer {
18 background: #eee;
19 padding: 1em;
20 }
21 div.header {
22 z-index: 100;
23 position: fixed;
24 top: 0;
25 border-bottom: 1px solid #666;
26 width: 100%;
27 }
28 div.footer {
29 border-top: 1px solid #666;
30 }
31 div.body {
32 margin-top: 10em;
33 }
34 div.meta {
35 font-size: 90%;
36 text-align: center;
37 }
38 h1, h2, h3 {
39 font-weight: normal;
40 }
41 h1 {
42 font-size: 12pt;
43 }
44 h2 {
45 font-size: 10pt;
46 }
47 pre {
48 font-family: Consolas, Menlo, Monaco, monospace;
49 margin: 0;
50 padding: 0;
51 line-height: 14px;
52 font-size: 14px;
53 -moz-tab-size: 2;
54 -o-tab-size: 2;
55 tab-size: 2;
56 }
57
58 div.path { font-size: 110%; }
59 div.path a:link, div.path a:visited { color: #000; }
60 table.coverage { border-collapse: collapse; margin:0; padding: 0 }
61
62 table.coverage td {
63 margin: 0;
64 padding: 0;
65 color: #111;
66 vertical-align: top;
67 }
68 table.coverage td.line-count {
69 width: 50px;
70 text-align: right;
71 padding-right: 5px;
72 }
73 table.coverage td.line-coverage {
74 color: #777 !important;
75 text-align: right;
76 border-left: 1px solid #666;
77 border-right: 1px solid #666;
78 }
79
80 table.coverage td.text {
81 }
82
83 table.coverage td span.cline-any {
84 display: inline-block;
85 padding: 0 5px;
86 width: 40px;
87 }
88 table.coverage td span.cline-neutral {
89 background: #eee;
90 }
91 table.coverage td span.cline-yes {
92 background: #b5d592;
93 color: #999;
94 }
95 table.coverage td span.cline-no {
96 background: #fc8c84;
97 }
98
99 .cstat-yes { color: #111; }
100 .cstat-no { background: #fc8c84; color: #111; }
101 .fstat-no { background: #ffc520; color: #111 !important; }
102 .cbranch-no { background: yellow !important; color: #111; }
103 .missing-if-branch {
104 display: inline-block;
105 margin-right: 10px;
106 position: relative;
107 padding: 0 4px;
108 background: black;
109 color: yellow;
110 xtext-decoration: line-through;
111 }
112 .missing-if-branch .typ {
113 color: inherit !important;
114 }
115
116 .entity, .metric { font-weight: bold; }
117 .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
118 .metric small { font-size: 80%; font-weight: normal; color: #666; }
119
120 div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
121 div.coverage-summary td, div.coverage-summary table th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
122 div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
123 div.coverage-summary th.file { border-right: none !important; }
124 div.coverage-summary th.pic { border-left: none !important; text-align: right; }
125 div.coverage-summary th.pct { border-right: none !important; }
126 div.coverage-summary th.abs { border-left: none !important; text-align: right; }
127 div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
128 div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
129 div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap; }
130 div.coverage-summary td.pic { min-width: 120px !important; }
131 div.coverage-summary a:link { text-decoration: none; color: #000; }
132 div.coverage-summary a:visited { text-decoration: none; color: #333; }
133 div.coverage-summary a:hover { text-decoration: underline; }
134 div.coverage-summary tfoot td { border-top: 1px solid #666; }
135
136 div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
137 height: 10px;
138 width: 7px;
139 display: inline-block;
140 margin-left: 0.5em;
141 }
142 div.coverage-summary .yui3-datatable-sort-indicator {
143 background: url("http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
144 }
145 div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
146 background-position: 0 -20px;
147 }
148 div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
149 background-position: 0 -10px;
150 }
151
152 .high { background: #b5d592 !important; }
153 .medium { background: #ffe87c !important; }
154 .low { background: #fc8c84 !important; }
155
156 span.cover-fill, span.cover-empty {
157 display:inline-block;
158 border:1px solid #444;
159 background: white;
160 height: 12px;
161 }
162 span.cover-fill {
163 background: #ccc;
164 border-right: 1px solid #444;
165 }
166 span.cover-empty {
167 background: white;
168 border-left: none;
169 }
170 span.cover-full {
171 border-right: none !important;
172 }
173 pre.prettyprint {
174 border: none !important;
175 padding: 0 !important;
176 margin: 0 !important;
177 }
178 .com { color: #999 !important; }
179 </style>
180</head>
181<body>
182<div class="header high">
183 <h1>Code coverage report for <span class="entity">utf8.js/utf8.js</span></h1>
184 <h2>
185
186 Statements: <span class="metric">92.31% <small>(120 / 130)</small></span>
187
188
189 Branches: <span class="metric">78.79% <small>(52 / 66)</small></span>
190
191
192 Functions: <span class="metric">90% <small>(9 / 10)</small></span>
193
194
195 Lines: <span class="metric">92.31% <small>(120 / 130)</small></span>
196
197 </h2>
198 <div class="path"><a href="../index.html">All files</a> » <a href="index.html">utf8.js/</a> » utf8.js</div>
199</div>
200<div class="body">
201<pre><table class="coverage">
202<tr><td class="line-count">1
2032
2043
2054
2065
2076
2087
2098
2109
21110
21211
21312
21413
21514
21615
21716
21817
21918
22019
22120
22221
22322
22423
22524
22625
22726
22827
22928
23029
23130
23231
23332
23433
23534
23635
23736
23837
23938
24039
24140
24241
24342
24443
24544
24645
24746
24847
24948
25049
25150
25251
25352
25453
25554
25655
25756
25857
25958
26059
26160
26261
26362
26463
26564
26665
26766
26867
26968
27069
27170
27271
27372
27473
27574
27675
27776
27877
27978
28079
28180
28281
28382
28483
28584
28685
28786
28887
28988
29089
29190
29291
29392
29493
29594
29695
29796
29897
29998
30099
301100
302101
303102
304103
305104
306105
307106
308107
309108
310109
311110
312111
313112
314113
315114
316115
317116
318117
319118
320119
321120
322121
323122
324123
325124
326125
327126
328127
329128
330129
331130
332131
333132
334133
335134
336135
337136
338137
339138
340139
341140
342141
343142
344143
345144
346145
347146
348147
349148
350149
351150
352151
353152
354153
355154
356155
357156
358157
359158
360159
361160
362161
363162
364163
365164
366165
367166
368167
369168
370169
371170
372171
373172
374173
375174
376175
377176
378177
379178
380179
381180
382181
383182
384183
385184
386185
387186
388187
389188
390189
391190
392191
393192
394193
395194
396195
397196
398197
399198
400199
401200
402201
403202
404203
405204
406205
407206
408207
409208
410209
411210
412211
413212
414213
415214
416215
417216
418217
419218
420219
421220
422221
423222
424223
425224
426225
427226
428227
429228
430229
431230
432231
433232
434233
435234
436235
437236
438237
439238
440239
441240
442241
443242</td><td class="line-coverage"><span class="cline-any cline-neutral"> </span>
444<span class="cline-any cline-yes">1</span>
445<span class="cline-any cline-neutral"> </span>
446<span class="cline-any cline-neutral"> </span>
447<span class="cline-any cline-yes">1</span>
448<span class="cline-any cline-neutral"> </span>
449<span class="cline-any cline-neutral"> </span>
450<span class="cline-any cline-yes">1</span>
451<span class="cline-any cline-neutral"> </span>
452<span class="cline-any cline-neutral"> </span>
453<span class="cline-any cline-neutral"> </span>
454<span class="cline-any cline-neutral"> </span>
455<span class="cline-any cline-yes">1</span>
456<span class="cline-any cline-yes">1</span>
457<span class="cline-any cline-yes">1</span>
458<span class="cline-any cline-neutral"> </span>
459<span class="cline-any cline-neutral"> </span>
460<span class="cline-any cline-neutral"> </span>
461<span class="cline-any cline-neutral"> </span>
462<span class="cline-any cline-yes">1</span>
463<span class="cline-any cline-neutral"> </span>
464<span class="cline-any cline-neutral"> </span>
465<span class="cline-any cline-yes">1</span>
466<span class="cline-any cline-yes">52</span>
467<span class="cline-any cline-yes">52</span>
468<span class="cline-any cline-yes">52</span>
469<span class="cline-any cline-yes">52</span>
470<span class="cline-any cline-yes">52</span>
471<span class="cline-any cline-yes">52</span>
472<span class="cline-any cline-yes">128</span>
473<span class="cline-any cline-yes">128</span>
474<span class="cline-any cline-neutral"> </span>
475<span class="cline-any cline-yes">8</span>
476<span class="cline-any cline-yes">8</span>
477<span class="cline-any cline-yes">5</span>
478<span class="cline-any cline-neutral"> </span>
479<span class="cline-any cline-neutral"> </span>
480<span class="cline-any cline-neutral"> </span>
481<span class="cline-any cline-yes">3</span>
482<span class="cline-any cline-yes">3</span>
483<span class="cline-any cline-neutral"> </span>
484<span class="cline-any cline-neutral"> </span>
485<span class="cline-any cline-yes">120</span>
486<span class="cline-any cline-neutral"> </span>
487<span class="cline-any cline-neutral"> </span>
488<span class="cline-any cline-yes">52</span>
489<span class="cline-any cline-neutral"> </span>
490<span class="cline-any cline-neutral"> </span>
491<span class="cline-any cline-neutral"> </span>
492<span class="cline-any cline-yes">1</span>
493<span class="cline-any cline-yes">24</span>
494<span class="cline-any cline-yes">24</span>
495<span class="cline-any cline-yes">24</span>
496<span class="cline-any cline-yes">24</span>
497<span class="cline-any cline-yes">24</span>
498<span class="cline-any cline-yes">32</span>
499<span class="cline-any cline-yes">32</span>
500<span class="cline-any cline-yes">5</span>
501<span class="cline-any cline-yes">5</span>
502<span class="cline-any cline-yes">5</span>
503<span class="cline-any cline-neutral"> </span>
504<span class="cline-any cline-yes">32</span>
505<span class="cline-any cline-neutral"> </span>
506<span class="cline-any cline-yes">24</span>
507<span class="cline-any cline-neutral"> </span>
508<span class="cline-any cline-neutral"> </span>
509<span class="cline-any cline-neutral"> </span>
510<span class="cline-any cline-neutral"> </span>
511<span class="cline-any cline-neutral"> </span>
512<span class="cline-any cline-yes">1</span>
513<span class="cline-any cline-yes">29</span>
514<span class="cline-any cline-neutral"> </span>
515<span class="cline-any cline-neutral"> </span>
516<span class="cline-any cline-yes">1</span>
517<span class="cline-any cline-yes">32</span>
518<span class="cline-any cline-yes">5</span>
519<span class="cline-any cline-neutral"> </span>
520<span class="cline-any cline-yes">27</span>
521<span class="cline-any cline-yes">27</span>
522<span class="cline-any cline-yes">3</span>
523<span class="cline-any cline-neutral"> </span>
524<span class="cline-any cline-yes">24</span>
525<span class="cline-any cline-yes">19</span>
526<span class="cline-any cline-yes">19</span>
527<span class="cline-any cline-neutral"> </span>
528<span class="cline-any cline-yes">5</span>
529<span class="cline-any cline-yes">5</span>
530<span class="cline-any cline-yes">5</span>
531<span class="cline-any cline-yes">5</span>
532<span class="cline-any cline-neutral"> </span>
533<span class="cline-any cline-yes">27</span>
534<span class="cline-any cline-yes">27</span>
535<span class="cline-any cline-neutral"> </span>
536<span class="cline-any cline-neutral"> </span>
537<span class="cline-any cline-yes">1</span>
538<span class="cline-any cline-yes">24</span>
539<span class="cline-any cline-neutral"> </span>
540<span class="cline-any cline-neutral"> </span>
541<span class="cline-any cline-neutral"> </span>
542<span class="cline-any cline-neutral"> </span>
543<span class="cline-any cline-neutral"> </span>
544<span class="cline-any cline-yes">24</span>
545<span class="cline-any cline-yes">24</span>
546<span class="cline-any cline-yes">24</span>
547<span class="cline-any cline-yes">24</span>
548<span class="cline-any cline-yes">24</span>
549<span class="cline-any cline-yes">32</span>
550<span class="cline-any cline-yes">32</span>
551<span class="cline-any cline-neutral"> </span>
552<span class="cline-any cline-yes">24</span>
553<span class="cline-any cline-neutral"> </span>
554<span class="cline-any cline-neutral"> </span>
555<span class="cline-any cline-neutral"> </span>
556<span class="cline-any cline-neutral"> </span>
557<span class="cline-any cline-neutral"> </span>
558<span class="cline-any cline-yes">1</span>
559<span class="cline-any cline-yes">60</span>
560<span class="cline-any cline-yes">1</span>
561<span class="cline-any cline-neutral"> </span>
562<span class="cline-any cline-neutral"> </span>
563<span class="cline-any cline-yes">59</span>
564<span class="cline-any cline-yes">59</span>
565<span class="cline-any cline-neutral"> </span>
566<span class="cline-any cline-yes">59</span>
567<span class="cline-any cline-yes">57</span>
568<span class="cline-any cline-neutral"> </span>
569<span class="cline-any cline-neutral"> </span>
570<span class="cline-any cline-neutral"> </span>
571<span class="cline-any cline-yes">2</span>
572<span class="cline-any cline-neutral"> </span>
573<span class="cline-any cline-neutral"> </span>
574<span class="cline-any cline-yes">1</span>
575<span class="cline-any cline-yes">60</span>
576<span class="cline-any cline-yes">60</span>
577<span class="cline-any cline-yes">60</span>
578<span class="cline-any cline-yes">60</span>
579<span class="cline-any cline-yes">60</span>
580<span class="cline-any cline-neutral"> </span>
581<span class="cline-any cline-yes">60</span>
582<span class="cline-any cline-no"> </span>
583<span class="cline-any cline-neutral"> </span>
584<span class="cline-any cline-neutral"> </span>
585<span class="cline-any cline-yes">60</span>
586<span class="cline-any cline-yes">24</span>
587<span class="cline-any cline-neutral"> </span>
588<span class="cline-any cline-neutral"> </span>
589<span class="cline-any cline-neutral"> </span>
590<span class="cline-any cline-yes">36</span>
591<span class="cline-any cline-yes">36</span>
592<span class="cline-any cline-neutral"> </span>
593<span class="cline-any cline-neutral"> </span>
594<span class="cline-any cline-yes">36</span>
595<span class="cline-any cline-yes">5</span>
596<span class="cline-any cline-neutral"> </span>
597<span class="cline-any cline-neutral"> </span>
598<span class="cline-any cline-neutral"> </span>
599<span class="cline-any cline-yes">31</span>
600<span class="cline-any cline-yes">4</span>
601<span class="cline-any cline-yes">3</span>
602<span class="cline-any cline-yes">3</span>
603<span class="cline-any cline-yes">3</span>
604<span class="cline-any cline-neutral"> </span>
605<span class="cline-any cline-no"> </span>
606<span class="cline-any cline-neutral"> </span>
607<span class="cline-any cline-neutral"> </span>
608<span class="cline-any cline-neutral"> </span>
609<span class="cline-any cline-neutral"> </span>
610<span class="cline-any cline-yes">27</span>
611<span class="cline-any cline-yes">20</span>
612<span class="cline-any cline-yes">19</span>
613<span class="cline-any cline-yes">19</span>
614<span class="cline-any cline-yes">19</span>
615<span class="cline-any cline-yes">19</span>
616<span class="cline-any cline-neutral"> </span>
617<span class="cline-any cline-no"> </span>
618<span class="cline-any cline-neutral"> </span>
619<span class="cline-any cline-neutral"> </span>
620<span class="cline-any cline-neutral"> </span>
621<span class="cline-any cline-neutral"> </span>
622<span class="cline-any cline-yes">7</span>
623<span class="cline-any cline-yes">6</span>
624<span class="cline-any cline-yes">6</span>
625<span class="cline-any cline-yes">5</span>
626<span class="cline-any cline-yes">5</span>
627<span class="cline-any cline-neutral"> </span>
628<span class="cline-any cline-yes">5</span>
629<span class="cline-any cline-yes">5</span>
630<span class="cline-any cline-neutral"> </span>
631<span class="cline-any cline-neutral"> </span>
632<span class="cline-any cline-neutral"> </span>
633<span class="cline-any cline-yes">1</span>
634<span class="cline-any cline-neutral"> </span>
635<span class="cline-any cline-neutral"> </span>
636<span class="cline-any cline-yes">1</span>
637<span class="cline-any cline-yes">1</span>
638<span class="cline-any cline-yes">1</span>
639<span class="cline-any cline-yes">1</span>
640<span class="cline-any cline-yes">28</span>
641<span class="cline-any cline-yes">28</span>
642<span class="cline-any cline-yes">28</span>
643<span class="cline-any cline-yes">28</span>
644<span class="cline-any cline-yes">28</span>
645<span class="cline-any cline-yes">28</span>
646<span class="cline-any cline-yes">32</span>
647<span class="cline-any cline-neutral"> </span>
648<span class="cline-any cline-yes">24</span>
649<span class="cline-any cline-neutral"> </span>
650<span class="cline-any cline-neutral"> </span>
651<span class="cline-any cline-neutral"> </span>
652<span class="cline-any cline-neutral"> </span>
653<span class="cline-any cline-yes">1</span>
654<span class="cline-any cline-neutral"> </span>
655<span class="cline-any cline-neutral"> </span>
656<span class="cline-any cline-neutral"> </span>
657<span class="cline-any cline-neutral"> </span>
658<span class="cline-any cline-neutral"> </span>
659<span class="cline-any cline-neutral"> </span>
660<span class="cline-any cline-neutral"> </span>
661<span class="cline-any cline-yes">1</span>
662<span class="cline-any cline-neutral"> </span>
663<span class="cline-any cline-neutral"> </span>
664<span class="cline-any cline-neutral"> </span>
665<span class="cline-any cline-neutral"> </span>
666<span class="cline-any cline-no"> </span>
667<span class="cline-any cline-no"> </span>
668<span class="cline-any cline-neutral"> </span>
669<span class="cline-any cline-yes">1</span>
670<span class="cline-any cline-yes">1</span>
671<span class="cline-any cline-yes">1</span>
672<span class="cline-any cline-neutral"> </span>
673<span class="cline-any cline-no"> </span>
674<span class="cline-any cline-no"> </span>
675<span class="cline-any cline-no"> </span>
676<span class="cline-any cline-no"> </span>
677<span class="cline-any cline-neutral"> </span>
678<span class="cline-any cline-neutral"> </span>
679<span class="cline-any cline-neutral"> </span>
680<span class="cline-any cline-no"> </span>
681<span class="cline-any cline-neutral"> </span>
682<span class="cline-any cline-neutral"> </span>
683<span class="cline-any cline-neutral"> </span>
684<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/*! http://mths.be/utf8js v2.0.0 by @mathias */
685;(function(root) {
686
687 // Detect free variables `exports`
688 var freeExports = typeof exports == 'object' && exports;
689
690 // Detect free variable `module`
691 var freeModule = typeof module == 'object' && module &&
692 module.exports == freeExports && module;
693
694 // Detect free variable `global`, from Node.js or Browserified code,
695 // and use it as `root`
696 var freeGlobal = typeof global == 'object' && global;
697 <span class="missing-if-branch" title="else path not taken"" >E</span>if (freeGlobal.global === freeGlobal || <span class="branch-1 cbranch-no" title="branch not covered" >freeGlobal.window === freeGlobal)</span> {
698 root = freeGlobal;
699 }
700
701 /*--------------------------------------------------------------------------*/
702
703 var stringFromCharCode = String.fromCharCode;
704
705 // Taken from http://mths.be/punycode
706 function ucs2decode(string) {
707 var output = [];
708 var counter = 0;
709 var length = string.length;
710 var value;
711 var extra;
712 while (counter < length) {
713 value = string.charCodeAt(counter++);
714 if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
715 // high surrogate, and there is a next character
716 extra = string.charCodeAt(counter++);
717 if ((extra & 0xFC00) == 0xDC00) { // low surrogate
718 output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
719 } else {
720 // unmatched surrogate; only append this code unit, in case the next
721 // code unit is the high surrogate of a surrogate pair
722 output.push(value);
723 counter--;
724 }
725 } else {
726 output.push(value);
727 }
728 }
729 return output;
730 }
731
732 // Taken from http://mths.be/punycode
733 function ucs2encode(array) {
734 var length = array.length;
735 var index = -1;
736 var value;
737 var output = '';
738 while (++index < length) {
739 value = array[index];
740 if (value > 0xFFFF) {
741 value -= 0x10000;
742 output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
743 value = 0xDC00 | value & 0x3FF;
744 }
745 output += stringFromCharCode(value);
746 }
747 return output;
748 }
749
750 /*--------------------------------------------------------------------------*/
751
752 // https://github.com/php/php-src/blob/master/ext/mbstring/oniguruma/enc/utf8.c
753 function createByte(codePoint, shift) {
754 return stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);
755 }
756
757 function encodeCodePoint(codePoint) {
758 if ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence
759 return stringFromCharCode(codePoint);
760 }
761 var symbol = '';
762 if ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence
763 symbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);
764 }
765 else if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence
766 symbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);
767 symbol += createByte(codePoint, 6);
768 }
769 else <span class="missing-if-branch" title="else path not taken"" >E</span>if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence
770 symbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);
771 symbol += createByte(codePoint, 12);
772 symbol += createByte(codePoint, 6);
773 }
774 symbol += stringFromCharCode((codePoint & 0x3F) | 0x80);
775 return symbol;
776 }
777
778 function utf8encode(string) {
779 var codePoints = ucs2decode(string);
780
781 // console.log(JSON.stringify(codePoints.map(function(x) {
782 // return 'U+' + x.toString(16).toUpperCase();
783 // })));
784
785 var length = codePoints.length;
786 var index = -1;
787 var codePoint;
788 var byteString = '';
789 while (++index < length) {
790 codePoint = codePoints[index];
791 byteString += encodeCodePoint(codePoint);
792 }
793 return byteString;
794 }
795
796 /*--------------------------------------------------------------------------*/
797
798 // https://github.com/php/php-src/blob/master/ext/json/utf8_decode.c
799 function readContinuationByte() {
800 if (byteIndex >= byteCount) {
801 throw Error('Invalid byte index');
802 }
803
804 var continuationByte = byteArray[byteIndex] & 0xFF;
805 byteIndex++;
806
807 if ((continuationByte & 0xC0) == 0x80) {
808 return continuationByte & 0x3F;
809 }
810
811 // If we end up here, it’s not a continuation byte
812 throw Error('Invalid continuation byte');
813 }
814
815 function decodeSymbol() {
816 var byte1;
817 var byte2;
818 var byte3;
819 var byte4;
820 var codePoint;
821
822 <span class="missing-if-branch" title="if path not taken"" >I</span>if (byteIndex > byteCount) {
823<span class="cstat-no" title="statement not covered" > throw Error('Invalid byte index');</span>
824 }
825
826 if (byteIndex == byteCount) {
827 return false;
828 }
829
830 // Read first byte
831 byte1 = byteArray[byteIndex] & 0xFF;
832 byteIndex++;
833
834 // 1-byte sequence (no continuation bytes)
835 if ((byte1 & 0x80) == 0) {
836 return byte1;
837 }
838
839 // 2-byte sequence
840 if ((byte1 & 0xE0) == 0xC0) {
841 var byte2 = readContinuationByte();
842 codePoint = ((byte1 & 0x1F) << 6) | byte2;
843 <span class="missing-if-branch" title="else path not taken"" >E</span>if (codePoint >= 0x80) {
844 return codePoint;
845 } else {
846<span class="cstat-no" title="statement not covered" > throw Error('Invalid continuation byte');</span>
847 }
848 }
849
850 // 3-byte sequence (may include unpaired surrogates)
851 if ((byte1 & 0xF0) == 0xE0) {
852 byte2 = readContinuationByte();
853 byte3 = readContinuationByte();
854 codePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;
855 <span class="missing-if-branch" title="else path not taken"" >E</span>if (codePoint >= 0x0800) {
856 return codePoint;
857 } else {
858<span class="cstat-no" title="statement not covered" > throw Error('Invalid continuation byte');</span>
859 }
860 }
861
862 // 4-byte sequence
863 if ((byte1 & 0xF8) == 0xF0) {
864 byte2 = readContinuationByte();
865 byte3 = readContinuationByte();
866 byte4 = readContinuationByte();
867 codePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) |
868 (byte3 << 0x06) | byte4;
869 <span class="missing-if-branch" title="else path not taken"" >E</span>if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {
870 return codePoint;
871 }
872 }
873
874 throw Error('Invalid UTF-8 detected');
875 }
876
877 var byteArray;
878 var byteCount;
879 var byteIndex;
880 function utf8decode(byteString) {
881 byteArray = ucs2decode(byteString);
882 byteCount = byteArray.length;
883 byteIndex = 0;
884 var codePoints = [];
885 var tmp;
886 while ((tmp = decodeSymbol()) !== false) {
887 codePoints.push(tmp);
888 }
889 return ucs2encode(codePoints);
890 }
891
892 /*--------------------------------------------------------------------------*/
893
894 var utf8 = {
895 'version': '2.0.0',
896 'encode': utf8encode,
897 'decode': utf8decode
898 };
899
900 // Some AMD build optimizers, like r.js, check for specific condition patterns
901 // like the following:
902 <span class="missing-if-branch" title="if path not taken"" >I</span>if (
903 typeof define == 'function' &&
904<span class="branch-1 cbranch-no" title="branch not covered" > typeof define.amd == 'object' </span>&&
905<span class="branch-2 cbranch-no" title="branch not covered" > define.amd</span>
906 ) {
907<span class="cstat-no" title="statement not covered" > define(<span class="fstat-no" title="function not covered" >function() {</span></span>
908<span class="cstat-no" title="statement not covered" > return utf8;</span>
909 });
910 } else <span class="missing-if-branch" title="else path not taken"" >E</span>if (freeExports && !freeExports.nodeType) {
911 <span class="missing-if-branch" title="else path not taken"" >E</span>if (freeModule) { // in Node.js or RingoJS v0.8.0+
912 freeModule.exports = utf8;
913 } else { // in Narwhal or RingoJS v0.7.0-
914<span class="cstat-no" title="statement not covered" > var object = {};</span>
915<span class="cstat-no" title="statement not covered" > var hasOwnProperty = object.hasOwnProperty;</span>
916<span class="cstat-no" title="statement not covered" > for (var key in utf8) {</span>
917<span class="cstat-no" title="statement not covered" > hasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);</span>
918 }
919 }
920 } else { // in Rhino or a web browser
921<span class="cstat-no" title="statement not covered" > root.utf8 = utf8;</span>
922 }
923
924}(this));
925 </pre></td></tr>
926</table></pre>
927
928</div>
929<div class="footer">
930 <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Jun 20 2013 14:00:05 GMT+0200 (CEST)</div>
931</div>
932
933<script src="../prettify.js"></script>
934
935<script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
936<script>
937
938 YUI().use('datatable', function (Y) {
939
940 var formatters = {
941 pct: function (o) {
942 o.className += o.record.get('classes')[o.column.key];
943 try {
944 return o.value.toFixed(2) + '%';
945 } catch (ex) { return o.value + '%'; }
946 },
947 html: function (o) {
948 o.className += o.record.get('classes')[o.column.key];
949 return o.record.get(o.column.key + '_html');
950 }
951 },
952 defaultFormatter = function (o) {
953 o.className += o.record.get('classes')[o.column.key];
954 return o.value;
955 };
956
957 function getColumns(theadNode) {
958 var colNodes = theadNode.all('tr th'),
959 cols = [],
960 col;
961 colNodes.each(function (colNode) {
962 col = {
963 key: colNode.getAttribute('data-col'),
964 label: colNode.get('innerHTML') || ' ',
965 sortable: !colNode.getAttribute('data-nosort'),
966 className: colNode.getAttribute('class'),
967 type: colNode.getAttribute('data-type'),
968 allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
969 };
970 col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
971 cols.push(col);
972 });
973 return cols;
974 }
975
976 function getRowData(trNode, cols) {
977 var tdNodes = trNode.all('td'),
978 i,
979 row = { classes: {} },
980 node,
981 name;
982 for (i = 0; i < cols.length; i += 1) {
983 name = cols[i].key;
984 node = tdNodes.item(i);
985 row[name] = node.getAttribute('data-value') || node.get('innerHTML');
986 row[name + '_html'] = node.get('innerHTML');
987 row.classes[name] = node.getAttribute('class');
988 //Y.log('Name: ' + name + '; Value: ' + row[name]);
989 if (cols[i].type === 'number') { row[name] = row[name] * 1; }
990 }
991 //Y.log(row);
992 return row;
993 }
994
995 function getData(tbodyNode, cols) {
996 var data = [];
997 tbodyNode.all('tr').each(function (trNode) {
998 data.push(getRowData(trNode, cols));
999 });
1000 return data;
1001 }
1002
1003 function replaceTable(node) {
1004 if (!node) { return; }
1005 var cols = getColumns(node.one('thead')),
1006 data = getData(node.one('tbody'), cols),
1007 table,
1008 parent = node.get('parentNode');
1009
1010 table = new Y.DataTable({
1011 columns: cols,
1012 data: data,
1013 sortBy: 'file'
1014 });
1015 parent.set('innerHTML', '');
1016 table.render(parent);
1017 }
1018
1019 Y.on('domready', function () {
1020 replaceTable(Y.one('div.coverage-summary table'));
1021 if (typeof prettyPrint === 'function') {
1022 prettyPrint();
1023 }
1024 });
1025 });
1026</script>
1027</body>
1028</html>