module Aozora2Html::Utils
ユーティリティ関数モジュール
Constants
- KANJI_NUMS
- KANJI_TEN
- ZENKAKU_NUMS
Public Class Methods
convert_japanese_number(command)
click to toggle source
# File lib/aozora2html/utils.rb, line 82 def convert_japanese_number(command) tmp = command.tr(ZENKAKU_NUMS, '0-9') tmp.tr!(KANJI_NUMS, '1234567890') tmp.gsub!(/(\d)#{KANJI_TEN}(\d)/o) { "#{$1}#{$2}" } tmp.gsub!(/(\d)#{KANJI_TEN}/o) { "#{$1}0" } tmp.gsub!(/#{KANJI_TEN}(\d)/o) { "1#{$1}" } tmp.gsub!(/#{KANJI_TEN}/o, '10') tmp end
create_font_size(times, daisho)
click to toggle source
# File lib/aozora2html/utils.rb, line 12 def create_font_size(times, daisho) size = case times when 1 +'' when 2 +'x-' else raise Aozora2Html::Error, I18n.t(:invalid_font_size) unless times >= 3 +'xx-' end case daisho when :dai size << 'large' when :sho size << 'small' else raise Aozora2Html::Error, I18n.t(:invalid_font_size) end size end
create_midashi_class(type, tag)
click to toggle source
# File lib/aozora2html/utils.rb, line 50 def create_midashi_class(type, tag) normal_midashi_tag = { 'h5' => 'ko-midashi', 'h4' => 'naka-midashi', 'h3' => 'o-midashi' } dogyo_midashi_tag = { 'h5' => 'dogyo-ko-midashi', 'h4' => 'dogyo-naka-midashi', 'h3' => 'dogyo-o-midashi' } mado_midashi_tag = { 'h5' => 'mado-ko-midashi', 'h4' => 'mado-naka-midashi', 'h3' => 'mado-o-midashi' } case type when :normal normal_midashi_tag[tag] when :dogyo dogyo_midashi_tag[tag] when :mado mado_midashi_tag[tag] else raise Aozora2Html::Error, I18n.t(:undefined_header) end end
create_midashi_tag(size)
click to toggle source
# File lib/aozora2html/utils.rb, line 37 def create_midashi_tag(size) if size.match(SIZE_SMALL) 'h5' elsif size.match(SIZE_MIDDLE) 'h4' elsif size.match(SIZE_LARGE) 'h3' else raise Aozora2Html::Error, I18n.t(:undefined_header) end end
illegal_char_check(char, line)
click to toggle source
使うべきではない文字があるかチェックする
警告を出力するだけで結果には影響を与えない。警告する文字は以下:
-
1バイト文字
-
‘#`ではなく`♯`
-
JIS(JIS X 0208)外字
@return [void]
# File lib/aozora2html/utils.rb, line 103 def illegal_char_check(char, line) return unless char.is_a?(String) code = char.unpack1('H*') if (code == '21') || (code == '23') || ((code >= 'a1') && (code <= 'a5')) || ((code >= '28') && (code <= '29')) || (code == '5b') || (code == '5d') || (code == '3d') || (code == '3f') || (code == '2b') || ((code >= '7b') && (code <= '7d')) puts I18n.t(:warn_onebyte, line, char) end if code == '81f2' puts I18n.t(:warn_chuki, line, char) end if ((code >= '81ad') && (code <= '81b7')) || ((code >= '81c0') && (code <= '81c7')) || ((code >= '81cf') && (code <= '81d9')) || ((code >= '81e9') && (code <= '81ef')) || ((code >= '81f8') && (code <= '81fb')) || ((code >= '8240') && (code <= '824e')) || ((code >= '8259') && (code <= '825f')) || ((code >= '827a') && (code <= '8280')) || ((code >= '829b') && (code <= '829e')) || ((code >= '82f2') && (code <= '82fc')) || ((code >= '8397') && (code <= '839e')) || ((code >= '83b7') && (code <= '83be')) || ((code >= '83d7') && (code <= '83fc')) || ((code >= '8461') && (code <= '846f')) || ((code >= '8492') && (code <= '849e')) || ((code >= '84bf') && (code <= '84fc')) || ((code >= '8540') && (code <= '85fc')) || ((code >= '8640') && (code <= '86fc')) || ((code >= '8740') && (code <= '87fc')) || ((code >= '8840') && (code <= '889e')) || ((code >= '9873') && (code <= '989e')) || ((code >= 'eaa5') && (code <= 'eafc')) || ((code >= 'eb40') && (code <= 'ebfc')) || ((code >= 'ec40') && (code <= 'ecfc')) || ((code >= 'ed40') && (code <= 'edfc')) || ((code >= 'ee40') && (code <= 'eefc')) || ((code >= 'ef40') && (code <= 'effc')) puts I18n.t(:warn_jis_gaiji, line, char) end end
Private Instance Methods
convert_japanese_number(command)
click to toggle source
# File lib/aozora2html/utils.rb, line 82 def convert_japanese_number(command) tmp = command.tr(ZENKAKU_NUMS, '0-9') tmp.tr!(KANJI_NUMS, '1234567890') tmp.gsub!(/(\d)#{KANJI_TEN}(\d)/o) { "#{$1}#{$2}" } tmp.gsub!(/(\d)#{KANJI_TEN}/o) { "#{$1}0" } tmp.gsub!(/#{KANJI_TEN}(\d)/o) { "1#{$1}" } tmp.gsub!(/#{KANJI_TEN}/o, '10') tmp end
create_font_size(times, daisho)
click to toggle source
# File lib/aozora2html/utils.rb, line 12 def create_font_size(times, daisho) size = case times when 1 +'' when 2 +'x-' else raise Aozora2Html::Error, I18n.t(:invalid_font_size) unless times >= 3 +'xx-' end case daisho when :dai size << 'large' when :sho size << 'small' else raise Aozora2Html::Error, I18n.t(:invalid_font_size) end size end
create_midashi_class(type, tag)
click to toggle source
# File lib/aozora2html/utils.rb, line 50 def create_midashi_class(type, tag) normal_midashi_tag = { 'h5' => 'ko-midashi', 'h4' => 'naka-midashi', 'h3' => 'o-midashi' } dogyo_midashi_tag = { 'h5' => 'dogyo-ko-midashi', 'h4' => 'dogyo-naka-midashi', 'h3' => 'dogyo-o-midashi' } mado_midashi_tag = { 'h5' => 'mado-ko-midashi', 'h4' => 'mado-naka-midashi', 'h3' => 'mado-o-midashi' } case type when :normal normal_midashi_tag[tag] when :dogyo dogyo_midashi_tag[tag] when :mado mado_midashi_tag[tag] else raise Aozora2Html::Error, I18n.t(:undefined_header) end end
create_midashi_tag(size)
click to toggle source
# File lib/aozora2html/utils.rb, line 37 def create_midashi_tag(size) if size.match(SIZE_SMALL) 'h5' elsif size.match(SIZE_MIDDLE) 'h4' elsif size.match(SIZE_LARGE) 'h3' else raise Aozora2Html::Error, I18n.t(:undefined_header) end end
illegal_char_check(char, line)
click to toggle source
使うべきではない文字があるかチェックする
警告を出力するだけで結果には影響を与えない。警告する文字は以下:
-
1バイト文字
-
‘#`ではなく`♯`
-
JIS(JIS X 0208)外字
@return [void]
# File lib/aozora2html/utils.rb, line 103 def illegal_char_check(char, line) return unless char.is_a?(String) code = char.unpack1('H*') if (code == '21') || (code == '23') || ((code >= 'a1') && (code <= 'a5')) || ((code >= '28') && (code <= '29')) || (code == '5b') || (code == '5d') || (code == '3d') || (code == '3f') || (code == '2b') || ((code >= '7b') && (code <= '7d')) puts I18n.t(:warn_onebyte, line, char) end if code == '81f2' puts I18n.t(:warn_chuki, line, char) end if ((code >= '81ad') && (code <= '81b7')) || ((code >= '81c0') && (code <= '81c7')) || ((code >= '81cf') && (code <= '81d9')) || ((code >= '81e9') && (code <= '81ef')) || ((code >= '81f8') && (code <= '81fb')) || ((code >= '8240') && (code <= '824e')) || ((code >= '8259') && (code <= '825f')) || ((code >= '827a') && (code <= '8280')) || ((code >= '829b') && (code <= '829e')) || ((code >= '82f2') && (code <= '82fc')) || ((code >= '8397') && (code <= '839e')) || ((code >= '83b7') && (code <= '83be')) || ((code >= '83d7') && (code <= '83fc')) || ((code >= '8461') && (code <= '846f')) || ((code >= '8492') && (code <= '849e')) || ((code >= '84bf') && (code <= '84fc')) || ((code >= '8540') && (code <= '85fc')) || ((code >= '8640') && (code <= '86fc')) || ((code >= '8740') && (code <= '87fc')) || ((code >= '8840') && (code <= '889e')) || ((code >= '9873') && (code <= '989e')) || ((code >= 'eaa5') && (code <= 'eafc')) || ((code >= 'eb40') && (code <= 'ebfc')) || ((code >= 'ec40') && (code <= 'ecfc')) || ((code >= 'ed40') && (code <= 'edfc')) || ((code >= 'ee40') && (code <= 'eefc')) || ((code >= 'ef40') && (code <= 'effc')) puts I18n.t(:warn_jis_gaiji, line, char) end end