Sha256: 1d0c64a4d66f4aa701c0c6a6a9cd4733fd2200dbc3a9555b3abc577069b725f5

Contents?: true

Size: 1.91 KB

Versions: 7

Compression:

Stored size: 1.91 KB

Contents

# frozen_string_literal: true

# @api private
module Phlex::Rails::HelperMacros
	def define_output_helper(method_name)
		class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
			# frozen_string_literal: true

			def #{method_name}(...)
				output = helpers.#{method_name}(...)

				case output
				when ActiveSupport::SafeBuffer
					@_context.target << output
				end

				nil
			end
		RUBY
	end

	def define_output_helper_with_capture_block(method_name)
		class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
			# frozen_string_literal: true

			def #{method_name}(*args, **kwargs, &block)
				output = if block
					helpers.#{method_name}(*args, **kwargs) { capture(&block) }
				else
					helpers.#{method_name}(*args, **kwargs)
				end

				case output
				when ActiveSupport::SafeBuffer
					@_context.target << output
				end

				nil
			end
		RUBY
	end

	def define_value_helper(method_name)
		class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
			# frozen_string_literal: true

			def #{method_name}(...)
				helpers.#{method_name}(...)
			end
		RUBY
	end

	def define_value_helper_with_capture_block(method_name)
		class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
			# frozen_string_literal: true

			def #{method_name}(*args, **kwargs, &block)
				if block
					helpers.#{method_name}(*args, **kwargs) { capture(&block) }
				else
					helpers.#{method_name}(*args, **kwargs)
				end
			end
		RUBY
	end

	def define_builder_yielding_helper(method_name, builder)
		class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
			# frozen_string_literal: true

			def #{method_name}(*args, **kwargs)
				output = if block_given?
					helpers.#{method_name}(*args, **kwargs) { |form|
						capture do
							yield(
								#{builder.name}.new(form,
									view: self
								)
							)
						end
					}
				else
					helpers.#{method_name}(*args, **kwargs)
				end

				case output
				when ActiveSupport::SafeBuffer
					@_context.target << output
				end

				nil
			end
		RUBY
	end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
phlex-rails-1.1.2 lib/phlex/rails/helper_macros.rb
phlex-rails-1.1.1 lib/phlex/rails/helper_macros.rb
phlex-rails-1.1.0 lib/phlex/rails/helper_macros.rb
phlex-rails-1.0.0 lib/phlex/rails/helper_macros.rb
phlex-rails-0.10.0 lib/phlex/rails/helper_macros.rb
phlex-rails-0.8.1 lib/phlex/rails/helper_macros.rb
phlex-rails-0.9.0 lib/phlex/rails/helper_macros.rb