class RailsAutobots::RewriteRuleset

Public Class Methods

new() click to toggle source
# File lib/rails_autobots/rewrite_ruleset.rb, line 4
def initialize
  @rulesets = []
end

Public Instance Methods

add(environment_name, rewrite_function) click to toggle source
# File lib/rails_autobots/rewrite_ruleset.rb, line 8
def add(environment_name, rewrite_function)
  @rulesets << RailsAutobots::EnvironmentRewriter.new(environment_name, rewrite_function)
end
environment_nodes(d) click to toggle source
# File lib/rails_autobots/rewrite_ruleset.rb, line 32
def environment_nodes(d)
  d.css("meta[name$='/config/environment']")
end
rewrite(markup) click to toggle source
# File lib/rails_autobots/rewrite_ruleset.rb, line 12
def rewrite(markup)
  d = Nokogiri::HTML(markup)
  environments = environment_nodes(d)
  any_rewritten = false

  environments.each do |e|
    name = strip_environment_suffix(e["name"])
    content = JSON.parse(CGI.unescape(e["content"]))
    original_content = content.deep_dup
    @rulesets.each { |r| r.process(name, content) }

    if original_content != content
      any_rewritten = true
      e["content"] = CGI.escape(content.to_json)
    end
  end

  any_rewritten ? d.to_html : markup
end
strip_environment_suffix(s) click to toggle source
# File lib/rails_autobots/rewrite_ruleset.rb, line 36
def strip_environment_suffix(s)
  i = s.index("/")
  s[0...i]
end