typeright 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|