Sha256: 266920fd8008fdf6d3d9a917def6dcf75a959a1b0e43358d95de1498a69a95a1

Contents?: true

Size: 1.68 KB

Versions: 50

Compression:

Stored size: 1.68 KB

Contents

require 'jbuilder/jbuilder'

dependency_tracker = false

begin
  require 'action_view'
  require 'action_view/dependency_tracker'
  dependency_tracker = ::ActionView::DependencyTracker
rescue LoadError
  begin
    require 'cache_digests'
    dependency_tracker = ::CacheDigests::DependencyTracker
  rescue LoadError
  end
end

if dependency_tracker
  class Jbuilder
    module DependencyTrackerMethods
      # Matches:
      #   json.partial! "messages/message"
      #   json.partial!('messages/message')
      #
      DIRECT_RENDERS = /
        \w+\.partial!     # json.partial!
        \(?\s*            # optional parenthesis
        (['"])([^'"]+)\1  # quoted value
      /x

      # Matches:
      #   json.partial! partial: "comments/comment"
      #   json.comments @post.comments, partial: "comments/comment", as: :comment
      #   json.array! @posts, partial: "posts/post", as: :post
      #   = render partial: "account"
      #
      INDIRECT_RENDERS = /
        (?::partial\s*=>|partial:)  # partial: or :partial =>
        \s*                         # optional whitespace
        (['"])([^'"]+)\1            # quoted value
      /x

      def dependencies
        direct_dependencies + indirect_dependencies + explicit_dependencies
      end

      private

      def direct_dependencies
        source.scan(DIRECT_RENDERS).map(&:second)
      end

      def indirect_dependencies
        source.scan(INDIRECT_RENDERS).map(&:second)
      end
    end
  end

  ::Jbuilder::DependencyTracker = Class.new(dependency_tracker::ERBTracker)
  ::Jbuilder::DependencyTracker.send :include, ::Jbuilder::DependencyTrackerMethods
  dependency_tracker.register_tracker :jbuilder, ::Jbuilder::DependencyTracker
end

Version data entries

50 entries across 50 versions & 5 rubygems

Version Path
jbuilder-2.11.5 lib/jbuilder/dependency_tracker.rb
jbuilder-2.11.4 lib/jbuilder/dependency_tracker.rb
jbuilder-2.11.3 lib/jbuilder/dependency_tracker.rb
jbuilder-2.11.2 lib/jbuilder/dependency_tracker.rb
jbuilder-2.11.1 lib/jbuilder/dependency_tracker.rb
jbuilder-2.11.0 lib/jbuilder/dependency_tracker.rb
jbuilder-2.10.2 lib/jbuilder/dependency_tracker.rb
jbuilder-2.10.1 lib/jbuilder/dependency_tracker.rb
jbuilder-2.10.0 lib/jbuilder/dependency_tracker.rb
chatops-rpc-0.0.2 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/jbuilder-2.9.1/lib/jbuilder/dependency_tracker.rb
chatops-rpc-0.0.1 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/jbuilder-2.9.1/lib/jbuilder/dependency_tracker.rb
jbuilder-2.9.1 lib/jbuilder/dependency_tracker.rb
jbuilder-2.9.0 lib/jbuilder/dependency_tracker.rb
jbuilder-2.8.0 lib/jbuilder/dependency_tracker.rb
jbuilder-2.7.0 lib/jbuilder/dependency_tracker.rb
jbuilder-2.6.4 lib/jbuilder/dependency_tracker.rb
jbuilder-2.6.3 lib/jbuilder/dependency_tracker.rb
jbuilder-2.6.2 lib/jbuilder/dependency_tracker.rb
jbuilder-2.6.1 lib/jbuilder/dependency_tracker.rb
jbuilder-2.6.0 lib/jbuilder/dependency_tracker.rb