Sha256: b8f3985467113314fcda71059ae4f0674e3059527e860f224959544c1221295f

Contents?: true

Size: 1.32 KB

Versions: 41

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

require 'strscan'

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

41 entries across 41 versions & 1 rubygems

Version Path
synvert-core-2.2.2 lib/synvert/core/engine.rb
synvert-core-2.2.1 lib/synvert/core/engine.rb
synvert-core-2.2.0 lib/synvert/core/engine.rb
synvert-core-2.1.2 lib/synvert/core/engine.rb
synvert-core-2.1.1 lib/synvert/core/engine.rb
synvert-core-2.1.0 lib/synvert/core/engine.rb
synvert-core-2.0.3 lib/synvert/core/engine.rb
synvert-core-2.0.2 lib/synvert/core/engine.rb
synvert-core-2.0.1 lib/synvert/core/engine.rb
synvert-core-2.0.0 lib/synvert/core/engine.rb
synvert-core-1.35.4 lib/synvert/core/engine.rb
synvert-core-1.35.3 lib/synvert/core/engine.rb
synvert-core-1.35.2 lib/synvert/core/engine.rb
synvert-core-1.35.1 lib/synvert/core/engine.rb
synvert-core-1.35.0 lib/synvert/core/engine.rb
synvert-core-1.34.0 lib/synvert/core/engine.rb
synvert-core-1.33.3 lib/synvert/core/engine.rb
synvert-core-1.33.2 lib/synvert/core/engine.rb
synvert-core-1.33.1 lib/synvert/core/engine.rb
synvert-core-1.33.0 lib/synvert/core/engine.rb