Sha256: a78d98951d5b0453cdc611c1cfcc0dfdb72c29694c9b1617a4cba3be057da4a8
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
module Asciidoctor module Pdf module Linewrap module Ja module Converter # 行頭禁則文字 PROHIBIT_LINE_BREAK_BEFORE = '}〕〉》」』】〙〗〟⦆»' + 'ゝゞーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇷ゚ㇺㇻㇼㇽㇾㇿ々〻' + 'ァィゥェォッャュョ' + '‐゠〜~' + '‼⁇⁈⁉' + '?!' + '・' + '、。' # 行末禁則文字 PROHIBIT_LINE_BREAK_AFTER = '{〔〈《「『【〘〖〝⦅«' # 分離禁止文字 PROHIBIT_DIVIDE = '…‥〳〴〵' # ゼロ幅スペース ZERO_WIDTH_SPACE = '{zwsp}' def self.insert_zero_width_space(line) new_line = '' line.each_char.with_index do |ch, idx| new_line << ch new_line << ZERO_WIDTH_SPACE if insert_zero_width_space?(ch, line[idx + 1]) end return new_line end def self.insert_zero_width_space?(ch, next_ch) japanese_char?(ch) \ && !PROHIBIT_LINE_BREAK_AFTER.include?(ch) \ && next_ch != nil && !PROHIBIT_LINE_BREAK_BEFORE.include?(next_ch) \ && !(PROHIBIT_DIVIDE.include?(ch) && PROHIBIT_DIVIDE.include?(next_ch)) end def self.japanese_char?(ch) (/[\p{Han}\p{Hiragana}\p{Katakana}ー]/ === ch) \ || PROHIBIT_LINE_BREAK_BEFORE.include?(ch) \ || PROHIBIT_LINE_BREAK_AFTER.include?(ch) \ || PROHIBIT_DIVIDE.include?(ch) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
asciidoctor-pdf-linewrap-ja-0.1.0 | lib/asciidoctor/pdf/linewrap/ja/converter.rb |