symbolify 1.0.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +25 -0
- data/Gemfile +1 -0
- data/MIT-LICENSE.txt +1 -1
- data/README.md +6 -3
- data/Rakefile +5 -1
- data/lib/symbolify.rb +25 -28
- data/lib/symbolify/version.rb +1 -2
- data/spec/symbolify_spec.rb +23 -1
- data/symbolify.gemspec +5 -5
- metadata +18 -13
- data/.travis.yml +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 87aefbff8db0ef735451e2b96377deccf20dd51e0b68194b1f8e2ccd697c1eb8
|
4
|
+
data.tar.gz: a3241b2b275b3cf7e38fdc5dc1631559b570713b87002348aa7675caa36d25c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95e7ad65bd12f59006d87d64bfe7ba0fb13e9cf3083375b796b670c174f68db4ac63e73d88ca5ecaa6780b52f0a53ff0663f1454423deaeff95f40053530c23f
|
7
|
+
data.tar.gz: 2ba80318dd0623e4cf78a35c84d6991873834b4d7e62013c24f468392870d5bf6f24e9edfa7cc282d6be0c5106204e606ca5c2690e2bbdbc8b6f05b6b6342192
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
## CHANGELOG
|
2
2
|
|
3
|
+
### 1.4.0
|
4
|
+
|
5
|
+
* Relax Ruby version requirement to allow Ruby 3.0
|
6
|
+
* Remove UNICODE_VERSION constant since it only mirrors the one
|
7
|
+
of the unicode-categories gem
|
8
|
+
|
9
|
+
### 1.3.1
|
10
|
+
|
11
|
+
* Allow version of characteristics dependency to 1.x
|
12
|
+
|
13
|
+
### 1.3.0
|
14
|
+
|
15
|
+
* Unicode 10 general categories
|
16
|
+
|
17
|
+
### 1.2.0
|
18
|
+
|
19
|
+
* Return "n/a*" for unassigned codepoints which are ignorable
|
20
|
+
* Change "TAG ␡" to "TAG ✦"
|
21
|
+
|
22
|
+
### 1.1.0
|
23
|
+
|
24
|
+
* Add special characters (U+FFF9 - U+FFFC)
|
25
|
+
* Non-control separators return ⏎
|
26
|
+
* Ensure that only first character/codepoint will be returned
|
27
|
+
|
3
28
|
### 1.0.0
|
4
29
|
|
5
30
|
* Import from unibits gem
|
data/Gemfile
CHANGED
data/MIT-LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Symbolify [![[version]](https://badge.fury.io/rb/symbolify.svg)](
|
1
|
+
# Symbolify [![[version]](https://badge.fury.io/rb/symbolify.svg)](https://badge.fury.io/rb/symbolify) [![[ci]](https://github.com/janlelis/symbolify/workflows/Test/badge.svg)](https://github.com/janlelis/symbolify/actions?query=workflow%3ATest)
|
2
2
|
|
3
3
|
Safely print all codepoints from Unicode and single-byte encodings in UTF-8. It replaces control and non-printable characters with readable equivalents and wraps most blank characters in `]` and `[`.
|
4
4
|
|
@@ -25,13 +25,16 @@ puts Symbolify.symbolify "\u{200F}" # RLM
|
|
25
25
|
puts Symbolify.symbolify "\u{2067}" # RLI
|
26
26
|
puts Symbolify.symbolify "\u{0300}" # ◌̀
|
27
27
|
puts Symbolify.symbolify " " # ] [
|
28
|
+
puts Symbolify.symbolify "\u{FFF9}" # IAA
|
29
|
+
puts Symbolify.symbolify "\u{FFFC}" # OBJ
|
28
30
|
puts Symbolify.symbolify "\u{E0020}" # TAG ␠
|
29
31
|
puts Symbolify.symbolify "\u{E01D7}" # VS232
|
30
|
-
puts Symbolify.symbolify "\u{
|
32
|
+
puts Symbolify.symbolify "\u{D0000}" # n/a
|
33
|
+
puts Symbolify.symbolify "\u{E0000}" # n/a*
|
31
34
|
puts Symbolify.symbolify "\u{10FFFF}" # n/c
|
32
35
|
puts Symbolify.symbolify "\x80" # �
|
33
36
|
```
|
34
37
|
|
35
38
|
## MIT License
|
36
39
|
|
37
|
-
Copyright (C) 2017 Jan Lelis <
|
40
|
+
Copyright (C) 2017-2020 Jan Lelis <https://janlelis.com>. Released under the MIT license.
|
data/Rakefile
CHANGED
@@ -32,7 +32,11 @@ end
|
|
32
32
|
|
33
33
|
desc "#{gemspec.name} | Spec"
|
34
34
|
task :spec do
|
35
|
-
|
35
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
36
|
+
sh "for %f in (spec/\*.rb) do ruby spec/%f"
|
37
|
+
else
|
38
|
+
sh "for file in spec/*.rb; do ruby $file; done"
|
39
|
+
end
|
36
40
|
end
|
37
41
|
task default: :spec
|
38
42
|
|
data/lib/symbolify.rb
CHANGED
@@ -96,6 +96,14 @@ module Symbolify
|
|
96
96
|
0x2069 => "PDI",
|
97
97
|
}.freeze
|
98
98
|
|
99
|
+
# no official aliases at the time of adding
|
100
|
+
SPECIALS = {
|
101
|
+
0xFFF9 => "IAA",
|
102
|
+
0xFFFA => "IAS",
|
103
|
+
0xFFFB => "IAT",
|
104
|
+
0xFFFC => "OBJ",
|
105
|
+
}.freeze
|
106
|
+
|
99
107
|
TAG_NAMES = {
|
100
108
|
0xE0001 => "LANG TAG",
|
101
109
|
0xE0020 => "TAG ␠",
|
@@ -193,7 +201,7 @@ module Symbolify
|
|
193
201
|
0xE007C => "TAG |",
|
194
202
|
0xE007D => "TAG }",
|
195
203
|
0xE007E => "TAG ~",
|
196
|
-
0xE007F => "TAG
|
204
|
+
0xE007F => "TAG ✦",
|
197
205
|
}.freeze
|
198
206
|
|
199
207
|
VARIATION_SELECTOR_NAMES = {
|
@@ -460,27 +468,6 @@ module Symbolify
|
|
460
468
|
0xE01EF => "VS256",
|
461
469
|
}.freeze
|
462
470
|
|
463
|
-
NONCHARACTERS = [
|
464
|
-
*0xFDD0..0xFDEF,
|
465
|
-
0xFFFE, 0xFFFF,
|
466
|
-
0x1FFFE, 0x1FFFF,
|
467
|
-
0x2FFFE, 0x2FFFF,
|
468
|
-
0x3FFFE, 0x3FFFF,
|
469
|
-
0x4FFFE, 0x4FFFF,
|
470
|
-
0x5FFFE, 0x5FFFF,
|
471
|
-
0x6FFFE, 0x6FFFF,
|
472
|
-
0x7FFFE, 0x7FFFF,
|
473
|
-
0x8FFFE, 0x8FFFF,
|
474
|
-
0x9FFFE, 0x9FFFF,
|
475
|
-
0xAFFFE, 0xAFFFF,
|
476
|
-
0xBFFFE, 0xBFFFF,
|
477
|
-
0xCFFFE, 0xCFFFF,
|
478
|
-
0xDFFFE, 0xDFFFF,
|
479
|
-
0xEFFFE, 0xEFFFF,
|
480
|
-
0xFFFFE, 0xFFFFF,
|
481
|
-
0x10FFFE, 0x10FFFF,
|
482
|
-
].freeze
|
483
|
-
|
484
471
|
INTERESTING_BYTES_ENCODINGS = {
|
485
472
|
0xD8 => /^macCroatian/,
|
486
473
|
0xF0 => /^mac(Iceland|Roman|Turkish)/,
|
@@ -521,8 +508,10 @@ module Symbolify
|
|
521
508
|
|
522
509
|
def self.unicode(char, char_info = UnicodeCharacteristics.new(char))
|
523
510
|
if !char_info.assigned?
|
524
|
-
if
|
511
|
+
if char_info.noncharacter?
|
525
512
|
return "n/c"
|
513
|
+
elsif char_info.ignorable?
|
514
|
+
return "n/a*"
|
526
515
|
else
|
527
516
|
return "n/a"
|
528
517
|
end
|
@@ -530,6 +519,7 @@ module Symbolify
|
|
530
519
|
|
531
520
|
char = char.dup.encode("UTF-8")
|
532
521
|
ord = char.ord
|
522
|
+
char = char[0]
|
533
523
|
|
534
524
|
if char_info.delete?
|
535
525
|
char = CONTROL_DELETE_SYMBOL
|
@@ -539,16 +529,20 @@ module Symbolify
|
|
539
529
|
char = CONTROL_C1_NAMES[ord]
|
540
530
|
elsif char_info.bidi_control?
|
541
531
|
char = BIDI_CONTROL_NAMES[ord]
|
542
|
-
elsif
|
532
|
+
elsif char_info.variation_selector?
|
543
533
|
char = VARIATION_SELECTOR_NAMES[ord]
|
534
|
+
elsif char_info.tag?
|
535
|
+
char = TAG_NAMES[ord]
|
544
536
|
elsif char_info.category == "Mn"
|
545
537
|
char = "◌" + char
|
546
538
|
elsif char_info.category == "Me"
|
547
539
|
char = " " + char
|
540
|
+
elsif char_info.separator?
|
541
|
+
char = "⏎"
|
548
542
|
elsif char_info.blank?
|
549
543
|
char = "]" + char + "["
|
550
|
-
elsif
|
551
|
-
char =
|
544
|
+
elsif SPECIALS.key?(ord)
|
545
|
+
char = SPECIALS[ord]
|
552
546
|
end
|
553
547
|
|
554
548
|
char
|
@@ -559,6 +553,7 @@ module Symbolify
|
|
559
553
|
|
560
554
|
ord = char.ord
|
561
555
|
encoding = char_info.encoding
|
556
|
+
char = char[0]
|
562
557
|
no_converter = !!(NO_UTF8_CONVERTER =~ encoding.name)
|
563
558
|
treat_char_unconverted = false
|
564
559
|
|
@@ -588,6 +583,8 @@ module Symbolify
|
|
588
583
|
end
|
589
584
|
|
590
585
|
def self.ascii(char, char_info = AsciiCharacteristics.new(char))
|
586
|
+
char = char[0]
|
587
|
+
|
591
588
|
if char_info.delete?
|
592
589
|
char = CONTROL_DELETE_SYMBOL
|
593
590
|
elsif char_info.c0?
|
@@ -600,10 +597,10 @@ module Symbolify
|
|
600
597
|
end
|
601
598
|
|
602
599
|
def self.binary(char, _ = nil)
|
603
|
-
dump(char)
|
600
|
+
dump(char[0])
|
604
601
|
end
|
605
602
|
|
606
603
|
def self.dump(char)
|
607
|
-
char.dump
|
604
|
+
char[0].dump
|
608
605
|
end
|
609
606
|
end
|
data/lib/symbolify/version.rb
CHANGED
data/spec/symbolify_spec.rb
CHANGED
@@ -6,6 +6,10 @@ describe Symbolify do
|
|
6
6
|
it "will show replacement character for invalid characters" do
|
7
7
|
assert_equal "�", Symbolify.symbolify("\x80")
|
8
8
|
end
|
9
|
+
|
10
|
+
it "will only return first character" do
|
11
|
+
assert_equal "a", Symbolify.symbolify("ab")
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
describe ".unicode" do
|
@@ -37,10 +41,24 @@ describe Symbolify do
|
|
37
41
|
assert_equal " \u{20E3}", Symbolify.symbolify("\u{20E3}")
|
38
42
|
end
|
39
43
|
|
44
|
+
it "replaces uncommon newline characters" do
|
45
|
+
assert_equal "⏎", Symbolify.symbolify("\u{2028}")
|
46
|
+
assert_equal "⏎", Symbolify.symbolify("\u{2029}")
|
47
|
+
end
|
48
|
+
|
40
49
|
it "wraps blanks" do
|
41
50
|
assert_equal "] [", Symbolify.symbolify(" ")
|
42
51
|
end
|
43
52
|
|
53
|
+
it "replaces annotation characters" do
|
54
|
+
assert_equal "IAA", Symbolify.symbolify("\u{FFF9}")
|
55
|
+
assert_equal "IAS", Symbolify.symbolify("\u{FFFA}")
|
56
|
+
end
|
57
|
+
|
58
|
+
it "replaces object replacement character" do
|
59
|
+
assert_equal "OBJ", Symbolify.symbolify("\u{FFFC}")
|
60
|
+
end
|
61
|
+
|
44
62
|
it "replaces tags" do
|
45
63
|
assert_equal "TAG ␠", Symbolify.symbolify("\u{E0020}")
|
46
64
|
end
|
@@ -54,7 +72,11 @@ describe Symbolify do
|
|
54
72
|
end
|
55
73
|
|
56
74
|
it "works with unassigned characters" do
|
57
|
-
assert_equal "n/a", Symbolify.symbolify("\u{
|
75
|
+
assert_equal "n/a", Symbolify.symbolify("\u{D0000}")
|
76
|
+
end
|
77
|
+
|
78
|
+
it "adds a * to unassigned characters which are ignorable" do
|
79
|
+
assert_equal "n/a*", Symbolify.symbolify("\u{E0000}")
|
58
80
|
end
|
59
81
|
end
|
60
82
|
|
data/symbolify.gemspec
CHANGED
@@ -5,10 +5,10 @@ require File.dirname(__FILE__) + "/lib/symbolify/version"
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "symbolify"
|
7
7
|
gem.version = Symbolify::VERSION
|
8
|
-
gem.summary = "Represent arbitrary
|
9
|
-
gem.description = "Safely print all
|
8
|
+
gem.summary = "Represent arbitrary code points in the terminal"
|
9
|
+
gem.description = "Safely print all code points from Unicode or single-byte encodings"
|
10
10
|
gem.authors = ["Jan Lelis"]
|
11
|
-
gem.email = ["
|
11
|
+
gem.email = ["hi@ruby.consulting"]
|
12
12
|
gem.homepage = "https://github.com/janlelis/symbolify"
|
13
13
|
gem.license = "MIT"
|
14
14
|
|
@@ -17,6 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.required_ruby_version = "
|
21
|
-
gem.add_dependency "characteristics", "
|
20
|
+
gem.required_ruby_version = ">= 2.0"
|
21
|
+
gem.add_dependency "characteristics", ">= 0.8", "< 2.0"
|
22
22
|
end
|
metadata
CHANGED
@@ -1,41 +1,47 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: symbolify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.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:
|
11
|
+
date: 2020-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: characteristics
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.8'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.8'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
27
|
-
description: Safely print all
|
32
|
+
version: '2.0'
|
33
|
+
description: Safely print all code points from Unicode or single-byte encodings
|
28
34
|
email:
|
29
|
-
-
|
35
|
+
- hi@ruby.consulting
|
30
36
|
executables: []
|
31
37
|
extensions: []
|
32
38
|
extra_rdoc_files: []
|
33
39
|
files:
|
34
40
|
- ".gitignore"
|
35
|
-
- ".travis.yml"
|
36
41
|
- CHANGELOG.md
|
37
42
|
- CODE_OF_CONDUCT.md
|
38
43
|
- Gemfile
|
44
|
+
- Gemfile.lock
|
39
45
|
- MIT-LICENSE.txt
|
40
46
|
- README.md
|
41
47
|
- Rakefile
|
@@ -53,7 +59,7 @@ require_paths:
|
|
53
59
|
- lib
|
54
60
|
required_ruby_version: !ruby/object:Gem::Requirement
|
55
61
|
requirements:
|
56
|
-
- - "
|
62
|
+
- - ">="
|
57
63
|
- !ruby/object:Gem::Version
|
58
64
|
version: '2.0'
|
59
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -62,10 +68,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
68
|
- !ruby/object:Gem::Version
|
63
69
|
version: '0'
|
64
70
|
requirements: []
|
65
|
-
|
66
|
-
rubygems_version: 2.6.8
|
71
|
+
rubygems_version: 3.2.3
|
67
72
|
signing_key:
|
68
73
|
specification_version: 4
|
69
|
-
summary: Represent arbitrary
|
74
|
+
summary: Represent arbitrary code points in the terminal
|
70
75
|
test_files:
|
71
76
|
- spec/symbolify_spec.rb
|
data/.travis.yml
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
|
4
|
-
rvm:
|
5
|
-
- ruby-head
|
6
|
-
- 2.4.1
|
7
|
-
- 2.3.3
|
8
|
-
- 2.2
|
9
|
-
- 2.1
|
10
|
-
- 2.0
|
11
|
-
- jruby-head
|
12
|
-
- jruby-9.1.8.0
|
13
|
-
|
14
|
-
cache:
|
15
|
-
- bundler
|
16
|
-
|
17
|
-
matrix:
|
18
|
-
allow_failures:
|
19
|
-
- rvm: jruby-head
|
20
|
-
- rvm: ruby-head
|
21
|
-
- rvm: 2.0
|
22
|
-
# fast_finish: true
|