aesthetify 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 26e9f57ded41bc8c54354ae4643929b173d715ac
4
+ data.tar.gz: b36d0dc2c464331b734dc7da5eab243154741146
5
+ SHA512:
6
+ metadata.gz: a47803fbb2325ce23dca838aa221c523cf748b01081332d15dc442a318cae53a8d19f7e362381869619e516cac1b5ae9b0036da9292bd711b9297ab7c748eb85
7
+ data.tar.gz: 9e54cf05e1cc2e50c9a5283641070be4d0d8604455f01e0248559d8e15a7972c0303b8afac06605c90ff9db6f9ced9bfed021a6e5e86eb2e4868c580689fd7e0
data/.gitattributes ADDED
@@ -0,0 +1,17 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
3
+
4
+ # Custom for Visual Studio
5
+ *.cs diff=csharp
6
+
7
+ # Standard to msysgit
8
+ *.doc diff=astextplain
9
+ *.DOC diff=astextplain
10
+ *.docx diff=astextplain
11
+ *.DOCX diff=astextplain
12
+ *.dot diff=astextplain
13
+ *.DOT diff=astextplain
14
+ *.pdf diff=astextplain
15
+ *.PDF diff=astextplain
16
+ *.rtf diff=astextplain
17
+ *.RTF diff=astextplain
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :test do
6
+ gem 'minitest'
7
+ gem 'minitest-proveit'
8
+ gem 'rake'
9
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,25 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ aesthetify (1.0.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ minitest (5.10.2)
10
+ minitest-proveit (1.0.0)
11
+ minitest (> 5, < 7)
12
+ rake (12.0.0)
13
+
14
+ PLATFORMS
15
+ ruby
16
+
17
+ DEPENDENCIES
18
+ aesthetify!
19
+ bundler (~> 1.15)
20
+ minitest
21
+ minitest-proveit
22
+ rake
23
+
24
+ BUNDLED WITH
25
+ 1.15.1
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017 TheAssailant https://github.com/theassailant
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # aesthetify
2
+
3
+ aesthetify makes it simple to take any string and transform it for the
4
+ AESTHETIC. In addition, it also makes creating Fullwidth text
5
+ just as simple.
6
+
7
+ aesthetify comes with regular methods and bang versions of those methods for
8
+ in-place string modification.
9
+
10
+ ## Examples
11
+
12
+ Using String#aesthetify:
13
+ ```ruby
14
+ text = "vaporwave"
15
+ text.aesthetify!
16
+ puts text
17
+ #=> VAPORWAVE
18
+ ```
19
+
20
+ Using String#fullwidth:
21
+ ```ruby
22
+ text = "long boy"
23
+ text.fullwidth!
24
+ puts text
25
+ #=> long boy
26
+ ```
27
+
28
+ Using concatenation:
29
+ ```ruby
30
+ text = "This is the " + "sad boys ".aesthetify + "club"
31
+ puts text
32
+ #=> This is the SAD BOYS club
33
+ ```
34
+
35
+ ## License
36
+ aesthetify is released under the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/setup"
2
+ require "bundler/gem_tasks"
3
+ require "rake/testtask"
4
+
5
+ Rake::TestTask.new do |test|
6
+ test.libs << "test"
7
+ test.libs << "lib"
8
+ test.test_files = FileList["test/**/*_test.rb"]
9
+ test.warning = false
10
+ end
11
+
12
+ task default: :test
@@ -0,0 +1,16 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "aesthetify"
3
+ s.version = "1.0.0"
4
+ s.authors = "TheAssailant"
5
+ s.email = "TheAssailant@users.noreply.github.com"
6
+ s.summary = %q{aesthetify is a gem that lets you transform ASCII text into fullwidth text of 2 distinct flavors: regular Fullwidth and AESTHETIC}
7
+ s.homepage = "https://github.com/TheAssailant/aesthetify"
8
+ s.license = "MIT"
9
+
10
+ s.required_ruby_version = "~> 2.1"
11
+
12
+ s.add_development_dependency "bundler", "~> 1.15"
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- test/*`.split("\n")
16
+ end
data/lib/aesthetify.rb ADDED
@@ -0,0 +1,44 @@
1
+ =begin
2
+ The basic premise is we shift characters into the Fullwidth and Halfwidth
3
+ Unicode character space using simple arithmetic and a 0x0020 (32) character
4
+ offset since the ASCII characters with fullwidth replacements only begin
5
+ showing up at 0x0021 in Unicode (0x0020 is the space character).
6
+ =end
7
+
8
+ class String
9
+ def aesthetify
10
+ output = []
11
+ self.split("").each do |letter|
12
+ # We skip lowercase letters so we can turn them uppercase for the
13
+ # aesthetify method
14
+ if (0x0021..0x0060).include?(letter.ord) || (0x007B..0x007E).include?(letter.ord)
15
+ output << (letter.ord + 0xFF00 - 32).chr(Encoding::UTF_8)
16
+ elsif (0x0061..0x007A).include?(letter.ord)
17
+ output << (letter.ord + 0xFF00 - 64).chr(Encoding::UTF_8)
18
+ else
19
+ output << letter
20
+ end
21
+ end
22
+ output.join
23
+ end
24
+
25
+ def aesthetify!
26
+ self.replace self.aesthetify
27
+ end
28
+
29
+ def fullwidth
30
+ output = []
31
+ self.split("").each do |letter|
32
+ if(0x0021..0x007E).include?(letter.ord)
33
+ output << (letter.ord + 0xFF00 - 32).chr(Encoding::UTF_8)
34
+ else
35
+ output << letter
36
+ end
37
+ end
38
+ output.join
39
+ end
40
+
41
+ def fullwidth!
42
+ self.replace self.fullwidth
43
+ end
44
+ end
@@ -0,0 +1,36 @@
1
+ require 'aesthetify'
2
+ require 'minitest/autorun'
3
+ require 'minitest/hell'
4
+
5
+ DATA1 = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
6
+ DATA2 = "The quick brown fox jumps over the lazy dog."
7
+
8
+ AESTHETIFY1 = " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~"
9
+ AESTHETIFY2 = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG."
10
+
11
+ FULLWIDTH1 = " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"
12
+ FULLWIDTH2 = "The quick brown fox jumps over the lazy dog."
13
+
14
+ class AesthetifyTest < Minitest::Test
15
+ def test_aesthetify
16
+ assert_equal AESTHETIFY1, DATA1.aesthetify
17
+ assert_equal AESTHETIFY2, DATA2.aesthetify
18
+ end
19
+
20
+ def test_aesthetify_mutation
21
+ testdata = String.new(DATA2)
22
+ testdata.aesthetify!
23
+ assert_equal AESTHETIFY2, testdata
24
+ end
25
+
26
+ def test_fullwidth
27
+ assert_equal FULLWIDTH1, DATA1.fullwidth
28
+ assert_equal FULLWIDTH2, DATA2.fullwidth
29
+ end
30
+
31
+ def test_fullwidth_mutation
32
+ testdata = String.new(DATA2)
33
+ testdata.fullwidth!
34
+ assert_equal FULLWIDTH2, testdata
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aesthetify
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - TheAssailant
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.15'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.15'
27
+ description:
28
+ email: TheAssailant@users.noreply.github.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - ".gitattributes"
34
+ - Gemfile
35
+ - Gemfile.lock
36
+ - LICENSE
37
+ - README.md
38
+ - Rakefile
39
+ - aesthetify.gemspec
40
+ - lib/aesthetify.rb
41
+ - test/aesthetify_test.rb
42
+ homepage: https://github.com/TheAssailant/aesthetify
43
+ licenses:
44
+ - MIT
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 2.5.2
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: "aesthetify is a gem that lets you transform ASCII text into fullwidth text
66
+ of 2 distinct flavors: regular \uFEFFFullwidth and AESTHETIC"
67
+ test_files:
68
+ - test/aesthetify_test.rb