Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
aa90e8ea
Commit
aa90e8ea
authored
Dec 13, 2017
by
Filipa Lacerda
Committed by
Phil Hughes
Dec 13, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Export old code into es6 modules
parent
bcb14a0d
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
688 additions
and
706 deletions
+688
-706
app/assets/javascripts/dispatcher.js
app/assets/javascripts/dispatcher.js
+4
-3
app/assets/javascripts/main.js
app/assets/javascripts/main.js
+0
-5
app/assets/javascripts/merge_conflicts/merge_conflicts_bundle.js
...ets/javascripts/merge_conflicts/merge_conflicts_bundle.js
+2
-1
app/assets/javascripts/merge_request_tabs.js
app/assets/javascripts/merge_request_tabs.js
+2
-1
app/assets/javascripts/project_find_file.js
app/assets/javascripts/project_find_file.js
+146
-152
app/assets/javascripts/render_gfm.js
app/assets/javascripts/render_gfm.js
+2
-2
app/assets/javascripts/repo/components/repo_preview.vue
app/assets/javascripts/repo/components/repo_preview.vue
+2
-1
app/assets/javascripts/search.js
app/assets/javascripts/search.js
+101
-106
app/assets/javascripts/search_autocomplete.js
app/assets/javascripts/search_autocomplete.js
+383
-386
app/assets/javascripts/single_file_diff.js
app/assets/javascripts/single_file_diff.js
+2
-1
app/assets/javascripts/syntax_highlight.js
app/assets/javascripts/syntax_highlight.js
+6
-8
spec/javascripts/search_autocomplete_spec.js
spec/javascripts/search_autocomplete_spec.js
+2
-2
spec/javascripts/syntax_highlight_spec.js
spec/javascripts/syntax_highlight_spec.js
+36
-38
No files found.
app/assets/javascripts/dispatcher.js
View file @
aa90e8ea
...
@@ -15,7 +15,7 @@ import GroupLabelSubscription from './group_label_subscription';
...
@@ -15,7 +15,7 @@ import GroupLabelSubscription from './group_label_subscription';
import
BuildArtifacts
from
'
./build_artifacts
'
;
import
BuildArtifacts
from
'
./build_artifacts
'
;
import
CILintEditor
from
'
./ci_lint_editor
'
;
import
CILintEditor
from
'
./ci_lint_editor
'
;
import
groupsSelect
from
'
./groups_select
'
;
import
groupsSelect
from
'
./groups_select
'
;
/* global Search */
import
Search
from
'
./search
'
;
/* global Admin */
/* global Admin */
import
NamespaceSelect
from
'
./namespace_select
'
;
import
NamespaceSelect
from
'
./namespace_select
'
;
import
NewCommitForm
from
'
./new_commit_form
'
;
import
NewCommitForm
from
'
./new_commit_form
'
;
...
@@ -24,7 +24,7 @@ import projectAvatar from './project_avatar';
...
@@ -24,7 +24,7 @@ import projectAvatar from './project_avatar';
/* global MergeRequest */
/* global MergeRequest */
import
Compare
from
'
./compare
'
;
import
Compare
from
'
./compare
'
;
import
initCompareAutocomplete
from
'
./compare_autocomplete
'
;
import
initCompareAutocomplete
from
'
./compare_autocomplete
'
;
/* global ProjectFindFile */
import
ProjectFindFile
from
'
./project_find_file
'
;
import
ProjectNew
from
'
./project_new
'
;
import
ProjectNew
from
'
./project_new
'
;
import
projectImport
from
'
./project_import
'
;
import
projectImport
from
'
./project_import
'
;
import
Labels
from
'
./labels
'
;
import
Labels
from
'
./labels
'
;
...
@@ -91,6 +91,7 @@ import DueDateSelectors from './due_date_select';
...
@@ -91,6 +91,7 @@ import DueDateSelectors from './due_date_select';
import
Diff
from
'
./diff
'
;
import
Diff
from
'
./diff
'
;
import
ProjectLabelSubscription
from
'
./project_label_subscription
'
;
import
ProjectLabelSubscription
from
'
./project_label_subscription
'
;
import
ProjectVariables
from
'
./project_variables
'
;
import
ProjectVariables
from
'
./project_variables
'
;
import
SearchAutocomplete
from
'
./search_autocomplete
'
;
(
function
()
{
(
function
()
{
var
Dispatcher
;
var
Dispatcher
;
...
@@ -683,7 +684,7 @@ import ProjectVariables from './project_variables';
...
@@ -683,7 +684,7 @@ import ProjectVariables from './project_variables';
Dispatcher
.
prototype
.
initSearch
=
function
()
{
Dispatcher
.
prototype
.
initSearch
=
function
()
{
// Only when search form is present
// Only when search form is present
if
(
$
(
'
.search
'
).
length
)
{
if
(
$
(
'
.search
'
).
length
)
{
return
new
gl
.
SearchAutocomplete
();
return
new
SearchAutocomplete
();
}
}
};
};
...
...
app/assets/javascripts/main.js
View file @
aa90e8ea
...
@@ -60,15 +60,10 @@ import './notifications_dropdown';
...
@@ -60,15 +60,10 @@ import './notifications_dropdown';
import
'
./notifications_form
'
;
import
'
./notifications_form
'
;
import
'
./pager
'
;
import
'
./pager
'
;
import
'
./preview_markdown
'
;
import
'
./preview_markdown
'
;
import
'
./project_find_file
'
;
import
'
./project_import
'
;
import
'
./project_import
'
;
import
'
./projects_dropdown
'
;
import
'
./projects_dropdown
'
;
import
'
./projects_list
'
;
import
'
./syntax_highlight
'
;
import
'
./render_gfm
'
;
import
'
./render_gfm
'
;
import
'
./right_sidebar
'
;
import
'
./right_sidebar
'
;
import
'
./search
'
;
import
'
./search_autocomplete
'
;
import
initBreadcrumbs
from
'
./breadcrumb
'
;
import
initBreadcrumbs
from
'
./breadcrumb
'
;
import
'
./dispatcher
'
;
import
'
./dispatcher
'
;
...
...
app/assets/javascripts/merge_conflicts/merge_conflicts_bundle.js
View file @
aa90e8ea
...
@@ -10,6 +10,7 @@ import './mixins/line_conflict_actions';
...
@@ -10,6 +10,7 @@ import './mixins/line_conflict_actions';
import
'
./components/diff_file_editor
'
;
import
'
./components/diff_file_editor
'
;
import
'
./components/inline_conflict_lines
'
;
import
'
./components/inline_conflict_lines
'
;
import
'
./components/parallel_conflict_lines
'
;
import
'
./components/parallel_conflict_lines
'
;
import
syntaxHighlight
from
'
../syntax_highlight
'
;
$
(()
=>
{
$
(()
=>
{
const
INTERACTIVE_RESOLVE_MODE
=
'
interactive
'
;
const
INTERACTIVE_RESOLVE_MODE
=
'
interactive
'
;
...
@@ -53,7 +54,7 @@ $(() => {
...
@@ -53,7 +54,7 @@ $(() => {
mergeConflictsStore
.
setLoadingState
(
false
);
mergeConflictsStore
.
setLoadingState
(
false
);
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
$
(
'
.js-syntax-highlight
'
).
syntaxHighlight
(
);
syntaxHighlight
(
$
(
'
.js-syntax-highlight
'
)
);
});
});
});
});
},
},
...
...
app/assets/javascripts/merge_request_tabs.js
View file @
aa90e8ea
...
@@ -14,6 +14,7 @@ import {
...
@@ -14,6 +14,7 @@ import {
import
{
getLocationHash
}
from
'
./lib/utils/url_utility
'
;
import
{
getLocationHash
}
from
'
./lib/utils/url_utility
'
;
import
initDiscussionTab
from
'
./image_diff/init_discussion_tab
'
;
import
initDiscussionTab
from
'
./image_diff/init_discussion_tab
'
;
import
Diff
from
'
./diff
'
;
import
Diff
from
'
./diff
'
;
import
syntaxHighlight
from
'
./syntax_highlight
'
;
/* eslint-disable max-len */
/* eslint-disable max-len */
// MergeRequestTabs
// MergeRequestTabs
...
@@ -295,7 +296,7 @@ import Diff from './diff';
...
@@ -295,7 +296,7 @@ import Diff from './diff';
}
}
gl
.
utils
.
localTimeAgo
(
$
(
'
.js-timeago
'
,
'
div#diffs
'
));
gl
.
utils
.
localTimeAgo
(
$
(
'
.js-timeago
'
,
'
div#diffs
'
));
$
(
'
#diffs .js-syntax-highlight
'
).
syntaxHighlight
(
);
syntaxHighlight
(
$
(
'
#diffs .js-syntax-highlight
'
)
);
if
(
this
.
diffViewType
()
===
'
parallel
'
&&
this
.
isDiffAction
(
this
.
currentAction
))
{
if
(
this
.
diffViewType
()
===
'
parallel
'
&&
this
.
isDiffAction
(
this
.
currentAction
))
{
this
.
expandViewContainer
();
this
.
expandViewContainer
();
...
...
app/assets/javascripts/project_find_file.js
View file @
aa90e8ea
This diff is collapsed.
Click to expand it.
app/assets/javascripts/render_gfm.js
View file @
aa90e8ea
import
renderMath
from
'
./render_math
'
;
import
renderMath
from
'
./render_math
'
;
import
renderMermaid
from
'
./render_mermaid
'
;
import
renderMermaid
from
'
./render_mermaid
'
;
import
syntaxHighlight
from
'
./syntax_highlight
'
;
// Render Gitlab flavoured Markdown
// Render Gitlab flavoured Markdown
//
//
// Delegates to syntax highlight and render math & mermaid diagrams.
// Delegates to syntax highlight and render math & mermaid diagrams.
//
//
$
.
fn
.
renderGFM
=
function
renderGFM
()
{
$
.
fn
.
renderGFM
=
function
renderGFM
()
{
this
.
find
(
'
.js-syntax-highlight
'
).
syntaxHighlight
(
);
syntaxHighlight
(
this
.
find
(
'
.js-syntax-highlight
'
)
);
renderMath
(
this
.
find
(
'
.js-render-math
'
));
renderMath
(
this
.
find
(
'
.js-render-math
'
));
renderMermaid
(
this
.
find
(
'
.js-render-mermaid
'
));
renderMermaid
(
this
.
find
(
'
.js-render-mermaid
'
));
return
this
;
return
this
;
...
...
app/assets/javascripts/repo/components/repo_preview.vue
View file @
aa90e8ea
<
script
>
<
script
>
/* global LineHighlighter */
/* global LineHighlighter */
import
{
mapGetters
}
from
'
vuex
'
;
import
{
mapGetters
}
from
'
vuex
'
;
import
syntaxHighlight
from
'
../../syntax_highlight
'
;
export
default
{
export
default
{
computed
:
{
computed
:
{
...
@@ -13,7 +14,7 @@ export default {
...
@@ -13,7 +14,7 @@ export default {
},
},
methods
:
{
methods
:
{
highlightFile
()
{
highlightFile
()
{
$
(
this
.
$el
).
find
(
'
.file-content
'
).
syntaxHighlight
(
);
syntaxHighlight
(
$
(
this
.
$el
).
find
(
'
.file-content
'
)
);
},
},
},
},
mounted
()
{
mounted
()
{
...
...
app/assets/javascripts/search.js
View file @
aa90e8ea
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, one-var, one-var-declaration-per-line, object-shorthand, prefer-arrow-callback, comma-dangle, prefer-template, quotes, no-else-return, max-len */
import
Flash
from
'
./flash
'
;
import
Flash
from
'
./flash
'
;
import
Api
from
'
./api
'
;
import
Api
from
'
./api
'
;
(
function
()
{
export
default
class
Search
{
this
.
Search
=
(
function
()
{
constructor
()
{
function
Search
()
{
const
$groupDropdown
=
$
(
'
.js-search-group-dropdown
'
);
var
$groupDropdown
,
$projectDropdown
;
const
$projectDropdown
=
$
(
'
.js-search-project-dropdown
'
);
$groupDropdown
=
$
(
'
.js-search-group-dropdown
'
);
$projectDropdown
=
$
(
'
.js-search-project-dropdown
'
);
this
.
searchInput
=
'
.js-search-input
'
;
this
.
groupId
=
$groupDropdown
.
data
(
'
group-id
'
);
this
.
searchClear
=
'
.js-search-clear
'
;
this
.
eventListeners
();
$groupDropdown
.
glDropdown
({
this
.
groupId
=
$groupDropdown
.
data
(
'
group-id
'
);
selectable
:
true
,
this
.
eventListeners
();
filterable
:
true
,
fieldName
:
'
group_id
'
,
$groupDropdown
.
glDropdown
({
search
:
{
selectable
:
true
,
fields
:
[
'
full_name
'
]
filterable
:
true
,
},
fieldName
:
'
group_id
'
,
data
:
function
(
term
,
callback
)
{
search
:
{
return
Api
.
groups
(
term
,
{},
function
(
data
)
{
fields
:
[
'
full_name
'
],
},
data
(
term
,
callback
)
{
return
Api
.
groups
(
term
,
{},
(
data
)
=>
{
data
.
unshift
({
full_name
:
'
Any
'
,
});
data
.
splice
(
1
,
0
,
'
divider
'
);
return
callback
(
data
);
});
},
id
(
obj
)
{
return
obj
.
id
;
},
text
(
obj
)
{
return
obj
.
full_name
;
},
toggleLabel
(
obj
)
{
return
`
${(
$groupDropdown
.
data
(
'
default-label
'
))}
${
obj
.
full_name
}
`
;
},
clicked
:
()
=>
Search
.
submitSearch
(),
});
$projectDropdown
.
glDropdown
({
selectable
:
true
,
filterable
:
true
,
fieldName
:
'
project_id
'
,
search
:
{
fields
:
[
'
name
'
],
},
data
:
(
term
,
callback
)
=>
{
this
.
getProjectsData
(
term
)
.
then
((
data
)
=>
{
data
.
unshift
({
data
.
unshift
({
full_name
:
'
Any
'
name_with_namespace
:
'
Any
'
,
});
});
data
.
splice
(
1
,
0
,
'
divider
'
);
data
.
splice
(
1
,
0
,
'
divider
'
);
return
callback
(
data
);
});
},
id
:
function
(
obj
)
{
return
obj
.
id
;
},
text
:
function
(
obj
)
{
return
obj
.
full_name
;
},
toggleLabel
:
function
(
obj
)
{
return
(
$groupDropdown
.
data
(
'
default-label
'
))
+
"
"
+
obj
.
full_name
;
},
clicked
:
(
function
(
_this
)
{
return
function
()
{
return
_this
.
submitSearch
();
};
})(
this
)
});
$projectDropdown
.
glDropdown
({
selectable
:
true
,
filterable
:
true
,
fieldName
:
'
project_id
'
,
search
:
{
fields
:
[
'
name
'
]
},
data
:
(
term
,
callback
)
=>
{
this
.
getProjectsData
(
term
)
.
then
((
data
)
=>
{
data
.
unshift
({
name_with_namespace
:
'
Any
'
});
data
.
splice
(
1
,
0
,
'
divider
'
);
return
data
;
return
data
;
})
})
.
then
(
data
=>
callback
(
data
))
.
then
(
data
=>
callback
(
data
))
.
catch
(()
=>
new
Flash
(
'
Error fetching projects
'
));
.
catch
(()
=>
new
Flash
(
'
Error fetching projects
'
));
},
},
id
:
function
(
obj
)
{
id
(
obj
)
{
return
obj
.
id
;
return
obj
.
id
;
},
},
text
:
function
(
obj
)
{
text
(
obj
)
{
return
obj
.
name_with_namespace
;
return
obj
.
name_with_namespace
;
},
},
toggleLabel
:
function
(
obj
)
{
toggleLabel
(
obj
)
{
return
(
$projectDropdown
.
data
(
'
default-label
'
))
+
"
"
+
obj
.
name_with_namespace
;
return
`
${(
$projectDropdown
.
data
(
'
default-label
'
))}
${
obj
.
name_with_namespace
}
`
;
},
},
clicked
:
(
function
(
_this
)
{
clicked
:
()
=>
Search
.
submitSearch
(),
return
function
()
{
});
return
_this
.
submitSearch
();
}
};
})(
this
)
});
}
Search
.
prototype
.
eventListeners
=
function
()
{
eventListeners
()
{
$
(
document
).
off
(
'
keyup
'
,
'
.js-search-input
'
).
on
(
'
keyup
'
,
'
.js-search-input
'
,
this
.
searchKeyUp
);
$
(
document
)
return
$
(
document
).
off
(
'
click
'
,
'
.js-search-clear
'
).
on
(
'
click
'
,
'
.js-search-clear
'
,
this
.
clearSearchField
);
.
off
(
'
keyup
'
,
this
.
searchInput
)
};
.
on
(
'
keyup
'
,
this
.
searchInput
,
this
.
searchKeyUp
);
$
(
document
)
.
off
(
'
click
'
,
this
.
searchClear
)
.
on
(
'
click
'
,
this
.
searchClear
,
this
.
clearSearchField
.
bind
(
this
));
}
Search
.
prototype
.
submitSearch
=
function
()
{
static
submitSearch
()
{
return
$
(
'
.js-search-form
'
).
submit
();
return
$
(
'
.js-search-form
'
).
submit
();
};
}
Search
.
prototype
.
searchKeyUp
=
function
()
{
searchKeyUp
()
{
var
$input
;
const
$input
=
$
(
this
);
$input
=
$
(
this
);
if
(
$input
.
val
()
===
''
)
{
if
(
$input
.
val
()
===
''
)
{
$
(
'
.js-search-clear
'
).
addClass
(
'
hidden
'
);
return
$
(
'
.js-search-clear
'
).
addClass
(
'
hidden
'
);
}
else
{
}
else
{
$
(
'
.js-search-clear
'
).
removeClass
(
'
hidden
'
);
return
$
(
'
.js-search-clear
'
).
removeClass
(
'
hidden
'
);
}
}
}
};
Search
.
prototype
.
clearSearchField
=
function
()
{
return
$
(
'
.js-search-input
'
).
val
(
''
).
trigger
(
'
keyup
'
).
focus
();
};
Search
.
prototype
.
getProjectsData
=
function
(
term
)
{
clearSearchField
()
{
return
new
Promise
((
resolve
)
=>
{
return
$
(
this
.
searchInput
).
val
(
''
).
trigger
(
'
keyup
'
).
focus
();
if
(
this
.
groupId
)
{
}
Api
.
groupProjects
(
this
.
groupId
,
term
,
resolve
);
}
else
{
Api
.
projects
(
term
,
{
order_by
:
'
id
'
,
},
resolve
);
}
});
};
return
Search
;
getProjectsData
(
term
)
{
})();
return
new
Promise
((
resolve
)
=>
{
}).
call
(
window
);
if
(
this
.
groupId
)
{
Api
.
groupProjects
(
this
.
groupId
,
term
,
resolve
);
}
else
{
Api
.
projects
(
term
,
{
order_by
:
'
id
'
,
},
resolve
);
}
});
}
}
app/assets/javascripts/search_autocomplete.js
View file @
aa90e8ea
This diff is collapsed.
Click to expand it.
app/assets/javascripts/single_file_diff.js
View file @
aa90e8ea
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
import
FilesCommentButton
from
'
./files_comment_button
'
;
import
FilesCommentButton
from
'
./files_comment_button
'
;
import
imageDiffHelper
from
'
./image_diff/helpers/index
'
;
import
imageDiffHelper
from
'
./image_diff/helpers/index
'
;
import
syntaxHighlight
from
'
./syntax_highlight
'
;
const
WRAPPER
=
'
<div class="diff-content"></div>
'
;
const
WRAPPER
=
'
<div class="diff-content"></div>
'
;
const
LOADING_HTML
=
'
<i class="fa fa-spinner fa-spin"></i>
'
;
const
LOADING_HTML
=
'
<i class="fa fa-spinner fa-spin"></i>
'
;
...
@@ -64,7 +65,7 @@ export default class SingleFileDiff {
...
@@ -64,7 +65,7 @@ export default class SingleFileDiff {
_this
.
loadingContent
.
hide
();
_this
.
loadingContent
.
hide
();
if
(
data
.
html
)
{
if
(
data
.
html
)
{
_this
.
content
=
$
(
data
.
html
);
_this
.
content
=
$
(
data
.
html
);
_this
.
content
.
syntaxHighlight
(
);
syntaxHighlight
(
_this
.
content
);
}
else
{
}
else
{
_this
.
hasError
=
true
;
_this
.
hasError
=
true
;
_this
.
content
=
$
(
ERROR_HTML
);
_this
.
content
=
$
(
ERROR_HTML
);
...
...
app/assets/javascripts/syntax_highlight.js
View file @
aa90e8ea
...
@@ -10,17 +10,15 @@
...
@@ -10,17 +10,15 @@
// <div class="js-syntax-highlight"></div>
// <div class="js-syntax-highlight"></div>
//
//
$
.
fn
.
syntaxHighlight
=
function
()
{
export
default
function
syntaxHighlight
(
el
)
{
var
$children
;
if
(
$
(
el
).
hasClass
(
'
js-syntax-highlight
'
))
{
if
(
$
(
this
).
hasClass
(
'
js-syntax-highlight
'
))
{
// Given the element itself, apply highlighting
// Given the element itself, apply highlighting
return
$
(
this
).
addClass
(
gon
.
user_color_scheme
);
return
$
(
el
).
addClass
(
gon
.
user_color_scheme
);
}
else
{
}
else
{
// Given a parent element, recurse to any of its applicable children
// Given a parent element, recurse to any of its applicable children
$children
=
$
(
this
).
find
(
'
.js-syntax-highlight
'
);
const
$children
=
$
(
el
).
find
(
'
.js-syntax-highlight
'
);
if
(
$children
.
length
)
{
if
(
$children
.
length
)
{
return
$children
.
syntaxHighlight
(
);
return
syntaxHighlight
(
$children
);
}
}
}
}
}
;
}
spec/javascripts/search_autocomplete_spec.js
View file @
aa90e8ea
/* eslint-disable space-before-function-paren, max-len, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, consistent-return, no-param-reassign, default-case, no-return-assign, comma-dangle, object-shorthand, prefer-template, quotes, new-parens, vars-on-top, new-cap, max-len */
/* eslint-disable space-before-function-paren, max-len, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, consistent-return, no-param-reassign, default-case, no-return-assign, comma-dangle, object-shorthand, prefer-template, quotes, new-parens, vars-on-top, new-cap, max-len */
import
'
~/gl_dropdown
'
;
import
'
~/gl_dropdown
'
;
import
'
~/search_autocomplete
'
;
import
SearchAutocomplete
from
'
~/search_autocomplete
'
;
import
'
~/lib/utils/common_utils
'
;
import
'
~/lib/utils/common_utils
'
;
import
*
as
urlUtils
from
'
~/lib/utils/url_utility
'
;
import
*
as
urlUtils
from
'
~/lib/utils/url_utility
'
;
...
@@ -128,7 +128,7 @@ import * as urlUtils from '~/lib/utils/url_utility';
...
@@ -128,7 +128,7 @@ import * as urlUtils from '~/lib/utils/url_utility';
window
.
gon
.
current_user_id
=
userId
;
window
.
gon
.
current_user_id
=
userId
;
window
.
gon
.
current_username
=
userName
;
window
.
gon
.
current_username
=
userName
;
return
widget
=
new
gl
.
SearchAutocomplete
;
return
widget
=
new
SearchAutocomplete
()
;
});
});
afterEach
(
function
()
{
afterEach
(
function
()
{
...
...
spec/javascripts/syntax_highlight_spec.js
View file @
aa90e8ea
/* eslint-disable space-before-function-paren, no-var, no-return-assign, quotes */
/* eslint-disable space-before-function-paren, no-var, no-return-assign, quotes */
import
'
~/syntax_highlight
'
;
import
syntaxHighlight
from
'
~/syntax_highlight
'
;
(
function
()
{
describe
(
'
Syntax Highlighter
'
,
function
()
{
describe
(
'
Syntax Highlighter
'
,
function
()
{
var
stubUserColorScheme
;
var
stubUserColorScheme
;
stubUserColorScheme
=
function
(
value
)
{
stubUserColorScheme
=
function
(
value
)
{
if
(
window
.
gon
==
null
)
{
if
(
window
.
gon
==
null
)
{
window
.
gon
=
{};
window
.
gon
=
{};
}
}
return
window
.
gon
.
user_color_scheme
=
value
;
return
window
.
gon
.
user_color_scheme
=
value
;
};
};
describe
(
'
on a js-syntax-highlight element
'
,
function
()
{
describe
(
'
on a js-syntax-highlight element
'
,
function
()
{
beforeEach
(
function
()
{
beforeEach
(
function
()
{
return
setFixtures
(
'
<div class="js-syntax-highlight"></div>
'
);
return
setFixtures
(
'
<div class="js-syntax-highlight"></div>
'
);
});
return
it
(
'
applies syntax highlighting
'
,
function
()
{
stubUserColorScheme
(
'
monokai
'
);
$
(
'
.js-syntax-highlight
'
).
syntaxHighlight
();
return
expect
(
$
(
'
.js-syntax-highlight
'
)).
toHaveClass
(
'
monokai
'
);
});
});
});
return
describe
(
'
on a parent element
'
,
function
()
{
return
it
(
'
applies syntax highlighting
'
,
function
()
{
beforeEach
(
function
()
{
stubUserColorScheme
(
'
monokai
'
);
return
setFixtures
(
"
<div class=
\"
parent
\"
>
\n
<div class=
\"
js-syntax-highlight
\"
></div>
\n
<div class=
\"
foo
\"
></div>
\n
<div class=
\"
js-syntax-highlight
\"
></div>
\n
</div>
"
);
syntaxHighlight
(
$
(
'
.js-syntax-highlight
'
));
});
return
expect
(
$
(
'
.js-syntax-highlight
'
)).
toHaveClass
(
'
monokai
'
);
it
(
'
applies highlighting to all applicable children
'
,
function
()
{
stubUserColorScheme
(
'
monokai
'
);
$
(
'
.parent
'
).
syntaxHighlight
();
expect
(
$
(
'
.parent, .foo
'
)).
not
.
toHaveClass
(
'
monokai
'
);
return
expect
(
$
(
'
.monokai
'
).
length
).
toBe
(
2
);
});
return
it
(
'
prevents an infinite loop when no matches exist
'
,
function
()
{
var
highlight
;
setFixtures
(
'
<div></div>
'
);
highlight
=
function
()
{
return
$
(
'
div
'
).
syntaxHighlight
();
};
return
expect
(
highlight
).
not
.
toThrow
();
});
});
});
});
});
}).
call
(
window
);
return
describe
(
'
on a parent element
'
,
function
()
{
beforeEach
(
function
()
{
return
setFixtures
(
"
<div class=
\"
parent
\"
>
\n
<div class=
\"
js-syntax-highlight
\"
></div>
\n
<div class=
\"
foo
\"
></div>
\n
<div class=
\"
js-syntax-highlight
\"
></div>
\n
</div>
"
);
});
it
(
'
applies highlighting to all applicable children
'
,
function
()
{
stubUserColorScheme
(
'
monokai
'
);
syntaxHighlight
(
$
(
'
.parent
'
));
expect
(
$
(
'
.parent, .foo
'
)).
not
.
toHaveClass
(
'
monokai
'
);
return
expect
(
$
(
'
.monokai
'
).
length
).
toBe
(
2
);
});
return
it
(
'
prevents an infinite loop when no matches exist
'
,
function
()
{
var
highlight
;
setFixtures
(
'
<div></div>
'
);
highlight
=
function
()
{
return
syntaxHighlight
(
$
(
'
div
'
));
};
return
expect
(
highlight
).
not
.
toThrow
();
});
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment