module Asciidoctor::Pdf::Linewrap::Ja::Converter
Constants
- PROHIBIT_DIVIDE
分離禁止文字
- PROHIBIT_LINE_BREAK_AFTER
行末禁則文字
- PROHIBIT_LINE_BREAK_BEFORE
行頭禁則文字
- ZERO_WIDTH_SPACE
ゼロ幅スペース
Public Class Methods
insert_zero_width_space(line)
click to toggle source
ZERO_WIDTH_SPACE
= '★'
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 32 def self.insert_zero_width_space(line) return line if line.nil? 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 remove_zero_width_space(new_line) end
insert_zero_width_space?(ch, next_ch)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 47 def self.insert_zero_width_space?(ch, next_ch) if ch == '\\' return false elsif japanese_char?(ch) return !prohibit_line_break?(ch, next_ch) elsif next_ch != nil && japanese_char?(next_ch) return !prohibit_line_break_before?(next_ch) end return false end
japanese_char?(ch)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 70 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
prohibit_divide?(ch, next_ch)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 89 def self.prohibit_divide?(ch, next_ch) next_ch == nil || (PROHIBIT_DIVIDE.include?(ch) && PROHIBIT_DIVIDE.include?(next_ch)) end
prohibit_line_break?(ch, next_ch)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 77 def self.prohibit_line_break?(ch, next_ch) prohibit_line_break_after?(ch) || prohibit_line_break_before?(next_ch) || prohibit_divide?(ch, next_ch) end
prohibit_line_break_after?(ch)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 81 def self.prohibit_line_break_after?(ch) PROHIBIT_LINE_BREAK_AFTER.include?(ch) end
prohibit_line_break_before?(ch)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 85 def self.prohibit_line_break_before?(ch) ch == nil || PROHIBIT_LINE_BREAK_BEFORE.include?(ch) end
remove_zero_width_space(line)
click to toggle source
# File lib/asciidoctor/pdf/linewrap/ja/converter.rb, line 60 def self.remove_zero_width_space(line) line = line.gsub(/http.*?[\]\s]/) do |href| href.gsub(/#{ZERO_WIDTH_SPACE}/, "") end line.gsub(/image:.*?\]/) do |image| image.gsub(/#{ZERO_WIDTH_SPACE}/, "") end end