Sha256: 70e114672065fd8685fe25fb3be136290b2405c338fd2824bf7ad6f35c80bed5
Contents?: true
Size: 1.06 KB
Versions: 10
Compression:
Stored size: 1.06 KB
Contents
module React module JSX # A {React::JSX}-compliant transformer which uses the deprecated `JSXTransformer.js` to transform JSX. class JSXTransformer DEFAULT_ASSET_PATH = 'JSXTransformer.js' def initialize(options) @transform_options = { stripTypes: options.fetch(:strip_types, false), harmony: options.fetch(:harmony, false) } @asset_path = options.fetch(:asset_path, DEFAULT_ASSET_PATH) # If execjs uses therubyracer, there is no 'global'. Make sure # we have it so JSX script can work properly. js_code = 'var global = global || this;' + jsx_transform_code @context = ExecJS.compile(js_code) end def transform(code) result = @context.call('JSXTransformer.transform', code, @transform_options) result['code'] end # search for transformer file using sprockets - allows user to override # this file in his own application def jsx_transform_code ::Rails.application.assets[@asset_path].to_s end end end end
Version data entries
10 entries across 10 versions & 1 rubygems