lib/react/component/resolution.rb in isomorfeus-react-16.13.11 vs lib/react/component/resolution.rb in isomorfeus-react-16.13.12
- old
+ new
@@ -1,97 +1,97 @@
-module React
- module Component
- module Resolution
- def self.included(base)
- base.instance_exec do
- unless method_defined?(:_react_component_class_resolution_original_const_missing)
- alias _react_component_class_resolution_original_const_missing const_missing
- end
-
- def const_missing(const_name)
- %x{
- if (typeof Opal.global[const_name] !== "undefined" && (const_name[0] === const_name[0].toUpperCase())) {
- var new_const = #{React::NativeConstantWrapper.new(`Opal.global[const_name]`, const_name)};
- new_const.react_component = Opal.global[const_name];
- #{Object.const_set(const_name, `new_const`)};
- return new_const;
- } else {
- return #{_react_component_class_resolution_original_const_missing(const_name)};
- }
- }
- end
-
- # this is required for autoloading support, as the component may not be loaded and so its method is not registered.
- # must load it first, done by const_get, and next time the method will be there.
- unless method_defined?(:_react_component_class_resolution_original_method_missing)
- alias _react_component_class_resolution_original_method_missing method_missing
- end
-
- def method_missing(component_name, *args, &block)
- # check for ruby component and render it
- # otherwise pass on method missing
- %x{
- var constant;
- if (typeof self.iso_react_const_cache === 'undefined') { self.iso_react_const_cache = {}; }
- try {
- if (typeof self.iso_react_const_cache[component_name] !== 'undefined') {
- constant = self.iso_react_const_cache[component_name]
- } else {
- constant = self.$const_get(component_name);
- self.iso_react_const_cache[component_name] = constant;
- }
- if (typeof constant.react_component !== 'undefined') {
- return Opal.React.internal_prepare_args_and_render(constant.react_component, args, block);
- }
- } catch(err) { }
- return #{_react_component_class_resolution_original_method_missing(component_name, *args, block)};
- }
- end
- end
- end
-
- unless method_defined?(:_react_component_resolution_original_method_missing)
- alias _react_component_resolution_original_method_missing method_missing
- end
-
- def method_missing(component_name, *args, &block)
- # Further on it must check for modules, because $const_get does not take
- # the full nesting into account, as usually its called via $$ with the
- # nesting provided by the compiler.
- %x{
- var constant;
- if (typeof self.iso_react_const_cache === 'undefined') { self.iso_react_const_cache = {}; }
-
- if (typeof self.iso_react_const_cache[component_name] !== 'undefined') {
- constant = self.iso_react_const_cache[component_name]
- } else if (typeof self.$$is_a_module !== 'undefined') {
- try {
- constant = self.$const_get(component_name);
- self.iso_react_const_cache[component_name] = constant;
- } catch(err) { }
- } else {
- let sc = self.$class();
- try {
- constant = sc.$const_get(component_name);
- self.iso_react_const_cache[component_name] = constant;
- } catch(err) {
- var module_names = sc.$to_s().split("::");
- var module_name;
- for (var i = module_names.length - 1; i > 0; i--) {
- module_name = module_names.slice(0, i).join('::');
- try {
- constant = sc.$const_get(module_name).$const_get(component_name, false);
- self.iso_react_const_cache[component_name] = constant;
- break;
- } catch(err) { }
- }
- }
- }
- if (constant && typeof constant.react_component !== 'undefined') {
- return Opal.React.internal_prepare_args_and_render(constant.react_component, args, block);
- }
- return #{_react_component_resolution_original_method_missing(component_name, *args, block)};
- }
- end
- end
- end
-end
+module React
+ module Component
+ module Resolution
+ def self.included(base)
+ base.instance_exec do
+ unless method_defined?(:_react_component_class_resolution_original_const_missing)
+ alias _react_component_class_resolution_original_const_missing const_missing
+ end
+
+ def const_missing(const_name)
+ %x{
+ if (typeof Opal.global[const_name] !== "undefined" && (const_name[0] === const_name[0].toUpperCase())) {
+ var new_const = #{React::NativeConstantWrapper.new(`Opal.global[const_name]`, const_name)};
+ new_const.react_component = Opal.global[const_name];
+ #{Object.const_set(const_name, `new_const`)};
+ return new_const;
+ } else {
+ return #{_react_component_class_resolution_original_const_missing(const_name)};
+ }
+ }
+ end
+
+ # this is required for autoloading support, as the component may not be loaded and so its method is not registered.
+ # must load it first, done by const_get, and next time the method will be there.
+ unless method_defined?(:_react_component_class_resolution_original_method_missing)
+ alias _react_component_class_resolution_original_method_missing method_missing
+ end
+
+ def method_missing(component_name, *args, &block)
+ # check for ruby component and render it
+ # otherwise pass on method missing
+ %x{
+ var constant;
+ if (typeof self.iso_react_const_cache === 'undefined') { self.iso_react_const_cache = {}; }
+ try {
+ if (typeof self.iso_react_const_cache[component_name] !== 'undefined') {
+ constant = self.iso_react_const_cache[component_name]
+ } else {
+ constant = self.$const_get(component_name);
+ self.iso_react_const_cache[component_name] = constant;
+ }
+ if (typeof constant.react_component !== 'undefined') {
+ return Opal.React.internal_prepare_args_and_render(constant.react_component, args, block);
+ }
+ } catch(err) { }
+ return #{_react_component_class_resolution_original_method_missing(component_name, *args, block)};
+ }
+ end
+ end
+ end
+
+ unless method_defined?(:_react_component_resolution_original_method_missing)
+ alias _react_component_resolution_original_method_missing method_missing
+ end
+
+ def method_missing(component_name, *args, &block)
+ # Further on it must check for modules, because $const_get does not take
+ # the full nesting into account, as usually its called via $$ with the
+ # nesting provided by the compiler.
+ %x{
+ var constant;
+ if (typeof self.iso_react_const_cache === 'undefined') { self.iso_react_const_cache = {}; }
+
+ if (typeof self.iso_react_const_cache[component_name] !== 'undefined') {
+ constant = self.iso_react_const_cache[component_name]
+ } else if (typeof self.$$is_a_module !== 'undefined') {
+ try {
+ constant = self.$const_get(component_name);
+ self.iso_react_const_cache[component_name] = constant;
+ } catch(err) { }
+ } else {
+ let sc = self.$class();
+ try {
+ constant = sc.$const_get(component_name);
+ self.iso_react_const_cache[component_name] = constant;
+ } catch(err) {
+ var module_names = sc.$to_s().split("::");
+ var module_name;
+ for (var i = module_names.length - 1; i > 0; i--) {
+ module_name = module_names.slice(0, i).join('::');
+ try {
+ constant = sc.$const_get(module_name).$const_get(component_name, false);
+ self.iso_react_const_cache[component_name] = constant;
+ break;
+ } catch(err) { }
+ }
+ }
+ }
+ if (constant && typeof constant.react_component !== 'undefined') {
+ return Opal.React.internal_prepare_args_and_render(constant.react_component, args, block);
+ }
+ return #{_react_component_resolution_original_method_missing(component_name, *args, block)};
+ }
+ end
+ end
+ end
+end