Browse Source

kernel: st.traverseClassTree in, st.allSubclasses out

Herbert Vojčík 7 years ago
parent
commit
2ed92440ae
1 changed files with 10 additions and 7 deletions
  1. 10 7
      support/boot.js

+ 10 - 7
support/boot.js

@@ -537,11 +537,14 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
             return detachedRootClasses;
         };
 
-        // Still used, but could go away now that subclasses are stored
-        // into classes directly.
-        st.allSubclasses = function (klass) {
-            return klass._allSubclasses();
-        };
+        st.traverseClassTree = function (klass, fn) {
+            var queue = [klass];
+            for (var i = 0; i < queue.length; ++i) {
+                var item = queue[i];
+                fn(item);
+                queue.push.apply(queue, item.subclasses);
+            }
+        }
     });
 
     var MethodsBrik = depends(["manipulation", "organize", "stInit", "dnu", "root", "selectorConversion", "classes"], function (brikz, st) {
@@ -617,8 +620,8 @@ define(['require', './brikz.umd', './compatibility'], function (require, Brikz)
             // chain).
 
             if (initialized()) {
-                st.allSubclasses(klass).forEach(function (subclass) {
-                    initMethodInClass(subclass, method);
+                st.traverseClassTree(klass, function (subclass) {
+                    if (subclass !== klass) initMethodInClass(subclass, method);
                 });
             }
         }