unibits 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +1 -0
- data/bin/unibits +7 -0
- data/lib/unibits.rb +6 -2
- data/lib/unibits/symbolify.rb +14 -6
- data/lib/unibits/version.rb +1 -1
- data/unibits.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca4463dcb78d345bf7cd7b89687d618803fb9a98
|
4
|
+
data.tar.gz: c2657ec5e6e74a70183e97ae629695170c446759
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62beee1710b54962120c55b8b8bec94c42cda2305c9eab4d190945a0ec1716de5b8dae9cce3c201dc352c993c60d0709f8854b436241ab020a2c3d1348087b93
|
7
|
+
data.tar.gz: 0b7c3a0446cf3b0f3cb943465753fe13db6a3b130ffc9401e426300faa4be034f85c3d7af399a3c51617322ee3622d221c1e29387e6d8297c4b53cf54f1ec60d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
## CHANGELOG
|
2
2
|
|
3
|
+
### 2.2.0
|
4
|
+
|
5
|
+
* Add mongolian free variation selectors and combining grapheme joiner to interesting codepoints list
|
6
|
+
* Green highlighting of "marks" in Unicode
|
7
|
+
* Always use dotted circle for non-spacing marks
|
8
|
+
* Always prepend enclosing marks with a space
|
9
|
+
* Update characteristics gem (includes new blanks and UTF-8 dialects with japanese emojis)
|
10
|
+
|
3
11
|
### 2.1.1
|
4
12
|
|
5
13
|
* Proper UTF-32 validness / invalid codepoint highlighting, see https://bugs.ruby-lang.org/issues/13292
|
data/README.md
CHANGED
@@ -16,6 +16,7 @@ Each byte of the given string is highlighted using the following mechanism (char
|
|
16
16
|
- Blue for control characters
|
17
17
|
- Light blue for blanks
|
18
18
|
- Non-control formatting characters in pink
|
19
|
+
- Green for marks (Unicode only)
|
19
20
|
- Random color for all other characters
|
20
21
|
|
21
22
|
## Setup
|
data/bin/unibits
CHANGED
@@ -56,6 +56,7 @@ if argv[:help]
|
|
56
56
|
#{Paint["control", Unibits::COLORS[:control]]}
|
57
57
|
#{Paint["blank", Unibits::COLORS[:blank]]}
|
58
58
|
#{Paint["format", Unibits::COLORS[:format]]}
|
59
|
+
#{Paint["mark", Unibits::COLORS[:mark]]}
|
59
60
|
|
60
61
|
#{Paint["STATS", :underline]}
|
61
62
|
|
@@ -76,6 +77,12 @@ if argv[:help]
|
|
76
77
|
incompl. | not enough bytes left to finish codepoint
|
77
78
|
hlf.srg. | other half of surrogate missing
|
78
79
|
|
80
|
+
UTF-32
|
81
|
+
|
82
|
+
incompl. | not enough bytes left to finish codepoint
|
83
|
+
toolarge | codepoint value exceeds maximum allowed (U+10FFFF)
|
84
|
+
sur.gate | codepoint value would be a surrogate half
|
85
|
+
|
79
86
|
#{Paint["MORE INFO", :underline]}
|
80
87
|
|
81
88
|
https://github.com/janlelis/unibits
|
data/lib/unibits.rb
CHANGED
@@ -10,6 +10,7 @@ module Unibits
|
|
10
10
|
SUPPORTED_ENCODINGS = Encoding.name_list.grep(
|
11
11
|
Regexp.union(
|
12
12
|
/^UTF-8$/,
|
13
|
+
/^UTF8-/,
|
13
14
|
/^UTF-...E$/,
|
14
15
|
/^ASCII-8BIT$/,
|
15
16
|
/^US-ASCII$/,
|
@@ -30,6 +31,7 @@ module Unibits
|
|
30
31
|
control: "#0000FF",
|
31
32
|
blank: "#33AADD",
|
32
33
|
format: "#FF00FF",
|
34
|
+
mark: "#228822",
|
33
35
|
}
|
34
36
|
|
35
37
|
DEFAULT_TERMINAL_WIDTH = 80
|
@@ -100,7 +102,7 @@ module Unibits
|
|
100
102
|
case encoding_name
|
101
103
|
when "US-ASCII"
|
102
104
|
codepoint = "invalid"
|
103
|
-
when "UTF-8"
|
105
|
+
when "UTF-8", /^UTF8/
|
104
106
|
# this tries to detect what is wrong with this utf-8 encoded string
|
105
107
|
# sorry for this mess
|
106
108
|
case char.unpack("B*")[0]
|
@@ -244,6 +246,8 @@ module Unibits
|
|
244
246
|
COLORS[:blank]
|
245
247
|
elsif char_info.format?
|
246
248
|
COLORS[:format]
|
249
|
+
elsif char_info.unicode? && char_info.category[0] == "M"
|
250
|
+
COLORS[:mark]
|
247
251
|
else
|
248
252
|
random_color
|
249
253
|
end
|
@@ -267,7 +271,7 @@ module Unibits
|
|
267
271
|
when 'ASCII-8BIT'
|
268
272
|
bin_byte_1 = ""
|
269
273
|
bin_byte_2 = bin_byte_complete
|
270
|
-
when 'UTF-8'
|
274
|
+
when 'UTF-8', /^UTF8/
|
271
275
|
if byteindex == 0
|
272
276
|
if bin_byte_complete =~ /^(0|1{2,4}0)([01]+)$/
|
273
277
|
bin_byte_1 = $1
|
data/lib/unibits/symbolify.rb
CHANGED
@@ -79,6 +79,10 @@ module Unibits
|
|
79
79
|
}
|
80
80
|
|
81
81
|
INTERESTING_CODEPOINTS = {
|
82
|
+
0x180B => "FVS1",
|
83
|
+
0x180C => "FVS2",
|
84
|
+
0x180D => "FVS3",
|
85
|
+
|
82
86
|
0x200E => "LRM",
|
83
87
|
0x200F => "RLM",
|
84
88
|
0x202A => "LRE",
|
@@ -91,6 +95,8 @@ module Unibits
|
|
91
95
|
0x2068 => "FSI",
|
92
96
|
0x2069 => "PDI",
|
93
97
|
|
98
|
+
0x034F => "CGJ",
|
99
|
+
|
94
100
|
0xFE00 => "VS1",
|
95
101
|
0xFE01 => "VS2",
|
96
102
|
0xFE02 => "VS3",
|
@@ -395,9 +401,8 @@ module Unibits
|
|
395
401
|
def self.unicode(char, char_info)
|
396
402
|
return "n/a" if !char_info.assigned?
|
397
403
|
|
398
|
-
char = char.dup
|
404
|
+
char = char.dup.encode("UTF-8")
|
399
405
|
ord = char.ord
|
400
|
-
encoding = char_info.encoding
|
401
406
|
|
402
407
|
if char_info.delete?
|
403
408
|
char = CONTROL_DELETE_SYMBOL
|
@@ -406,15 +411,18 @@ module Unibits
|
|
406
411
|
elsif char_info.c1?
|
407
412
|
char = CONTROL_C1_NAMES[ord]
|
408
413
|
elsif char_info.blank?
|
409
|
-
char = "]"
|
414
|
+
char = "]" + char + "["
|
410
415
|
elsif ord > 917536 && ord < 917631
|
411
|
-
char = "TAG ".
|
412
|
-
|
416
|
+
char = "TAG " + char.tr(TAGS, ASCII_CHARS)
|
417
|
+
elsif char_info.category == "Mn"
|
418
|
+
char = "◌" + char
|
419
|
+
elsif char_info.category == "Me"
|
420
|
+
char = " " + char
|
413
421
|
else
|
414
422
|
char = INTERESTING_CODEPOINTS[char.ord] || char
|
415
423
|
end
|
416
424
|
|
417
|
-
char
|
425
|
+
char
|
418
426
|
end
|
419
427
|
|
420
428
|
def self.byte(char, char_info)
|
data/lib/unibits/version.rb
CHANGED
data/unibits.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
|
|
19
19
|
|
20
20
|
gem.add_dependency 'paint', '>= 0.9', '< 3.0'
|
21
21
|
gem.add_dependency 'unicode-display_width', '~> 1.1'
|
22
|
-
gem.add_dependency 'characteristics', '~> 0.
|
22
|
+
gem.add_dependency 'characteristics', '~> 0.4'
|
23
23
|
gem.add_dependency 'rationalist', '~> 2.0'
|
24
24
|
|
25
25
|
gem.required_ruby_version = "~> 2.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unibits
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Lelis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paint
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.
|
53
|
+
version: '0.4'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.
|
60
|
+
version: '0.4'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rationalist
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|