diff options
| author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2016-06-21 18:48:05 +0300 | 
|---|---|---|
| committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2016-06-21 18:48:05 +0300 | 
| commit | 44fe4f63f9ea86253b386561a4d439227c53f50b (patch) | |
| tree | 8888f463194b258815ffbcf5ea8caa751c5774a9 /lib | |
| parent | dcf8304b6c2ac71ef9ffaa57c9cf39159c4af69e (diff) | |
| parent | 179783f1ce0ce16913199a84e65ebea5fb4422ec (diff) | |
| download | gitlab-ce-44fe4f63f9ea86253b386561a4d439227c53f50b.tar.gz | |
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/api/entities.rb | 6 | ||||
| -rw-r--r-- | lib/banzai/filter/relative_link_filter.rb | 51 | 
2 files changed, 15 insertions, 42 deletions
| diff --git a/lib/api/entities.rb b/lib/api/entities.rb index 0ee96d4c67b..5a23a18fe9c 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -445,11 +445,7 @@ module API        expose :created_at, :started_at, :finished_at        expose :user, with: User        expose :artifacts_file, using: BuildArtifactFile, if: -> (build, opts) { build.artifacts? } -      expose :commit, with: RepoCommit do |repo_obj, _options| -        if repo_obj.respond_to?(:commit) -          repo_obj.commit.commit_data -        end -      end +      expose :commit, with: RepoCommit        expose :runner, with: Runner      end diff --git a/lib/banzai/filter/relative_link_filter.rb b/lib/banzai/filter/relative_link_filter.rb index ea21c7b041c..c78da404607 100644 --- a/lib/banzai/filter/relative_link_filter.rb +++ b/lib/banzai/filter/relative_link_filter.rb @@ -14,6 +14,8 @@ module Banzai        def call          return doc unless linkable_files? +        @uri_types = {} +          doc.search('a:not(.gfm)').each do |el|            process_link_attr el.attribute('href')          end @@ -48,7 +50,7 @@ module Banzai          uri.path = [            relative_url_root,            context[:project].path_with_namespace, -          path_type(file_path), +          uri_type(file_path),            ref || context[:project].default_branch,  # if no ref exists, point to the default branch            file_path          ].compact.join('/').squeeze('/').chomp('/') @@ -87,7 +89,7 @@ module Banzai          return path unless request_path          parts = request_path.split('/') -        parts.pop if path_type(request_path) != 'tree' +        parts.pop if uri_type(request_path) != :tree          while path.start_with?('../')            parts.pop @@ -98,45 +100,20 @@ module Banzai        end        def file_exists?(path) -        return false if path.nil? -        repository.blob_at(current_sha, path).present? || -          repository.tree(current_sha, path).entries.any? -      end - -      # Get the type of the given path -      # -      # path - String path to check -      # -      # Examples: -      # -      #   path_type('doc/README.md') # => 'blob' -      #   path_type('doc/logo.png')  # => 'raw' -      #   path_type('doc/api')       # => 'tree' -      # -      # Returns a String -      def path_type(path) -        unescaped_path = Addressable::URI.unescape(path) - -        if tree?(unescaped_path) -          'tree' -        elsif image?(unescaped_path) -          'raw' -        else -          'blob' -        end +        path.present? && !!uri_type(path)        end -      def tree?(path) -        repository.tree(current_sha, path).entries.any? -      end +      def uri_type(path) +        @uri_types[path] ||= begin +          unescaped_path = Addressable::URI.unescape(path) -      def image?(path) -        repository.blob_at(current_sha, path).try(:image?) +          current_commit.uri_type(unescaped_path) +        end        end -      def current_sha -        context[:commit].try(:id) || -          ref ? repository.commit(ref).try(:sha) : repository.head_commit.sha +      def current_commit +        @current_commit ||= context[:commit] || +          ref ? repository.commit(ref) : repository.head_commit        end        def relative_url_root @@ -148,7 +125,7 @@ module Banzai        end        def repository -        context[:project].try(:repository) +        @repository ||= context[:project].try(:repository)        end      end    end | 
