Sha256: 5f09f4419ea00e7e3166922b5fd88e9f5cc3e36db20fa37967a75858b4ad1857
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
module Rooler class LiquidInspector def initialize(klass) @klass = klass.to_s.downcase end def tree add_liquid_methods_as_nodes(::Tree::TreeNode.new(@klass)) end private # Recursive method. Infers a class name using the name of the provided TreeNode. Creates nodes any liquid methods belonging to that class. If any of those nodes # are also associations, it calls itself on that node. def add_liquid_methods_as_nodes(tree) klass = tree.name.to_s.classify.constantize add_nodes_to_tree(tree, liquid_methods(klass)) (associations(klass) & liquid_methods(klass)).each do |node| add_liquid_methods_as_nodes(tree[node]) end return tree end def add_nodes_to_tree(tree, nodes) nodes.each {|node| tree << ::Tree::TreeNode.new(node)} end def associations(klass) klass.reflect_on_all_associations.map(&:name) end def liquid_methods(klass) klass::LiquidDropClass.public_instance_methods - Liquid::Drop.public_instance_methods end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rooler-0.0.3 | app/models/rooler/liquid_inspector.rb |