41 lines
1.3 KiB
Ruby
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) |