module Asciidoctor::PDF::TextTransformer

Constants

ContiguousCharsRx
Hyphen
LowerAlphaChars
PCDATAFilterRx
SmallCapsChars

NOTE: use more widely-supported ғ instead of ꜰ as replacement for F NOTE: use more widely-supported ǫ instead of ꞯ as replacement for Q NOTE: use more widely-supported s (lowercase latin “s”) instead of ꜱ as replacement for S NOTE: in small caps, x (lowercase latin “x”) remains unchanged

SoftHyphen
TagFilterRx
WordRx
XMLMarkupRx

Public Instance Methods

capitalize_words(string) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 28
def capitalize_words string
  string.gsub(ContiguousCharsRx) { $&.capitalize }
end
capitalize_words_pcdata(string) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 20
def capitalize_words_pcdata string
  if XMLMarkupRx.match? string
    string.gsub(PCDATAFilterRx) { $2 ? (capitalize_words $2) : $1 }
  else
    capitalize_words string
  end
end
hyphenate_words(string, hyphenator) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 40
def hyphenate_words string, hyphenator
  string.gsub(WordRx) { hyphenator.visualize $&, SoftHyphen }
end
hyphenate_words_pcdata(string, hyphenator) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 32
def hyphenate_words_pcdata string, hyphenator
  if XMLMarkupRx.match? string
    string.gsub(PCDATAFilterRx) { $2 ? (hyphenate_words $2, hyphenator) : $1 }
  else
    hyphenate_words string, hyphenator
  end
end
lowercase_pcdata(string) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 44
def lowercase_pcdata string
  if string.include? '<'
    string.gsub(TagFilterRx) { $2 ? $2.downcase : $1 }
  else
    string.downcase
  end
end
smallcaps_pcdata(string) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 60
def smallcaps_pcdata string
  if XMLMarkupRx.match? string
    string.gsub(PCDATAFilterRx) { $2 ? ($2.tr LowerAlphaChars, SmallCapsChars) : $1 }
  else
    string.tr LowerAlphaChars, SmallCapsChars
  end
end
transform_text(text, transform) click to toggle source

Apply the text transform to the specified text.

Supported transform values are “uppercase”, “lowercase”, or “none” (passed as either a String or a Symbol). When the uppercase transform is applied to the text, it correctly uppercases visible text while leaving markup and named character entities unchanged. The none transform returns the text unmodified.

# File lib/asciidoctor/pdf/text_transformer.rb, line 76
def transform_text text, transform
  case transform
  when :uppercase, 'uppercase'
    uppercase_pcdata text
  when :lowercase, 'lowercase'
    lowercase_pcdata text
  when :capitalize, 'capitalize'
    capitalize_words_pcdata text
  when :smallcaps, 'smallcaps'
    smallcaps_pcdata text
  else
    text
  end
end
uppercase_pcdata(string) click to toggle source
# File lib/asciidoctor/pdf/text_transformer.rb, line 52
def uppercase_pcdata string
  if XMLMarkupRx.match? string
    string.gsub(PCDATAFilterRx) { $2 ? $2.upcase : $1 }
  else
    string.upcase
  end
end