Files
blog/_plugins/hyphenate.rb

41 lines
1.3 KiB
Ruby

# adapted from
# - https://raw.githubusercontent.com/aucor/jekyll-plugins/master/hyphenate.rb
require 'nokogiri'
require 'text/hyphen'
module Jekyll
module HyphenateFilter
def hyphenate(content)
# Initialize Hyphen
hh = Text::Hyphen.new(:language => @context.registers[:site].config['language'], :left => 2, :right => 2)
# Parse html with Nokogiri
fragment = Nokogiri::HTML::DocumentFragment.parse(content)
# Grab the html as it is
html = fragment.inner_html
# Loop through every paragraph
fragment.css('p').each do |p|
h = p.content
# Loop through every word
p.content.split.each do |w|
# Replace original word with a hyphenated one unless it is the last word in a paragraph
if w != p.content.split.last
h = h.gsub(w, hh.visualize(w, '­'))
end
end
# Replace original paragraph with a hyphenated one
html = html.gsub(p, h)
end
# Return hyphenated html
html
end
end
end
Liquid::Template.register_filter(Jekyll::HyphenateFilter)