lib/react/jsx/babel_transformer.rb (19 lines of code) (raw):
require 'babel/transpiler'
module React
module JSX
# A {React::JSX}-compliant transformer which uses `Babel::Transpiler` to transform JSX.
class BabelTransformer
DEPRECATED_OPTIONS = [:harmony, :strip_types, :asset_path]
DEFAULT_TRANSFORM_OPTIONS = { blacklist: ['spec.functionName', 'validation.react', 'strict'] }
def initialize(options)
if (options.keys & DEPRECATED_OPTIONS).any?
ActiveSupport::Deprecation.warn('Setting config.react.jsx_transform_options for :harmony, :strip_types, and :asset_path keys is now deprecated and has no effect with the default Babel Transformer.'+
'Please use new Babel Transformer options :whitelist, :plugin instead.')
end
@transform_options = DEFAULT_TRANSFORM_OPTIONS.merge(options)
end
def transform(code)
Babel::Transpiler.transform(code, @transform_options)['code']
end
end
end
end