Skip to content

Commit

Permalink
Merge d028f30 into 26829b5
Browse files Browse the repository at this point in the history
  • Loading branch information
stevendaniels committed Apr 2, 2020
2 parents 26829b5 + d028f30 commit e2c691b
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 22 deletions.
10 changes: 6 additions & 4 deletions .travis.yml
Expand Up @@ -2,13 +2,15 @@ language: ruby
rvm:
- 1.9.3
- 2.0.0
- 2.1
- 2.2.0
- 2.4
- 2.6
- 2.7.0
- ruby-head
- jruby-19mode
- rbx-2
- rbx-4
matrix:
allow_failures:
- rvm: ruby-head
- rvm: jruby-19mode
- rvm: rbx-2
- rvm: rbx-4
- rvm: 2.4
15 changes: 11 additions & 4 deletions lib/zhongwen_tools/number.rb
Expand Up @@ -6,13 +6,20 @@

module ZhongwenTools
# Number.to_pyn, to_i, to_zhs, etc.
if RUBY_VERSION >= "2.4.0"
CONVERTIBLE_OBJECTS = [String, Integer]
NUMBER_CLASSES = [Integer]
else
CONVERTIBLE_OBJECTS = [String, Integer, Fixnum, Bignum]
NUMBER_CLASSES = [Fixnum, Integer, Bignum]
end
module Number
def self.number?(obj)
case obj
when String
regex = /([\d]|#{ZhongwenTools::Regex.zh_numbers}){1,}/
"#{obj}".gsub(regex, '') == ''
when Integer, Fixnum, Float
when Integer, Float
true
end
end
Expand All @@ -39,7 +46,7 @@ def self.to_zh(obj, type = :zhs, from = nil)

def self.convert(obj, to, from, separator = '')
fail ArgumentError unless [:zhs, :zht, :i, :pyn].include?(to.to_sym)
fail ArgumentError unless [String, Integer, Fixnum, Bignum].include?(obj.class)
fail ArgumentError unless CONVERTIBLE_OBJECTS.include?(obj.class)

number = convert_from from, to, obj

Expand All @@ -56,7 +63,7 @@ def self.convert(obj, to, from, separator = '')
def self.number_type(obj)
klass = obj.class

if [Fixnum, Integer, Bignum].include?(klass)
if NUMBER_CLASSES.include?(klass)
:i
else
if ZhongwenTools::Zhongwen.zh?(obj)
Expand Down Expand Up @@ -211,7 +218,7 @@ def self.finalize_number(number, separator = '')
# FIXME: is finalize_number the best name you can think of?
# NOTE: Figuring out usage of "liang" vs. "er" is pretty
# difficult, so always use "er" instead.
number.join(separator).gsub(/零[#{ Regex.zh_number_multiple }]*/u, '')
number.join(separator).gsub(/零#{ Regex.zh_number_multiple }*/u, '')
end
end
end
2 changes: 1 addition & 1 deletion lib/zhongwen_tools/romanization/pinyin.rb
Expand Up @@ -153,7 +153,7 @@ def self.normalize_n_g(pinyin)
def self.normalize_n(pinyin)
# Special Case split_py("yìnián") # => ["yì" + "nián"]
# split_py("Xīní") # => ["Xī", "ní"]
regex = /([#{ Regex.only_tones }])(n(#{Regex.py_tones['v']}|#{Regex.py_tones['i']}|[iu]|#{Regex.py_tones['e']}|[#{Regex.py_tones['a']}]))/
regex = /#{Regex.only_tones}(n(#{Regex.py_tones['v']}|#{Regex.py_tones['i']}|[iu]|#{Regex.py_tones['e']}|[#{Regex.py_tones['a']}]))/
pinyin.gsub(regex) { "#{$1}-#{$2}" }
end

Expand Down
2 changes: 1 addition & 1 deletion lib/zhongwen_tools/romanization/zhuyin_fuhao.rb
Expand Up @@ -15,7 +15,7 @@ def self.bpmf?(str)
end

def self.split(str)
regex = /([#{ZhongwenTools::Regex.bopomofo}]*)/
regex = /(#{ZhongwenTools::Regex.bopomofo}*)/

ZhongwenTools::Romanization.split_romanization(str, regex)
end
Expand Down
3 changes: 3 additions & 0 deletions test/test_core.rb
Expand Up @@ -4,10 +4,13 @@
require './test/test_helper'

class TestCore < Minitest::Test

def test_core_ext_does_not_have_script_functions
load 'test_helpers/unload_zhongwen_tools_script.rb'
require 'zhongwen_tools/core'
require 'zhongwen_tools/core_ext/string'
assert_raises(NoMethodError){ '你们'.to_zht }
# NOTE: restoring ZhongwenTools::Script
load 'zhongwen_tools/script.rb'
end
end
7 changes: 4 additions & 3 deletions test/test_script.rb
Expand Up @@ -2,9 +2,10 @@
$:.unshift File.join(File.dirname(__FILE__),'..','lib')

require './test/test_helper'
require 'zhongwen_tools/script'

class TestScript < Minitest::Test
def setup
load 'zhongwen_tools/script.rb'
@strings = [
{
:zhs => '干部一干人等干事不干不净',
Expand Down Expand Up @@ -116,5 +117,5 @@ def test_zht?
assert ZhongwenTools::Script.zht?(hash[:zhtw])
assert ZhongwenTools::Script.zht?(hash[:zhhk])
end
end
end
end
end
1 change: 0 additions & 1 deletion test/test_string_extension.rb
Expand Up @@ -72,7 +72,6 @@ def test_methods
assert_equal @rom[:pyn].romanization?, :pyn

# script.rb
load 'zhongwen_tools/script.rb'# unless ZhongwenTools.const_defined?(:Script)
assert_equal @zh[:zht], @zh[:zhs].to_zht
assert_equal @zh[:zhs], @zh[:zht].to_zhs
assert_equal @zh[:zhcn], @zh[:zhhk].to_zhcn
Expand Down
13 changes: 5 additions & 8 deletions zhongwen_tools.gemspec
Expand Up @@ -11,24 +11,21 @@ Gem::Specification.new do |s|
s.homepage = 'https://github.com/stevendaniels/zhongwen_tools'
s.summary = %q{Zhongwen Tools provide romanization conversions and helper methods for Chinese.}
s.description = %q{Chinese tools for romanization conversions and other helpful string functions for Chinese.}
s.rubyforge_project = 'zhongwen_tools'

s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ['lib']

s.add_development_dependency('rake', '~> 10.1')
if RUBY_VERSION >= '1.9'
if RUBY_VERSION >= '2.1'
s.add_development_dependency('simplecov', '~> 0.16', '>= 0.16.0')
s.add_development_dependency('simplecov-gem-adapter', '~> 1.0', '>= 1.0.1')
s.add_development_dependency('coveralls', '~> 0.8', '>= 0.8.1')
s.add_development_dependency('minitest', '~> 5.5', '>= 5.5.1')
s.add_development_dependency('pry', '~> 0.10', '>= 0.10.1')
s.add_development_dependency('minitest-reporters', '~> 1.0', '>= 1.0.10')
end

if RUBY_VERSION >= '2.1'
s.add_development_dependency "rake", ">= 12.3.3"
s.add_development_dependency('pry', '~> 0.13', '>= 0.13.0')
s.add_development_dependency('memory_profiler', '0.0.4')
else
s.add_development_dependency('rake', '~> 10.1')
end
end

0 comments on commit e2c691b

Please sign in to comment.