PageRenderTime 49ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/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