typeright 0.0.3
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +9 -0
- data/.hound.yml +2 -0
- data/.travis.yml +12 -0
- data/Gemfile +15 -0
- data/Guardfile +22 -0
- data/MIT-LICENSE +19 -0
- data/README.md +62 -0
- data/Rakefile +9 -0
- data/bench/all.rb +33 -0
- data/bin/typeright +9 -0
- data/lib/typeright/calculator.rb +31 -0
- data/lib/typeright/cli.rb +13 -0
- data/lib/typeright/punctuator.rb +12 -0
- data/lib/typeright/quotator.rb +19 -0
- data/lib/typeright/version.rb +4 -0
- data/lib/typeright.rb +24 -0
- data/spec/spec_helper.rb +35 -0
- data/spec/typeright/calculator_spec.rb +35 -0
- data/spec/typeright_spec.rb +57 -0
- data/typeright.gemspec +24 -0
- metadata +68 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 13bc4a3b0f0714a4482f760fcefc813e235de5e2
|
4
|
+
data.tar.gz: 1a5f7d619d40aed8e7aeca9ead01fca4b4411ab2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 62a4ae93dd82bc5eef065e2f7922dac49aa9c3c65d6dc5d10aef8a2d65150d558425b8e20b40725b5a81151a4e3a741e67f8c79fbbd0fdbee3d2af441da401af
|
7
|
+
data.tar.gz: 52f1f89a7e38e986c58ece3b6ebbc99be48f685f20c54ad2d4597ebb9f072ff5a996aff97adb12963bda82fce9c5cab0135c15153c1df7e8e0395b2f8490af77
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.gitignore
ADDED
data/.hound.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Note: The cmd option is now required due to the increasing number of ways
|
2
|
+
# rspec may be run, below are examples of the most common uses.
|
3
|
+
# * bundler: 'bundle exec rspec'
|
4
|
+
# * bundler binstubs: 'bin/rspec'
|
5
|
+
# * spring: 'bin/rsspec' (This will use spring if running and you have
|
6
|
+
# installed the spring binstubs per the docs)
|
7
|
+
# * zeus: 'zeus rspec' (requires the server to be started separetly)
|
8
|
+
# * 'just' rspec: 'rspec'
|
9
|
+
|
10
|
+
# guard :rubocop do
|
11
|
+
guard :rubocop, all_on_start: false, keep_failed: false, cli: ['-D'] do
|
12
|
+
watch(%r{.+\.rb$})
|
13
|
+
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
|
14
|
+
end
|
15
|
+
|
16
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
17
|
+
watch(%r{^spec/.+_spec\.rb$})
|
18
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
19
|
+
watch(/^generators\/(.+)\.rb$/) { |_m| 'spec/schemaless/worker_spec' }
|
20
|
+
|
21
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
22
|
+
end
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2015 Typeright Authors
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
4
|
+
copy of this software and associated documentation files (the "Software"),
|
5
|
+
to deal in the Software without restriction, including without limitation
|
6
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
7
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
8
|
+
Software is furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be
|
11
|
+
included in all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
14
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
15
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
16
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
17
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
18
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
19
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# TypeRight
|
2
|
+
|
3
|
+
________________________________________________________________
|
4
|
+
______ ____
|
5
|
+
/ / ) , /
|
6
|
+
---------/---------------__----__---/___ /--------__---/__--_/_-
|
7
|
+
/ / / / ) /___) / | / / ) / ) /
|
8
|
+
_______/______(___/___/___/_(___ _/_____|__/___(___/_/___/_(_ __
|
9
|
+
/ / /
|
10
|
+
(_ / / (_ /
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
Makes text more pleasant for the eyes.
|
15
|
+
|
16
|
+
|
17
|
+
Turns this:
|
18
|
+
|
19
|
+
```
|
20
|
+
And so... "Why?" -- He replied
|
21
|
+
Because -> this! And => this!
|
22
|
+
Also, notice some math: Pi + 2 * 180 / 2.
|
23
|
+
```
|
24
|
+
|
25
|
+
Into this:
|
26
|
+
|
27
|
+
```
|
28
|
+
And so… “Why?” — He replied.
|
29
|
+
Because → It’s cool! And ⇒ I like beautiful text!.
|
30
|
+
Also, notice some math: π + 2 × 180 ÷ 2.
|
31
|
+
```
|
32
|
+
|
33
|
+
## Install
|
34
|
+
|
35
|
+
gem install typeright
|
36
|
+
|
37
|
+
|
38
|
+
## Use
|
39
|
+
|
40
|
+
Typeright.s(a_text)
|
41
|
+
|
42
|
+
|
43
|
+
## Todo
|
44
|
+
|
45
|
+
- Spaces
|
46
|
+
|
47
|
+
## Won't Do
|
48
|
+
|
49
|
+
Non UTF-8 modifications. Eg. `Small Caps`.
|
50
|
+
|
51
|
+
For that complement with a client-side lib:
|
52
|
+
|
53
|
+
|
54
|
+
Inspiration and thanks
|
55
|
+
|
56
|
+
https://github.com/davidmerfield/Typeset
|
57
|
+
|
58
|
+
|
59
|
+
## Also nice
|
60
|
+
|
61
|
+
http://webtypography.net/
|
62
|
+
http://kyleamathews.github.io/typography.js/#/
|
data/Rakefile
ADDED
data/bench/all.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
|
4
|
+
require 'benchmark'
|
5
|
+
require 'typeright'
|
6
|
+
|
7
|
+
puts
|
8
|
+
puts " Typeright! v#{Typeright::VERSION}"
|
9
|
+
|
10
|
+
N = 100_000
|
11
|
+
P1 = "Some 'simple' paragraph -> will be nice to -- see"
|
12
|
+
P2 = <<DOC
|
13
|
+
|
14
|
+
From https://pine.fm/LearnToProgram/
|
15
|
+
|
16
|
+
I guess this all began back in 2002. I was thinking about teaching programming, and what a great language Ruby would be for learning how to program. I mean, we were all excited about Ruby because it was powerful, elegant, and really just fun, but it seemed to me that it would also be a great way to get into programming in the first place.
|
17
|
+
|
18
|
+
Unfortunately, there wasn't much Ruby documentation geared for newbies at the time. Some of us in the community were talking about what such a "Ruby for the Nuby" tutorial would need, and more generally, how to teach programming at all. The more I thought about this, the more I had to say (which surprised me a bit). Finally, someone said, "Chris, why don't you just write a tutorial instead of talking about it?" So I did.
|
19
|
+
|
20
|
+
And it wasn't very good. I had all these ideas that were good in theory, but the actual task of making a great tutorial for non-programmers was vastly more challenging than I had realized. (I mean, it seemed good to me, but I already knew how to program.)
|
21
|
+
|
22
|
+
What saved me was that I made it really easy for people to contact me, and I always tried to help people when they got stuck. When I saw a lot of people getting stuck in one place, I'd rewrite it. It was a lot of work, but it slowly got better and better.
|
23
|
+
|
24
|
+
A couple of years later, it was getting pretty good. :-) So good, in fact, that I was ready to pronounce it finished, and move on to something else. And right about then came an opportunity to turn the tutorial into a book. Since it was already basically done, I figured this would be no problem. I'd just clean up a few spots, add some more exercises, maybe some more examples, a few more chapters, run it by 50 more reviewers...
|
25
|
+
|
26
|
+
It took me another year, but now I think it's really really good, mostly because of the hundreds of brave souls who have helped me write it.
|
27
|
+
|
28
|
+
DOC
|
29
|
+
|
30
|
+
Benchmark.bmbm do |b|
|
31
|
+
b.report { N.times { Typeright.s(P1) } }
|
32
|
+
b.report { N.times { Typeright.s(P2) } }
|
33
|
+
end
|
data/bin/typeright
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
module Typeright
|
2
|
+
# Numbers and symbols replacement
|
3
|
+
module Calculator
|
4
|
+
class << self
|
5
|
+
def work(txt)
|
6
|
+
math(arrows(txt))
|
7
|
+
end
|
8
|
+
|
9
|
+
def arrows(txt)
|
10
|
+
txt
|
11
|
+
.gsub(/(^|\s)\=\>(\W)/, '\1⇒\2')
|
12
|
+
.gsub(/(^|\s)-\>(\W)/, '\1→\2')
|
13
|
+
.gsub(/(^|\s)\<-(\W)/, '\1←\2')
|
14
|
+
.gsub(/(^|\s)\<\=(\W)/, '\1⇐\2')
|
15
|
+
.gsub(/(^|\s)\<\<(\w)/, '\1«\2')
|
16
|
+
.gsub(/(\w)\>\>(\s|$)/, '\1»\2')
|
17
|
+
end
|
18
|
+
|
19
|
+
# Maybe (1) -> ① ⨉×
|
20
|
+
def math(txt)
|
21
|
+
txt
|
22
|
+
.gsub(/(^|\s)Pi(\W)/, '\1π\2')
|
23
|
+
.gsub(/(\d\s)\/(\s\d)/, '\1÷\2')
|
24
|
+
.gsub(/(\d\s)\*(\s\d)/, '\1×\2')
|
25
|
+
.gsub(/(^|\s)\!\=(\W)/, '\1≠\2')
|
26
|
+
.gsub(/(^|\s)\+-(\s)/, '\1±\2')
|
27
|
+
.gsub(/(\w)%o(\s|$)/, '\1‰\2')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Typeright
|
2
|
+
# Let's "quote"
|
3
|
+
module Quotator
|
4
|
+
def self.work(txt)
|
5
|
+
txt
|
6
|
+
.gsub(/(\W|^)"(\w)/, '\1“\2') # beginning "
|
7
|
+
.gsub(/(“[^"]*)"([^"]*$|[^“"]*“)/, '\1”\2') # ending "
|
8
|
+
.gsub(/([^0-9])"/, '\1”') # remaining " at end of word
|
9
|
+
.gsub(/(\W|^)'(\S)/, '\1‘\2') # beginning '
|
10
|
+
.gsub(/([a-z])'([a-z])/i, '\1’\2') # conjunction's possession
|
11
|
+
.gsub(/((‘[^']*)|[a-z])'([^0-9]|$)/i, '\1’\3') # ending '
|
12
|
+
.gsub(/(‘)([0-9]{2}[^’]*)(‘([^0-9]|$)|$|’[a-z])/i, '’\2\3') # abbrev. years like '93
|
13
|
+
.gsub(/(\B|^)‘(?=([^’]*’\b)*([^’‘]*\W[’‘]\b|[^’‘]*$))/i, '\1’')
|
14
|
+
.gsub(/'''/, '‴') # triple prime
|
15
|
+
.gsub(/("|'')/, '″') # double prime
|
16
|
+
.tr("'", '′')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/typeright.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# require 'pry'
|
2
|
+
# require 'yaml'
|
3
|
+
require 'typeright/version'
|
4
|
+
require 'typeright/cli'
|
5
|
+
|
6
|
+
# Typeright!
|
7
|
+
module Typeright
|
8
|
+
# autoload :Hyphenator, 'typeright/hyphenator'
|
9
|
+
autoload :Punctuator, 'typeright/punctuator'
|
10
|
+
autoload :Quotator, 'typeright/quotator'
|
11
|
+
autoload :Calculator, 'typeright/calculator'
|
12
|
+
|
13
|
+
TYPERS = [
|
14
|
+
Calculator,
|
15
|
+
Punctuator,
|
16
|
+
Quotator
|
17
|
+
]
|
18
|
+
|
19
|
+
def self.s(txt)
|
20
|
+
TYPERS.reduce(txt) do |s, t|
|
21
|
+
t.work(s)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
# require 'pry'
|
3
|
+
begin
|
4
|
+
require 'spec'
|
5
|
+
rescue LoadError
|
6
|
+
require 'rspec'
|
7
|
+
end
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
11
|
+
|
12
|
+
require 'typeright'
|
13
|
+
# include Typeright
|
14
|
+
|
15
|
+
if ENV['CI']
|
16
|
+
require 'coveralls'
|
17
|
+
Coveralls.wear!
|
18
|
+
end
|
19
|
+
|
20
|
+
FOR_README = <<TXT
|
21
|
+
And so... "Why?" -- He replied.
|
22
|
+
Because -> It's cool! And => I like beautiful text!'.
|
23
|
+
Also, notice some math: Pi + 2 * 180 / 2.
|
24
|
+
TXT
|
25
|
+
|
26
|
+
RSpec.configure do |config|
|
27
|
+
# config.mock_with(:mocha)
|
28
|
+
|
29
|
+
config.after(:suite) do
|
30
|
+
puts
|
31
|
+
puts FOR_README
|
32
|
+
puts
|
33
|
+
puts Typeright.s(FOR_README)
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Typeright do
|
4
|
+
it 'should do some math +-' do
|
5
|
+
expect(Typeright.s('So, Pi +- 3.1?')).to eq('So, π ± 3.1?')
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should do some math ->' do
|
9
|
+
expect(Typeright.s('So, Pi -> 3.1?')).to eq('So, π → 3.1?')
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should do some math <-' do
|
13
|
+
expect(Typeright.s('Go back <- this')).to eq('Go back ← this')
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should do some math =>' do
|
17
|
+
expect(Typeright.s('So, Pi => 3.1?')).to eq('So, π ⇒ 3.1?')
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should do some math <=' do
|
21
|
+
expect(Typeright.s('Go back <= this')).to eq('Go back ⇐ this')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should do some math <<>>' do
|
25
|
+
expect(Typeright.s('Said <<hello>>')).to eq('Said «hello»')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should do some math <<>>' do
|
29
|
+
expect(Typeright.s('Said <<hello>>')).to eq('Said «hello»')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should not touch ``' do
|
33
|
+
expect(Typeright.s('Said `hello`')).to eq('Said `hello`')
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Typeright do
|
4
|
+
it 'should change minus to hyphens' do
|
5
|
+
expect(Typeright.s('And suddenly -- No more.'))
|
6
|
+
.to eq('And suddenly — No more.')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should change dots to ellipse' do
|
10
|
+
expect(Typeright.s('And suddenly... No more.'))
|
11
|
+
.to eq('And suddenly… No more.')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should make beautiful quotes' do
|
15
|
+
expect(Typeright.s('And suddenly... "No more".'))
|
16
|
+
.to eq('And suddenly… “No more”.')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should make beautiful quotes' do
|
20
|
+
expect(Typeright.s("Walk among us... 'Nevermind!'"))
|
21
|
+
.to eq('Walk among us… ‘Nevermind!’')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should do some math Pi π' do
|
25
|
+
expect(Typeright.s('So, Pi = 3.14...')).to eq('So, π = 3.14…')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should do some math != π' do
|
29
|
+
expect(Typeright.s('So, Pi != 1???')).to eq('So, π ≠ 1???')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should do some math +-' do
|
33
|
+
expect(Typeright.s('So, Pi +- 3.1?')).to eq('So, π ± 3.1?')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should do some math ->' do
|
37
|
+
expect(Typeright.s('So, Pi -> 3.1?')).to eq('So, π → 3.1?')
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should do some math %o' do
|
41
|
+
expect(Typeright.s('It means 10%o')).to eq('It means 10‰')
|
42
|
+
end
|
43
|
+
|
44
|
+
{
|
45
|
+
'pretty :-) So good' => 'pretty :-) So good',
|
46
|
+
'place, I\'d rewrite it' => 'place, I’d rewrite it',
|
47
|
+
'by 50 more reviewers...' => 'by 50 more reviewers…',
|
48
|
+
'So "Why don\'t you" -- implied' => 'So “Why don’t you” — implied',
|
49
|
+
'So "Why don\'t you?"' => 'So “Why don’t you?”',
|
50
|
+
'So "Why don\'t you".' => 'So “Why don’t you”.',
|
51
|
+
'So "Why don\'t you?".' => 'So “Why don’t you?”.'
|
52
|
+
}.each do |k, v|
|
53
|
+
it "should work nice with #{k} -> #{v}" do
|
54
|
+
expect(Typeright.s(k)).to eq(v)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/typeright.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
require 'typeright/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'typeright'
|
8
|
+
s.version = Typeright::VERSION
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
|
11
|
+
s.authors = ['Marcos Piccinini']
|
12
|
+
s.homepage = 'http://github.com/nofxx/typeright'
|
13
|
+
s.email = 'x@nofxx.com'
|
14
|
+
s.description = 'Make text beautiful'
|
15
|
+
s.summary = 'Make text UTF-8 beautiful'
|
16
|
+
s.license = 'MIT'
|
17
|
+
|
18
|
+
s.executables = ['typeright']
|
19
|
+
s.default_executable = 'typeright'
|
20
|
+
|
21
|
+
s.files = `git ls-files`.split("\n")
|
22
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
+
s.require_paths = ['lib']
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: typeright
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marcos Piccinini
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-08-20 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Make text beautiful
|
14
|
+
email: x@nofxx.com
|
15
|
+
executables:
|
16
|
+
- typeright
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".coveralls.yml"
|
21
|
+
- ".gitignore"
|
22
|
+
- ".hound.yml"
|
23
|
+
- ".travis.yml"
|
24
|
+
- Gemfile
|
25
|
+
- Guardfile
|
26
|
+
- MIT-LICENSE
|
27
|
+
- README.md
|
28
|
+
- Rakefile
|
29
|
+
- bench/all.rb
|
30
|
+
- bin/typeright
|
31
|
+
- lib/typeright.rb
|
32
|
+
- lib/typeright/calculator.rb
|
33
|
+
- lib/typeright/cli.rb
|
34
|
+
- lib/typeright/punctuator.rb
|
35
|
+
- lib/typeright/quotator.rb
|
36
|
+
- lib/typeright/version.rb
|
37
|
+
- spec/spec_helper.rb
|
38
|
+
- spec/typeright/calculator_spec.rb
|
39
|
+
- spec/typeright_spec.rb
|
40
|
+
- typeright.gemspec
|
41
|
+
homepage: http://github.com/nofxx/typeright
|
42
|
+
licenses:
|
43
|
+
- MIT
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 2.4.5
|
62
|
+
signing_key:
|
63
|
+
specification_version: 4
|
64
|
+
summary: Make text UTF-8 beautiful
|
65
|
+
test_files:
|
66
|
+
- spec/spec_helper.rb
|
67
|
+
- spec/typeright/calculator_spec.rb
|
68
|
+
- spec/typeright_spec.rb
|