unibits 2.5.0 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 89ef5ce08435a61d17d624f01b9355753446667c
4
- data.tar.gz: 2c758d25836c61613a0ab1c60f8196b93421c979
3
+ metadata.gz: 6cba814f571207d37582bbbdfdbce131842869d2
4
+ data.tar.gz: '049882afb03bab8eca8ce3693906c02b00f83212'
5
5
  SHA512:
6
- metadata.gz: fc2087917695cd6855477ddaa7fa973da3c188a814564e13d7331ee4c3744aa7338efef1397b3ed6fe3a9b502522dbcace5b7d7eb20f409ecac74a56ec74d200
7
- data.tar.gz: 5428461b0a77d91f746bfc565072f9a0baf126b0d7ce40d88113b54e56de4678a209bf01a03ff2fc9c84e8f38c34ec31685b62e8b757b0698934d33a64544753
6
+ metadata.gz: 331f30661d1f0e7c3de8f85479f326a683711af6e8d1830bab3a4d27dc2b8e7647ef24fff6abdebf507c784bcc5d97d083ba456d9936c8481b22164b29b8af68
7
+ data.tar.gz: 64d5968cc6e95a33fdedf2772747fee0be2e6e124923e24adf3fb5a57ae953189cf3d8d91199f4329676aab5db34ac153f725e06cf60aa5b3aff5ec6b6082819
@@ -1,5 +1,9 @@
1
1
  ## CHANGELOG
2
2
 
3
+ ### 2.6.0
4
+
5
+ * Support Unicode 10.0
6
+
3
7
  ### 2.5.0
4
8
 
5
9
  * Double check UTF-32 only on Ruby versions which contain the bug
