Sha256: 20b5c0cbae3eb98f29ec682e53ba8e518ee8f46bf35620fdba5d29d1899a9f07

Contents?: true

Size: 893 Bytes

Versions: 5

Compression:

Stored size: 893 Bytes

Contents

# frozen_string_literal: true

require "execjs"
require "react/jsx/processor"
require "react/jsx/template"
require "react/jsx/jsx_transformer"
require "react/jsx/babel_transformer"
require "react/jsx/sprockets_strategy"
require "rails"

module React
  module JSX
    DEFAULT_TRANSFORMER = BabelTransformer
    mattr_accessor :transform_options, :transformer_class, :transformer

    # You can assign `config.react.jsx_transformer_class = `
    # to provide your own transformer. It must implement:
    # - #initialize(options)
    # - #transform(code) => new code
    self.transformer_class = DEFAULT_TRANSFORMER

    # @param code [String] JSX code to transform into JavaScript
    # @return [String] plain, browser-ready JavaScript code
    def self.transform(code)
      self.transformer ||= transformer_class.new(transform_options)
      self.transformer.transform(code)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
react-rails-3.2.0 lib/react/jsx.rb
react-rails-3.1.1 lib/react/jsx.rb
react-rails-3.1.0 lib/react/jsx.rb
react-rails-3.0.0 lib/react/jsx.rb
react-rails-3.0.0.rc.0 lib/react/jsx.rb