From 8884505350c8594e663c5af6feb8eb1b06f3a0c8 Mon Sep 17 00:00:00 2001 From: koreamic Date: Sun, 13 Dec 2015 02:27:48 +0900 Subject: [PATCH] Add new feature to find file Using the fuzzy filter, develop "file finder" feature. - feedback(http://feedback.gitlab.com/forums/176466-general/suggestions/4987909-add-file-finder-fuzzy-input-in-files-tab-to-ju ) - fuzzy filter(https://github.com/jeancroy/fuzzaldrin-plus) - shortcuts(when "t" was hitted at tree view, go to 'file find' page and 'esc' is to go back) - depends on gitlab_git 7.2.22 --- CHANGELOG | 1 + Gemfile | 2 +- Gemfile.lock | 2 +- app/assets/javascripts/application.js.coffee | 1 + app/assets/javascripts/dispatcher.js.coffee | 4 +- .../javascripts/project_find_file.js.coffee | 125 ++++++++++++++++++ .../javascripts/shortcuts_find_file.js.coffee | 19 +++ app/assets/javascripts/shortcuts_tree.coffee | 4 + app/assets/stylesheets/pages/tree.scss | 8 ++ .../projects/find_file_controller.rb | 26 ++++ app/controllers/projects/refs_controller.rb | 2 + app/models/repository.rb | 5 + app/views/help/_shortcuts.html.haml | 26 ++++ app/views/layouts/nav/_project.html.haml | 3 +- app/views/projects/_find_file_link.html.haml | 3 + app/views/projects/find_file/show.html.haml | 27 ++++ app/views/projects/tree/show.html.haml | 8 +- config/routes.rb | 18 +++ doc/workflow/shortcuts.png | Bin 78736 -> 48782 bytes features/project/find_file.feature | 42 ++++++ features/steps/project/project_find_file.rb | 73 ++++++++++ features/steps/shared/paths.rb | 4 + .../projects/find_file_controller_spec.rb | 66 +++++++++ spec/routing/project_routing_spec.rb | 12 ++ .../assets/javascripts/fuzzaldrin-plus.min.js | 1 + 25 files changed, 473 insertions(+), 9 deletions(-) create mode 100644 app/assets/javascripts/project_find_file.js.coffee create mode 100644 app/assets/javascripts/shortcuts_find_file.js.coffee create mode 100644 app/assets/javascripts/shortcuts_tree.coffee create mode 100644 app/controllers/projects/find_file_controller.rb create mode 100644 app/views/projects/_find_file_link.html.haml create mode 100644 app/views/projects/find_file/show.html.haml create mode 100644 features/project/find_file.feature create mode 100644 features/steps/project/project_find_file.rb create mode 100644 spec/controllers/projects/find_file_controller_spec.rb create mode 100644 vendor/assets/javascripts/fuzzaldrin-plus.min.js diff --git a/CHANGELOG b/CHANGELOG index e7f1d2b67da..22fb91baaf0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -106,6 +106,7 @@ v 8.3.0 - Fix online editor should not remove newlines at the end of the file - Expose Git's version in the admin area - Show "New Merge Request" buttons on canonical repos when you have a fork (Josh Frye) + - Add file finder feature in tree view v 8.2.3 - Fix application settings cache not expiring after changes (Stan Hu) diff --git a/Gemfile b/Gemfile index 6145745b6f3..6b0bc241494 100644 --- a/Gemfile +++ b/Gemfile @@ -49,7 +49,7 @@ gem "browser", '~> 1.0.0' # Extracting information from a git repository # Provide access to Gitlab::Git library -gem "gitlab_git", '~> 7.2.20' +gem "gitlab_git", '~> 7.2.22' # LDAP Auth # GitLab fork with several improvements to original library. For full list of changes diff --git a/Gemfile.lock b/Gemfile.lock index 2b42f325503..a1168ed3b7a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -887,7 +887,7 @@ DEPENDENCIES github-markup (~> 1.3.1) gitlab-flowdock-git-hook (~> 1.0.1) gitlab_emoji (~> 0.2.0) - gitlab_git (~> 7.2.20) + gitlab_git (~> 7.2.22) gitlab_meta (= 7.0) gitlab_omniauth-ldap (~> 1.2.1) gollum-lib (~> 4.1.0) diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee index b9b095e004a..c095e5ae2b1 100644 --- a/app/assets/javascripts/application.js.coffee +++ b/app/assets/javascripts/application.js.coffee @@ -40,6 +40,7 @@ #= require shortcuts_network #= require jquery.nicescroll.min #= require_tree . +#= require fuzzaldrin-plus.min window.slugify = (text) -> text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase() diff --git a/app/assets/javascripts/dispatcher.js.coffee b/app/assets/javascripts/dispatcher.js.coffee index 69e061ce6e9..58d6b9d4060 100644 --- a/app/assets/javascripts/dispatcher.js.coffee +++ b/app/assets/javascripts/dispatcher.js.coffee @@ -87,7 +87,9 @@ class Dispatcher new GroupAvatar() when 'projects:tree:show' new TreeView() - shortcut_handler = new ShortcutsNavigation() + shortcut_handler = new ShortcutsTree() + when 'projects:find_file:show' + shortcut_handler = true when 'projects:blob:show' new LineHighlighter() shortcut_handler = new ShortcutsNavigation() diff --git a/app/assets/javascripts/project_find_file.js.coffee b/app/assets/javascripts/project_find_file.js.coffee new file mode 100644 index 00000000000..0dd32352c34 --- /dev/null +++ b/app/assets/javascripts/project_find_file.js.coffee @@ -0,0 +1,125 @@ +class @ProjectFindFile + constructor: (@element, @options)-> + @filePaths = {} + @inputElement = @element.find(".file-finder-input") + + # init event + @initEvent() + + # focus text input box + @inputElement.focus() + + # load file list + @load(@options.url) + + # init event + initEvent: -> + @inputElement.off "keyup" + @inputElement.on "keyup", (event) => + target = $(event.target) + value = target.val() + oldValue = target.data("oldValue") ? "" + + if value != oldValue + target.data("oldValue", value) + @findFile() + @element.find("tr.tree-item").eq(0).addClass("selected").focus() + + @element.find(".tree-content-holder .tree-table").on "click", (event) -> + if (event.target.nodeName != "A") + path = @element.find(".tree-item-file-name a", this).attr("href") + location.href = path if path + + # find file + findFile: -> + searchText = @inputElement.val() + result = if searchText.length > 0 then fuzzaldrinPlus.filter(@filePaths, searchText) else @filePaths + @renderList result, searchText + + # files pathes load + load: (url) -> + $.ajax + url: url + method: "get" + dataType: "json" + success: (data) => + @element.find(".loading").hide() + @filePaths = data + @findFile() + @element.find(".files-slider tr.tree-item").eq(0).addClass("selected").focus() + + # render result + renderList: (filePaths, searchText) -> + @element.find(".tree-table > tbody").empty() + + for filePath, i in filePaths + break if i == 20 + + if searchText + matches = fuzzaldrinPlus.match(filePath, searchText) + + blobItemUrl = "#{@options.blobUrlTemplate}/#{filePath}" + + html = @makeHtml filePath, matches, blobItemUrl + @element.find(".tree-table > tbody").append(html) + + # highlight text(awefwbwgtc -> awefwbwgtc ) + highlighter = (element, text, matches) -> + lastIndex = 0 + highlightText = "" + matchedChars = [] + + for matchIndex in matches + unmatched = text.substring(lastIndex, matchIndex) + + if unmatched + element.append(matchedChars.join("").bold()) if matchedChars.length + matchedChars = [] + element.append(document.createTextNode(unmatched)) + + matchedChars.push(text[matchIndex]) + lastIndex = matchIndex + 1 + + element.append(matchedChars.join("").bold()) if matchedChars.length + element.append(document.createTextNode(text.substring(lastIndex))) + + # make tbody row html + makeHtml: (filePath, matches, blobItemUrl) -> + $tr = $("") + if matches + $tr.find("a").replaceWith(highlighter($tr.find("a"), filePath, matches).attr("href", blobItemUrl)) + else + $tr.find("a").attr("href", blobItemUrl).text(filePath) + + return $tr + + selectRow: (type) -> + rows = @element.find(".files-slider tr.tree-item") + selectedRow = @element.find(".files-slider tr.tree-item.selected") + + if rows && rows.length > 0 + if selectedRow && selectedRow.length > 0 + if type == "UP" + next = selectedRow.prev() + else if type == "DOWN" + next = selectedRow.next() + + if next.length > 0 + selectedRow.removeClass "selected" + selectedRow = next + else + selectedRow = rows.eq(0) + selectedRow.addClass("selected").focus() + + selectRowUp: => + @selectRow "UP" + + selectRowDown: => + @selectRow "DOWN" + + goToTree: => + location.href = @options.treeUrl + + goToBlob: => + path = @element.find(".tree-item.selected .tree-item-file-name a").attr("href") + location.href = path if path diff --git a/app/assets/javascripts/shortcuts_find_file.js.coffee b/app/assets/javascripts/shortcuts_find_file.js.coffee new file mode 100644 index 00000000000..311e80bae19 --- /dev/null +++ b/app/assets/javascripts/shortcuts_find_file.js.coffee @@ -0,0 +1,19 @@ +#= require shortcuts_navigation + +class @ShortcutsFindFile extends ShortcutsNavigation + constructor: (@projectFindFile) -> + super() + _oldStopCallback = Mousetrap.stopCallback + # override to fire shortcuts action when focus in textbox + Mousetrap.stopCallback = (event, element, combo) => + if element == @projectFindFile.inputElement[0] and (combo == 'up' or combo == 'down' or combo == 'esc' or combo == 'enter') + # when press up/down key in textbox, cusor prevent to move to home/end + event.preventDefault() + return false + + return _oldStopCallback(event, element, combo) + + Mousetrap.bind('up', @projectFindFile.selectRowUp) + Mousetrap.bind('down', @projectFindFile.selectRowDown) + Mousetrap.bind('esc', @projectFindFile.goToTree) + Mousetrap.bind('enter', @projectFindFile.goToBlob) diff --git a/app/assets/javascripts/shortcuts_tree.coffee b/app/assets/javascripts/shortcuts_tree.coffee new file mode 100644 index 00000000000..ba0839c9fc0 --- /dev/null +++ b/app/assets/javascripts/shortcuts_tree.coffee @@ -0,0 +1,4 @@ +class @ShortcutsTree extends ShortcutsNavigation + constructor: -> + super() + Mousetrap.bind('t', -> ShortcutsTree.findAndFollowLink('.shortcuts-find-file')) diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss index d4ab6967ccd..97505edeabf 100644 --- a/app/assets/stylesheets/pages/tree.scss +++ b/app/assets/stylesheets/pages/tree.scss @@ -1,5 +1,13 @@ .tree-holder { + .file-finder { + width: 50%; + .file-finder-input { + width: 95%; + display: inline-block; + } + } + .tree-table { margin-bottom: 0; diff --git a/app/controllers/projects/find_file_controller.rb b/app/controllers/projects/find_file_controller.rb new file mode 100644 index 00000000000..54a0c447aee --- /dev/null +++ b/app/controllers/projects/find_file_controller.rb @@ -0,0 +1,26 @@ +# Controller for viewing a repository's file structure +class Projects::FindFileController < Projects::ApplicationController + include ExtractsPath + include ActionView::Helpers::SanitizeHelper + include TreeHelper + + before_action :require_non_empty_project + before_action :assign_ref_vars + before_action :authorize_download_code! + + def show + return render_404 unless @repository.commit(@ref) + + respond_to do |format| + format.html + end + end + + def list + file_paths = @repo.ls_files(@ref) + + respond_to do |format| + format.json { render json: file_paths } + end + end +end diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb index c4e18c17077..a8f091819ca 100644 --- a/app/controllers/projects/refs_controller.rb +++ b/app/controllers/projects/refs_controller.rb @@ -20,6 +20,8 @@ class Projects::RefsController < Projects::ApplicationController namespace_project_network_path(@project.namespace, @project, @id, @options) when "graphs" namespace_project_graph_path(@project.namespace, @project, @id) + when "find_file" + namespace_project_find_file_path(@project.namespace, @project, @id) when "graphs_commits" commits_namespace_project_graph_path(@project.namespace, @project, @id) else diff --git a/app/models/repository.rb b/app/models/repository.rb index 6ecd2d2f27e..9deb08d93b8 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -681,6 +681,11 @@ class Repository end end + def ls_files(ref) + actual_ref = ref || root_ref + raw_repository.ls_files(actual_ref) + end + private def cache diff --git a/app/views/help/_shortcuts.html.haml b/app/views/help/_shortcuts.html.haml index e8e331dd109..9ee6f07b26b 100644 --- a/app/views/help/_shortcuts.html.haml +++ b/app/views/help/_shortcuts.html.haml @@ -40,6 +40,32 @@ %td.shortcut .key enter %td Open Selection + %tr + %td.shortcut + .key t + %td Go to finding file + %tbody + %tr + %th + %th Finding Project File + %tr + %td.shortcut + .key + %i.fa.fa-arrow-up + %td Move selection up + %tr + %td.shortcut + .key + %i.fa.fa-arrow-down + %td Move selection down + %tr + %td.shortcut + .key enter + %td Open Selection + %tr + %td.shortcut + .key esc + %td Go back .col-lg-4 %table.shortcut-mappings diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml index d3eaf0f3209..270ccfd387f 100644 --- a/app/views/layouts/nav/_project.html.haml +++ b/app/views/layouts/nav/_project.html.haml @@ -25,7 +25,7 @@ %span Activity - if project_nav_tab? :files - = nav_link(controller: %w(tree blob blame edit_tree new_tree)) do + = nav_link(controller: %w(tree blob blame edit_tree new_tree find_file)) do = link_to project_files_path(@project), title: 'Files', class: 'shortcuts-tree' do = icon('files-o fw') %span @@ -117,4 +117,3 @@ %li.hidden = link_to namespace_project_network_path(@project.namespace, @project, current_ref), title: 'Network', class: 'shortcuts-network' do Network - diff --git a/app/views/projects/_find_file_link.html.haml b/app/views/projects/_find_file_link.html.haml new file mode 100644 index 00000000000..08e2fc48be7 --- /dev/null +++ b/app/views/projects/_find_file_link.html.haml @@ -0,0 +1,3 @@ += link_to namespace_project_find_file_path(@project.namespace, @project, @ref), class: 'btn btn-grouped shortcuts-find-file', rel: 'nofollow' do + = icon('search') + %span Find File diff --git a/app/views/projects/find_file/show.html.haml b/app/views/projects/find_file/show.html.haml new file mode 100644 index 00000000000..2930209fb56 --- /dev/null +++ b/app/views/projects/find_file/show.html.haml @@ -0,0 +1,27 @@ +- page_title "Find File", @ref +- header_title project_title(@project, "Files", project_files_path(@project)) + +.file-finder-holder.tree-holder.clearfix + .gray-content-block.top-block + .tree-ref-holder + = render 'shared/ref_switcher', destination: 'find_file', path: @path + %ul.breadcrumb.repo-breadcrumb + %li + = link_to namespace_project_tree_path(@project.namespace, @project, @ref) do + = @project.path + %li.file-finder + %input#file_find.form-control.file-finder-input{type: "text", placeholder: 'Find by path'} + + %div.tree-content-holder + .table-holder + %table.table.files-slider{class: "table_#{@hex_path} tree-table table-striped" } + %tbody + = spinner nil, true + +:coffeescript + projectFindFile = new ProjectFindFile($(".file-finder-holder"), { + url: "#{escape_javascript(namespace_project_files_path(@project.namespace, @project, @ref, @options.merge(format: :json)))}" + treeUrl: "#{escape_javascript(namespace_project_tree_path(@project.namespace, @project, @ref))}" + blobUrlTemplate: "#{escape_javascript(namespace_project_blob_path(@project.namespace, @project, @id || @commit.id))}" + }) + new ShortcutsFindFile(projectFindFile) diff --git a/app/views/projects/tree/show.html.haml b/app/views/projects/tree/show.html.haml index ec14bd7f65a..c57570afa09 100644 --- a/app/views/projects/tree/show.html.haml +++ b/app/views/projects/tree/show.html.haml @@ -3,12 +3,12 @@ = content_for :meta_tags do - if current_user = auto_discovery_link_tag(:atom, namespace_project_commits_url(@project.namespace, @project, @ref, format: :atom, private_token: current_user.private_token), title: "#{@project.name}:#{@ref} commits") - = render 'projects/last_push' -- if can? current_user, :download_code, @project - .tree-download-holder - = render 'projects/repositories/download_archive', ref: @ref, btn_class: 'btn-group pull-right hidden-xs hidden-sm', split_button: true +.pull-right + = render 'projects/find_file_link' + - if can? current_user, :download_code, @project + = render 'projects/repositories/download_archive', ref: @ref, btn_class: 'hidden-xs hidden-sm btn-grouped', split_button: true #tree-holder.tree-holder.clearfix .gray-content-block.top-block diff --git a/config/routes.rb b/config/routes.rb index 3e7d9f78710..5b69d06eb76 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -440,6 +440,24 @@ Rails.application.routes.draw do ) end + scope do + get( + '/find_file/*id', + to: 'find_file#show', + constraints: { id: /.+/, format: /html/ }, + as: :find_file + ) + end + + scope do + get( + '/files/*id', + to: 'find_file#list', + constraints: { id: /(?:[^.]|\.(?!json$))+/, format: /json/ }, + as: :files + ) + end + scope do post( '/create_dir/*id', diff --git a/doc/workflow/shortcuts.png b/doc/workflow/shortcuts.png index 68756ed1f98dd474ada0b8da8d98840a25c3a123..e5914aa8e67556518de69841e4c06472a29d4d3e 100644 GIT binary patch literal 48782 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

YlL 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 Dc9TY$ diff --git a/features/project/find_file.feature b/features/project/find_file.feature new file mode 100644 index 00000000000..ae8fa245923 --- /dev/null +++ b/features/project/find_file.feature @@ -0,0 +1,42 @@ +@dashboard +Feature: Project Find File + Background: + Given I sign in as a user + And I own a project + And I visit my project's files page + + @javascript + Scenario: Navigate to find file by shortcut + Given I press "t" + Then I should see "find file" page + + Scenario: Navigate to find file + Given I click Find File button + Then I should see "find file" page + + @javascript + Scenario: I search file + Given I visit project find file page + And I fill in file find with "change" + Then I should not see ".gitignore" in files + And I should not see ".gitmodules" in files + And I should see "CHANGELOG" in files + And I should not see "VERSION" in files + + @javascript + Scenario: I search file that not exist + Given I visit project find file page + And I fill in file find with "asdfghjklqwertyuizxcvbnm" + Then I should not see ".gitignore" in files + And I should not see ".gitmodules" in files + And I should not see "CHANGELOG" in files + And I should not see "VERSION" in files + + @javascript + Scenario: I search file that partially matches + Given I visit project find file page + And I fill in file find with "git" + Then I should see ".gitignore" in files + And I should see ".gitmodules" in files + And I should not see "CHANGELOG" in files + And I should not see "VERSION" in files diff --git a/features/steps/project/project_find_file.rb b/features/steps/project/project_find_file.rb new file mode 100644 index 00000000000..8c1d09d6cc6 --- /dev/null +++ b/features/steps/project/project_find_file.rb @@ -0,0 +1,73 @@ +class Spinach::Features::ProjectFindFile < Spinach::FeatureSteps + include SharedAuthentication + include SharedPaths + include SharedProject + include SharedProjectTab + + step 'I press "t"' do + find('body').native.send_key('t') + end + + step 'I click Find File button' do + click_link 'Find File' + end + + step 'I should see "find file" page' do + ensure_active_main_tab('Files') + expect(page).to have_selector('.file-finder-holder', count: 1) + end + + step 'I fill in Find by path with "git"' do + ensure_active_main_tab('Files') + expect(page).to have_selector('.file-finder-holder', count: 1) + end + + step 'I fill in file find with "git"' do + find_file "git" + end + + step 'I fill in file find with "change"' do + find_file "change" + end + + step 'I fill in file find with "asdfghjklqwertyuizxcvbnm"' do + find_file "asdfghjklqwertyuizxcvbnm" + end + + step 'I should see "VERSION" in files' do + expect(page).to have_content("VERSION") + end + + step 'I should not see "VERSION" in files' do + expect(page).not_to have_content("VERSION") + end + + step 'I should see "CHANGELOG" in files' do + expect(page).to have_content("CHANGELOG") + end + + step 'I should not see "CHANGELOG" in files' do + expect(page).not_to have_content("CHANGELOG") + end + + step 'I should see ".gitmodules" in files' do + expect(page).to have_content(".gitmodules") + end + + step 'I should not see ".gitmodules" in files' do + expect(page).not_to have_content(".gitmodules") + end + + step 'I should see ".gitignore" in files' do + expect(page).to have_content(".gitignore") + end + + step 'I should not see ".gitignore" in files' do + expect(page).not_to have_content(".gitignore") + end + + + def find_file(text) + fill_in 'file_find', with: text + end +end diff --git a/features/steps/shared/paths.rb b/features/steps/shared/paths.rb index b33bd332655..4264c9c6f1a 100644 --- a/features/steps/shared/paths.rb +++ b/features/steps/shared/paths.rb @@ -259,6 +259,10 @@ module SharedPaths visit namespace_project_deploy_keys_path(@project.namespace, @project) end + step 'I visit project find file page' do + visit namespace_project_find_file_path(@project.namespace, @project, root_ref) + end + # ---------------------------------------- # "Shop" Project # ---------------------------------------- diff --git a/spec/controllers/projects/find_file_controller_spec.rb b/spec/controllers/projects/find_file_controller_spec.rb new file mode 100644 index 00000000000..038dfeb8466 --- /dev/null +++ b/spec/controllers/projects/find_file_controller_spec.rb @@ -0,0 +1,66 @@ +require 'spec_helper' + +describe Projects::FindFileController do + let(:project) { create(:project) } + let(:user) { create(:user) } + + before do + sign_in(user) + + project.team << [user, :master] + controller.instance_variable_set(:@project, project) + end + + describe "GET #show" do + # Make sure any errors accessing the tree in our views bubble up to this spec + render_views + + before do + get(:show, + namespace_id: project.namespace.to_param, + project_id: project.to_param, + id: id) + end + + context "valid branch" do + let(:id) { 'master' } + it { is_expected.to respond_with(:success) } + end + + context "invalid branch" do + let(:id) { 'invalid-branch' } + it { is_expected.to respond_with(:not_found) } + end + end + + describe "GET #list" do + def go(format: 'json') + get :list, + namespace_id: project.namespace.to_param, + project_id: project.to_param, + id: id, + format: format + end + + context "valid branch" do + let(:id) { 'master' } + it 'returns an array of file path list' do + go + + json = JSON.parse(response.body) + is_expected.to respond_with(:success) + expect(json).not_to eq(nil) + expect(json.length).to be >= 0 + end + end + + context "invalid branch" do + let(:id) { 'invalid-branch' } + + it 'responds with status 404' do + go + is_expected.to respond_with(:not_found) + end + end + end +end diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb index 82f62a8709c..2a70c190337 100644 --- a/spec/routing/project_routing_spec.rb +++ b/spec/routing/project_routing_spec.rb @@ -434,6 +434,18 @@ describe Projects::TreeController, 'routing' do end end +# project_find_file GET /:namespace_id/:project_id/find_file/*id(.:format) projects/find_file#show {:id=>/.+/, :namespace_id=>/[a-zA-Z.0-9_\-]+/, :project_id=>/[a-zA-Z.0-9_\-]+(?/html/} +# project_files GET /:namespace_id/:project_id/files/*id(.:format) projects/find_file#list {:id=>/(?:[^.]|\.(?!json$))+/, :namespace_id=>/[a-zA-Z.0-9_\-]+/, :project_id=>/[a-zA-Z.0-9_\-]+(?/json/} +describe Projects::FindFileController, 'routing' do + it 'to #show' do + expect(get('/gitlab/gitlabhq/find_file/master')).to route_to('projects/find_file#show', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master') + end + + it 'to #list' do + expect(get('/gitlab/gitlabhq/files/master.json')).to route_to('projects/find_file#list', namespace_id: 'gitlab', project_id: 'gitlabhq', id: 'master', format: 'json') + end +end + describe Projects::BlobController, 'routing' do it 'to #edit' do expect(get('/gitlab/gitlabhq/edit/master/app/models/project.rb')).to( diff --git a/vendor/assets/javascripts/fuzzaldrin-plus.min.js b/vendor/assets/javascripts/fuzzaldrin-plus.min.js new file mode 100644 index 00000000000..3f25c2d8373 --- /dev/null +++ b/vendor/assets/javascripts/fuzzaldrin-plus.min.js @@ -0,0 +1 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0?maxInners:candidates.length;bAllowErrors=!!allowErrors;bKey=key!=null;prepQuery=scorer.prepQuery(query);if(!legacy){for(i=0,len=candidates.length;i0){scoredCandidates.push({candidate:candidate,score:score});if(!--spotLeft){break}}}}else{queryHasSlashes=prepQuery.depth>0;coreQuery=prepQuery.core;for(j=0,len1=candidates.length;j0){scoredCandidates.push({candidate:candidate,score:score})}}}scoredCandidates.sort(sortCandidates);candidates=scoredCandidates.map(pluckCandidates);if(maxResults!=null){candidates=candidates.slice(0,maxResults)}return candidates}}).call(this)},{"./legacy":4,"./scorer":6,"path":7}],2:[function(require,module,exports){(function(){var PathSeparator,filter,legacy_scorer,matcher,prepQueryCache,scorer;scorer=require('./scorer');legacy_scorer=require('./legacy');filter=require('./filter');matcher=require('./matcher');PathSeparator=require('path').sep;prepQueryCache=null;module.exports={filter:function(candidates,query,options){if(!((query!=null?query.length:void 0)&&(candidates!=null?candidates.length:void 0))){return[]}return filter(candidates,query,options)},prepQuery:function(query){return scorer.prepQuery(query)},score:function(string,query,prepQuery,arg){var allowErrors,coreQuery,legacy,queryHasSlashes,ref,score;ref=arg!=null?arg:{},allowErrors=ref.allowErrors,legacy=ref.legacy;if(!((string!=null?string.length:void 0)&&(query!=null?query.length:void 0))){return 0}if(prepQuery==null){prepQuery=prepQueryCache&&prepQueryCache.query===query?prepQueryCache:(prepQueryCache=scorer.prepQuery(query))}if(!legacy){score=scorer.score(string,query,prepQuery,!!allowErrors)}else{queryHasSlashes=prepQuery.depth>0;coreQuery=prepQuery.core;score=legacy_scorer.score(string,coreQuery,queryHasSlashes);if(!queryHasSlashes){score=legacy_scorer.basenameScore(string,coreQuery,score)}}return score},match:function(string,query,prepQuery,arg){var allowErrors,baseMatches,i,matches,query_lw,ref,results,string_lw;allowErrors=(arg!=null?arg:{}).allowErrors;if(!string){return[]}if(!query){return[]}if(string===query){return(function(){results=[];for(var i=0,ref=string.length;0<=ref?iref;0<=ref?i++:i--){results.push(i)}return results}).apply(this)}if(prepQuery==null){prepQuery=prepQueryCache&&prepQueryCache.query===query?prepQueryCache:(prepQueryCache=scorer.prepQuery(query))}if(!(allowErrors||scorer.isMatch(string,prepQuery.core_lw,prepQuery.core_up))){return[]}string_lw=string.toLowerCase();query_lw=prepQuery.query_lw;matches=matcher.match(string,string_lw,prepQuery);if(matches.length===0){return matches}if(string.indexOf(PathSeparator)>-1){baseMatches=matcher.basenameMatch(string,string_lw,prepQuery);matches=matcher.mergeMatches(matches,baseMatches)}return matches}}}).call(this)},{"./filter":1,"./legacy":4,"./matcher":5,"./scorer":6,"path":7}],3:[function(require,module,exports){fuzzaldrinPlus=require('./fuzzaldrin')},{"./fuzzaldrin":2}],4:[function(require,module,exports){(function(){var PathSeparator,queryIsLastPathSegment;PathSeparator=require('path').sep;exports.basenameScore=function(string,query,score){var base,depth,index,lastCharacter,segmentCount,slashCount;index=string.length-1;while(string[index]===PathSeparator){index--}slashCount=0;lastCharacter=index;base=null;while(index>=0){if(string[index]===PathSeparator){slashCount++;if(base==null){base=string.substring(index+1,lastCharacter+1)}}else if(index===0){if(lastCharacterref;stringOffset<=ref?i++:i--){results.push(i)}return results}).apply(this)}queryLength=query.length;stringLength=string.length;indexInQuery=0;indexInString=0;matches=[];while(indexInQuery0){basePos=subject.lastIndexOf(PathSeparator,basePos-1);if(basePos===-1){return[]}}basePos++;end++;return exports.match(subject.slice(basePos,end),subject_lw.slice(basePos,end),prepQuery,basePos)};exports.mergeMatches=function(a,b){var ai,bj,i,j,m,n,out;m=a.length;n=b.length;if(n===0){return a.slice()}if(m===0){return b.slice()}i=-1;j=0;bj=b[j];out=[];while(++i0?csc_diag:scorer.scoreConsecutives(subject,subject_lw,query,query_lw,i,j,start);align=score_diag+scorer.scoreCharacter(i,j,start,acro_score,csc_score)}score_up=score_row[j];csc_diag=csc_row[j];if(score>score_up){move=LEFT}else{score=score_up;move=UP}if(align>score){score=align;move=DIAGONAL}else{csc_score=0}score_row[j]=score;csc_row[j]=csc_score;trace[++pos]=score>0?move:STOP}}i=m-1;j=n-1;pos=i*n+j;backtrack=true;matches=[];while(backtrack&&i>=0&&j>=0){switch(trace[pos]){case UP:i--;pos-=n;break;case LEFT:j--;pos--;break;case DIAGONAL:matches.push(i+offset);j--;i--;pos-=n+1;break;default:backtrack=false}}matches.reverse();return matches}}).call(this)},{"./scorer":6,"path":7}],6:[function(require,module,exports){(function(){var AcronymResult,PathSeparator,Query,basenameScore,coreChars,countDir,doScore,emptyAcronymResult,file_coeff,isMatch,isSeparator,isWordEnd,isWordStart,miss_coeff,opt_char_re,pos_bonus,scoreAcronyms,scoreCharacter,scoreConsecutives,scoreExact,scoreExactMatch,scorePattern,scorePosition,scoreSize,tau_depth,tau_size,truncatedUpperCase,wm;PathSeparator=require('path').sep;wm=150;pos_bonus=20;tau_depth=13;tau_size=85;file_coeff=1.2;miss_coeff=0.75;opt_char_re=/[ _\-:\/\\]/g;exports.coreChars=coreChars=function(query){return query.replace(opt_char_re,'')};exports.score=function(string,query,prepQuery,allowErrors){var score,string_lw;if(prepQuery==null){prepQuery=new Query(query)}if(allowErrors==null){allowErrors=false}if(!(allowErrors||isMatch(string,prepQuery.core_lw,prepQuery.core_up))){return 0}string_lw=string.toLowerCase();score=doScore(string,string_lw,prepQuery);return Math.ceil(basenameScore(string,string_lw,prepQuery,score))};Query=(function(){function Query(query){if(!(query!=null?query.length:void 0)){return null}this.query=query;this.query_lw=query.toLowerCase();this.core=coreChars(query);this.core_lw=this.core.toLowerCase();this.core_up=truncatedUpperCase(this.core);this.depth=countDir(query,query.length)}return Query})();exports.prepQuery=function(query){return new Query(query)};exports.isMatch=isMatch=function(subject,query_lw,query_up){var i,j,m,n,qj_lw,qj_up,si;m=subject.length;n=query_lw.length;if(!m||!n||n>m){return false}i=-1;j=-1;while(++j-1){return scoreExactMatch(subject,subject_lw,query,query_lw,pos,n,m)}score_row=new Array(n);csc_row=new Array(n);sz=scoreSize(n,m);miss_budget=Math.ceil(miss_coeff*n)+5;miss_left=miss_budget;j=-1;while(++j-1){i--}mm=subject_lw.lastIndexOf(query_lw[n-1],m);if(mm>i){m=mm+1}while(++iscore){score=score_up}csc_score=0;if(query_lw[j]===si_lw){start=isWordStart(i,subject,subject_lw);csc_score=csc_diag>0?csc_diag:scoreConsecutives(subject,subject_lw,query,query_lw,i,j,start);align=score_diag+scoreCharacter(i,j,start,acro_score,csc_score);if(align>score){score=align;miss_left=miss_budget}else{if(record_miss&&--miss_left<=0){return score_row[n-1]*sz}record_miss=false}}score_diag=score_up;csc_diag=csc_row[j];csc_row[j]=csc_score;score_row[j]=score}}return score*sz};exports.isWordStart=isWordStart=function(pos,subject,subject_lw){var curr_s,prev_s;if(pos===0){return true}curr_s=subject[pos];prev_s=subject[pos-1];return isSeparator(curr_s)||isSeparator(prev_s)||(curr_s!==subject_lw[pos]&&prev_s===subject_lw[pos-1])};exports.isWordEnd=isWordEnd=function(pos,subject,subject_lw,len){var curr_s,next_s;if(pos===len-1){return true}curr_s=subject[pos];next_s=subject[pos+1];return isSeparator(curr_s)||isSeparator(next_s)||(curr_s===subject_lw[pos]&&next_s!==subject_lw[pos+1])};isSeparator=function(c){return c===' '||c==='.'||c==='-'||c==='_'||c==='/'||c==='\\'};scorePosition=function(pos){var sc;if(poscsc_score?acro_score:csc_score)+10)}return posBonus+wm*csc_score};exports.scoreConsecutives=scoreConsecutives=function(subject,subject_lw,query,query_lw,i,j,start){var k,m,mi,n,nj,sameCase,startPos,sz;m=subject.length;n=query.length;mi=m-i;nj=n-j;k=mi-1){start=isWordStart(pos2,subject,subject_lw);if(start){pos=pos2}}}i=-1;sameCase=0;while(++i1&&n>1)){return emptyAcronymResult}count=0;pos=0;sameCase=0;i=-1;j=-1;while(++j0){basePos=subject.lastIndexOf(PathSeparator,basePos-1);if(basePos===-1){return fullPathScore}}basePos++;end++;basePathScore=doScore(subject.slice(basePos,end),subject_lw.slice(basePos,end),prepQuery);alpha=0.5*tau_depth/(tau_depth+countDir(subject,end+1));return alpha*basePathScore+(1-alpha)*fullPathScore*scoreSize(0,file_coeff*(end-basePos))};exports.countDir=countDir=function(path,end){var count,i;if(end<1){return 0}count=0;i=-1;while(++i=0;i--){var last=parts[i];if(last==='.'){parts.splice(i,1)}else if(last==='..'){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift('..')}}return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath='',resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=(i>=0)?arguments[i]:process.cwd();if(typeof path!=='string'){throw new TypeError('Arguments to path.resolve must be strings');}else if(!path){continue}resolvedPath=path+'/'+resolvedPath;resolvedAbsolute=path.charAt(0)==='/'}resolvedPath=normalizeArray(filter(resolvedPath.split('/'),function(p){return!!p}),!resolvedAbsolute).join('/');return((resolvedAbsolute?'/':'')+resolvedPath)||'.'};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==='/';path=normalizeArray(filter(path.split('/'),function(p){return!!p}),!isAbsolute).join('/');if(!path&&!isAbsolute){path='.'}if(path&&trailingSlash){path+='/'}return(isAbsolute?'/':'')+path};exports.isAbsolute=function(path){return path.charAt(0)==='/'};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=='string'){throw new TypeError('Arguments to path.join must be strings');}return p}).join('/'))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=='')break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split('/'));var toParts=trim(to.split('/'));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){for(var i=1;i