Sha256: d89e61f451f27c965a25440d49e2d2a2833a3f3a61b8c3007b95edef785f87cd

Contents?: true

Size: 738 Bytes

Versions: 125

Compression:

Stored size: 738 Bytes

Contents

# frozen_string_literal: true

class ReeText::SafeJoin
  include Ree::FnDSL

  fn :safe_join do
    link :escape_html
  end


  DEFAULTS = {
    sep: "$"
  }

  doc(<<~DOC)
    This method returns an string similar to what <tt>Array#join</tt>
    would return. The array is flattened, and all items, including
    the supplied separator, are HTML escaped.
    
      safe_join(["<p>foo</p>", "<p>bar</p>"], sep: "<br />")
      # => "&lt;p&gt;foo&lt;/p&gt;&lt;br /&gt;&lt;p&gt;bar&lt;/p&gt;"
  DOC
  
  contract(
    Array,
    Ksplat[
      sep?: String
    ] => String
  )
  def call(array, **opts)
    options = DEFAULTS.merge(opts)
    sep = escape_html(options[:sep])

    array.flatten.map { |i| escape_html(i) }.join(sep)
  end
end

Version data entries

125 entries across 125 versions & 1 rubygems

Version Path
ree_lib-1.0.45 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.44 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.43 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.42 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.41 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.40 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.39 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.38 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.37 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.36 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.35 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.34 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.33 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.32 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.31 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.30 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.29 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.28 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.27 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb
ree_lib-1.0.26 lib/ree_lib/packages/ree_text/package/ree_text/functions/safe_join.rb