Sha256: ee3102a955605e9aaec68e0203b9d265221428d651af6c3b290350861f99cb4a

Contents?: true

Size: 1.25 KB

Versions: 5

Compression:

Stored size: 1.25 KB

Contents

module Wovnrb
  class ReplacerBase
    def initialize(store)
      @store = store
    end

    def replace(dom, lang)
      raise NotImplementedError.new('replace is not defined')
    end

    protected
    def wovn_ignore?(node)
      if !node.get_attribute('wovn-ignore').nil?
        return true
      elsif node.name === 'html'
        return false
      end

      node_class = node.get_attribute('class')
      if node_class
        classes = node_class.split
        @store.settings['ignore_class'].each do |ignore_class|
          if classes.include?(ignore_class)
            return true
          end
        end
      end

      wovn_ignore?(node.parent)
    end

    # Add comment-node node to remember original src
    # <title> may not contain other markup, so add comment-node to node's previous
    # @see https://www.w3.org/TR/html401/struct/global.html#h-7.4.2
    def add_comment_node(node, text)
      comment_node = Nokogiri::XML::Comment.new(node.document, "wovn-src:#{text}")
      if node.parent.name == 'title'
        node.parent.add_previous_sibling(comment_node)
      else
        node.add_previous_sibling(comment_node)
      end
    end

    def replace_text(from, to)
      from.gsub(/\A(\s*)[\S\s]*?(\s*)\Z/, '\1' + to + '\2')
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
wovnrb-1.0.11 lib/wovnrb/html_replacers/replacer_base.rb
wovnrb-1.0.10 lib/wovnrb/html_replacers/replacer_base.rb
wovnrb-1.0.9 lib/wovnrb/html_replacers/replacer_base.rb
wovnrb-1.0.8 lib/wovnrb/html_replacers/replacer_base.rb
wovnrb-1.0.7 lib/wovnrb/html_replacers/replacer_base.rb