Sha256: 277122ea0304eaaf5a9a182ff45d93c80e67b3642be770d1c23985551e8632e1
Contents?: true
Size: 1.3 KB
Versions: 6
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true module Synvert::Core # Engine defines how to encode / decode other files (like erb). module Engine autoload :Elegant, 'synvert/core/engine/elegant' autoload :Erb, 'synvert/core/engine/erb' autoload :Haml, 'synvert/core/engine/haml' autoload :Slim, 'synvert/core/engine/slim' # Register an engine # @param [String] extension # @param [Class] engine def self.register(extension, engine) @engines ||= {} @engines[extension] = engine end # Encode source code by registered engine. # @param [String] extension # @param [String] source # @return [String] encoded source def self.encode(extension, source) engine = @engines[extension] engine ? engine.encode(source) : source end # Generate a transform_proc by registered engine, # which is used to adjust start and end position of actions. # @param [String] extension # @param [String] encoded_source # @return [Proc] transform_proc def self.generate_transform_proc(extension, encoded_source) engine = @engines[extension] engine ? engine.generate_transform_proc(encoded_source) : proc {} end end Engine.register('.erb', Engine::Erb) Engine.register('.haml', Engine::Haml) Engine.register('.slim', Engine::Slim) end
Version data entries
6 entries across 6 versions & 1 rubygems