Sha256: c56afb84701874e2daa78f93c554e8da7ff821bc08c11ee1fa7e3bb178d8647e

Contents?: true

Size: 1.08 KB

Versions: 4

Compression:

Stored size: 1.08 KB

Contents

# typed: strict
# frozen_string_literal: true

require "erb"

module Tapioca
  module Helpers
    module Test
      module Template
        extend T::Sig
        extend T::Helpers

        requires_ancestor { Kernel }

        ERB_SUPPORTS_KVARGS = T.let(
          ::ERB.instance_method(:initialize).parameters.assoc(:key), T.nilable([Symbol, Symbol])
        )

        sig { params(selector: String).returns(T::Boolean) }
        def ruby_version(selector)
          ::Gem::Requirement.new(selector).satisfied_by?(::Gem::Version.new(RUBY_VERSION))
        end

        sig { params(src: String).returns(String) }
        def template(src)
          erb = if ERB_SUPPORTS_KVARGS
            ::ERB.new(src, trim_mode: ">")
          else
            ::ERB.new(src, nil, ">")
          end

          erb.result(binding)
        end

        sig { params(str: String, indent: Integer).returns(String) }
        def indented(str, indent)
          str.lines.map! do |line|
            next line if line.chomp.empty?

            (" " * indent) + line
          end.join
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
tapioca-0.8.3 lib/tapioca/helpers/test/template.rb
tapioca-0.8.2 lib/tapioca/helpers/test/template.rb
tapioca-0.8.1 lib/tapioca/helpers/test/template.rb
tapioca-0.8.0 lib/tapioca/helpers/test/template.rb