Skip to content

Commit

Permalink
Merge pull request #1 from stevendaniels/improve-performance-speed
Browse files Browse the repository at this point in the history
Performance improvements
  • Loading branch information
stevendaniels committed Dec 31, 2015
2 parents e645bf8 + 3f2f794 commit d63e4a7
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 8 deletions.
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
source "https://rubygems.org"
source 'https://rubygems.org'
# gem dependencies are in zhongwen_tools.gemspec
gemspec
7 changes: 3 additions & 4 deletions lib/zhongwen_tools/caps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@ module ZhongwenTools
# Public: Module for pinyin/fullwidth capitalization
module Caps
def self.downcase(str)
regex = /(#{ZhongwenTools::Caps::CAPS.keys.join('|')})/
str.gsub(regex, ZhongwenTools::Caps::CAPS).downcase
str.gsub(ZhongwenTools::Regex.capital_letters, ZhongwenTools::Caps::CAPS).downcase
end

def self.upcase(str)
str.gsub(/(#{ZhongwenTools::Caps::CAPS.values.join('|')})/) do
str.gsub(ZhongwenTools::Regex.lowercase_letters) do
ZhongwenTools::Caps::CAPS.find { |_, v| v == Regexp.last_match[0] }[0]
end.upcase
end

def self.capitalize(str)
first_letter = str[/#{Regex.py}|[ĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒ]|[a-zA-Z]/][0]
first_letter = str[ZhongwenTools::Regex.capitalize][0]
str.sub(first_letter, ZhongwenTools::Caps.upcase(first_letter))
end

Expand Down
10 changes: 9 additions & 1 deletion lib/zhongwen_tools/regex.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,21 @@ def self.fullwidth
end

def self.capital_letters
@capital_letters ||= /(#{Regexp.union(ZhongwenTools::Caps::CAPS.keys)})/
@capital_letters ||= /(#{Regexp.union(ZhongwenTools::Caps::CAPS.keys)})/
end

def self.lowercase_letters
@lowercase_letters ||= /(#{Regexp.union(ZhongwenTools::Caps::CAPS.values)})/
end

def self.capitalize
@capitalize ||= /#{Regex.py}|[ĀÁǍÀĒÉĚÈĪÍǏÌŌÓǑÒ]|[a-zA-Z]/
end

def self.find_py_regex
@find_py_regex ||= /(#{Regex.py}|#{Regex.py_syllabic_nasals})/
end

def self.zh
/\p{Han}/
end
Expand Down
2 changes: 1 addition & 1 deletion lib/zhongwen_tools/romanization/pinyin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ def self.normalize_pinyin(pinyin)
end

def self.find_py(str)
regex = /(#{ Regex.py }|#{ Regex.py_syllabic_nasals })/
regex = ZhongwenTools::Regex.find_py_regex
str.scan(regex).map { |x| x.compact[0] }
end

Expand Down
2 changes: 1 addition & 1 deletion lib/zhongwen_tools/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module ZhongwenTools
VERSION = '0.19.1'
VERSION = '0.19.2'
end

0 comments on commit d63e4a7

Please sign in to comment.