Sha256: 196c1477e0450d4acb177348c12687d1fe0190cfa32c38b50c0e75d3da0bf669

Contents?: true

Size: 419 Bytes

Versions: 4

Compression:

Stored size: 419 Bytes

Contents

# frozen_string_literal: true

module Components
	class CodeBlock < Phlex::HTML
		FORMATTER = Rouge::Formatters::HTML.new

		def initialize(code, syntax:)
			@code = code
			@syntax = syntax
		end

		def template
			pre(class: "highlight p-5 whitespace-pre-wrap bg-stone-50") {
				unsafe_raw FORMATTER.format(
					lexer.lex(@code)
				)
			}
		end

		private

		def lexer
			Rouge::Lexer.find(@syntax)
		end
	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
phlex-0.5.3 docs/components/code_block.rb
phlex-0.5.2 docs/components/code_block.rb
phlex-0.5.1 docs/components/code_block.rb
phlex-0.5.0 docs/components/code_block.rb