/lib/awestruct/extensions/gsub.rb

https://github.com/awestruct/awestruct · Ruby · 34 lines · 30 code · 4 blank · 0 comment · 3 complexity · 5b2d81aef4b73ec75940e500f219783f MD5 · raw file

  1. module Awestruct
  2. module Extensions
  3. class Gsub
  4. def initialize(pattern, replacement, options = {})
  5. @pattern = pattern
  6. @replacement = replacement.is_a?(Proc) ? replacement : lambda { |site, page| replacement }
  7. @gsub_required = lambdaize(options[:gsub_required])
  8. end
  9. def transform(site, page, rendered)
  10. if (@gsub_required.call(site, page))
  11. replacement = @replacement.call(site, page).to_s
  12. rendered = rendered.gsub(@pattern, replacement)
  13. end
  14. rendered
  15. end
  16. private
  17. def lambdaize(param)
  18. if param.nil?
  19. lambdaize([".html"])
  20. else
  21. if param.is_a?(Array)
  22. lambda { |site, page| param.any?{ |ext| page.output_path.end_with?(ext) } }
  23. else
  24. param
  25. end
  26. end
  27. end
  28. end
  29. end
  30. end