Sha256: c249118669ca268dd04c4c17c98220591d1d974141ab2dc4d5024fba2034412c
Contents?: true
Size: 1.07 KB
Versions: 7
Compression:
Stored size: 1.07 KB
Contents
require 'cgi' module PrettyDiff class AbstractGenerator def self.[](tgt) new(tgt) end def initialize(tgt) target_name = class_to_target_name(tgt.class) instance_variable_set("@#{target_name}", tgt) self.class.class_eval do attr_accessor(target_name) end end def generate raise 'Not implemented!' end protected def tag(name, options=nil, open=false) "<#{name}#{tag_options(options) if options}#{open ? ">" : " />"}" end def content_tag(name, options=nil, &block) "<#{name}#{tag_options(options) if options}>#{block.call}</#{name}>" end def tag_options(options) return if options.empty? attrs = [] options.each_pair do |key, value| unless value.nil? attrs << %(#{key}="#{h(value)}") end end " #{attrs.sort * ' '}" unless attrs.empty? end def h(t) CGI.escapeHTML(t) end def class_to_target_name(c) c.to_s.split('::').last.gsub(/Gen(erator)?\z/, '').gsub(/(.)([A-Z])/,'\1_\2').downcase end end end
Version data entries
7 entries across 7 versions & 1 rubygems