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