data/README.md CHANGED
@@ -20,6 +20,8 @@ Each byte of the given string is highlighted using the following mechanism (char
20
20
  - Lighter orange for unassigned codepoints which are also ignorable
21
21
  - Random color for all other codepoints
22
22
 
23
+ The same colors are used in the higher-level companion tool [uniscribe](https://github.com/janlelis/uniscribe).
24
+
23
25
  ## Setup
24
26
 
25
27
  Make sure you have Ruby installed and installing gems works properly. Then do:
@@ -111,16 +113,20 @@ Example in Ruby: `unibits "🌫 Idiosyncrätic ℜսᖯʏ", encoding: 'ascii'
111
113
 
112
114
  ## Notes
113
115
 
114
- Also see
116
+ More info
115
117
 
116
118
  - [Ruby's Encoding class](https://ruby-doc.org/core/Encoding.html)
117
- - [Symbolify gem](https://github.com/janlelis/symbolify)
118
- - [Characteristics gem](https://github.com/janlelis/characteristics)
119
119
  - [UTF-8 (Wikipedia)](https://en.wikipedia.org/wiki/UTF-8#Description)
120
120
  - [UTF-16 (Wikipedia)](https://en.wikipedia.org/wiki/UTF-16#Description)
121
121
  - [UTF-32 (Wikipedia)](https://en.wikipedia.org/wiki/UTF-32)
122
122
  - [Difference between BINARY and ASCII](http://idiosyncratic-ruby.com/56-us-ascii-8bit.html)
123
- - [Unicode Micro Libraries for Ruby](https://github.com/janlelis/unicode-x)
123
+
124
+ Related gems
125
+
126
+ - [uniscribe](https://github.com/janlelis/uniscribe)
127
+ - [unicopy](https://github.com/janlelis/unicopy)
128
+ - [symbolify](https://github.com/janlelis/symbolify)
129
+ - [characteristics](https://github.com/janlelis/characteristics)
124
130
 
125
131
  Lots of thanks to @damienklinnert for the motivation and inspiration required to build this! 🎆
126
132
 
@@ -44,8 +44,9 @@ if argv[:help]
44
44
  --convert <encoding> | -c | which encoding to convert to (if possible)
45
45
  --width <n> | -w | force a specific number of terminal columns
46
46
  --no-stats | | no stats header with length info
47
- --version | | displays version of unibits
48
47
  --wide-ambiguous | | ambiguous characters
48
+ --help | | this help page
49
+ --version | | displays version of unibits
49
50
 
50
51
  #{Paint["ENCODINGS", :underline]}
51
52
 
@@ -60,6 +61,8 @@ if argv[:help]
60
61
  #{Paint["unassigned", Unibits::COLORS[:unassigned]]}
61
62
  #{Paint["unassigned and ignorable", Unibits::COLORS[:ignorable]]}
62
63
 
64
+ random color for other characters
65
+
63
66
  #{Paint["STATS", :underline]}
64
67
 
65
68
  ( bytes / codepoints / glyphs / expected terminal width )
@@ -39,17 +39,21 @@ module Unibits
39
39
  DEFAULT_TERMINAL_WIDTH = 80
40
40
 
41
41
  def self.of(string, encoding: nil, convert: nil, stats: true, wide_ambiguous: false, width: nil)
42
- if !string || string.empty?
43
- raise ArgumentError, "no data given to unibits"
44
- end
42
+ string = convert_to_encoding_or_raise(string, encoding, convert)
43
+
44
+ puts stats(string, wide_ambiguous: wide_ambiguous) if stats
45
+ puts visualize(string, wide_ambiguous: wide_ambiguous, width: width)
46
+ end
47
+
48
+ def self.convert_to_encoding_or_raise(string, encoding, convert)
49
+ raise ArgumentError, "no data given to unibits" if !string || string.empty?
45
50
 
46
51
  string = string.dup.force_encoding(encoding) if encoding
47
52
  string = string.encode(convert) if convert
48
53
 
49
54
  case string.encoding.name
50
55
  when *SUPPORTED_ENCODINGS
51
- puts stats(string, wide_ambiguous: wide_ambiguous) if stats
52
- puts visualize(string, wide_ambiguous: wide_ambiguous, width: width)
56
+ string
53
57
  when 'UTF-16', 'UTF-32'
54
58
  raise ArgumentError, "unibits only supports #{string.encoding.name} with specified endianess, please use #{string.encoding.name}LE or #{string.encoding.name}BE"
55
59
  else
@@ -1,4 +1,4 @@
1
1
  module Unibits
2
- VERSION = "2.5.0".freeze
3
- UNICODE_VERSION = "9.0.0".freeze
2
+ VERSION = "2.6.0".freeze
3
+ UNICODE_VERSION = "10.0.0".freeze
4
4
  end
@@ -18,9 +18,9 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_dependency 'paint', '>= 0.9', '< 3.0'
21
- gem.add_dependency 'unicode-display_width', '~> 1.1'
22
- gem.add_dependency 'symbolify', '~> 1.2'
23
- gem.add_dependency 'characteristics', '>= 0.7'
21
+ gem.add_dependency 'unicode-display_width', '~> 1.3'
22
+ gem.add_dependency 'symbolify', '~> 1.3'
23
+ gem.add_dependency 'characteristics', '>= 0.8'
24
24
  gem.add_dependency 'rationalist', '~> 2.0'
25
25
 
26
26
  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.5.0
4
+ version: 2.6.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-31 00:00:00.000000000 Z
11
+ date: 2017-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paint
@@ -36,42 +36,42 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.1'
39
+ version: '1.3'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.1'
46
+ version: '1.3'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: symbolify
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '1.2'
53
+ version: '1.3'
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: '1.2'
60
+ version: '1.3'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: characteristics
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: '0.7'
67
+ version: '0.8'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '0.7'
74
+ version: '0.8'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rationalist
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -131,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  version: '0'
132
132
  requirements: []
133
133
  rubyforge_project:
134
- rubygems_version: 2.6.8
134
+ rubygems_version: 2.6.11
135
135
  signing_key:
136
136
  specification_version: 4
137
137
  summary: Visualizes encodings.