push
travis-ci
244 of 244 new or added lines in 16 files covered. (100.0%)
126423 of 132280 relevant lines covered (95.57%)
259254.22 hits per line
1 |
# encoding: UTF-8
|
|
2 |
|
|
3 |
# Copyright 2012 Twitter, Inc
|
|
4 |
# http://www.apache.org/licenses/LICENSE-2.0
|
|
5 |
|
|
|
require 'base64'
|
7✔ |
7 |
|
|
|
module TwitterCldr |
7✔ |
|
module Segmentation |
7✔ |
|
class CategoryTable |
7✔ |
|
PACK_FMT_16 = 'NNn'.freeze |
7✔ |
12 |
|
|
|
class << self |
7✔ |
|
def load16(data) |
7✔ |
|
data = Base64.decode64(data)
|
28✔ |
16 |
|
|
|
new( |
28✔ |
|
(0...data.size).step(10).map do |i| |
28✔ |
|
data[i...(i + 10)].unpack(PACK_FMT_16) |
65,366✔ |
20 |
end
|
|
21 |
) |
|
22 |
end
|
|
23 |
end
|
|
24 |
|
|
|
attr_reader :values
|
7✔ |
26 |
|
|
|
def initialize(values) |
7✔ |
|
@values = values
|
28✔ |
29 |
end
|
|
30 |
|
|
|
def get(codepoint) |
7✔ |
|
find(codepoint)[2]
|
292,236✔ |
33 |
end
|
|
34 |
|
|
|
def dump16 |
7✔ |
|
data = ''.b.tap do |result| |
× |
|
values.each do |vals|
|
× |
|
result << vals.pack(PACK_FMT_16)
|
× |
39 |
end
|
|
40 |
end
|
|
41 |
|
|
|
Base64.encode64(data)
|
× |
43 |
end
|
|
44 |
|
|
|
private |
7✔ |
46 |
|
|
|
def find(codepoint) |
7✔ |
|
values.bsearch do |entry|
|
292,236✔ |
|
next -1 if codepoint < entry[0] |
3,004,820✔ |
|
next 1 if codepoint > entry[1] |
948,801✔ |
|
0
|
292,236✔ |
52 |
end
|
|
53 |
end
|
|
54 |
end
|
|
55 |
end
|
|
56 |
end
|