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
Jérome Perrin
gitlab-ce
Commits
4e0c2f00
Commit
4e0c2f00
authored
Jul 04, 2012
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1026 from gitlabhq/inline_diff
Inline diff
parents
264ee0c5
e3fed8aa
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
83 additions
and
2 deletions
+83
-2
app/assets/stylesheets/sections/commits.scss
app/assets/stylesheets/sections/commits.scss
+11
-0
app/helpers/commits_helper.rb
app/helpers/commits_helper.rb
+4
-2
lib/gitlab/inline_diff.rb
lib/gitlab/inline_diff.rb
+68
-0
No files found.
app/assets/stylesheets/sections/commits.scss
View file @
4e0c2f00
...
@@ -82,6 +82,17 @@
...
@@ -82,6 +82,17 @@
color
:
#333
;
color
:
#333
;
font-size
:
12px
;
font-size
:
12px
;
font-family
:
'Menlo'
,
'Liberation Mono'
,
'Consolas'
,
'Courier New'
,
'andale mono'
,
'lucida console'
,
monospace
;
font-family
:
'Menlo'
,
'Liberation Mono'
,
'Consolas'
,
'Courier New'
,
'andale mono'
,
'lucida console'
,
monospace
;
.old
{
span
.idiff
{
background-color
:
#FAA
;
}
}
.new
{
span
.idiff
{
background-color
:
#AFA
;
}
}
}
}
.diff_file_content_image
{
.diff_file_content_image
{
background
:
#eee
;
background
:
#eee
;
...
...
app/helpers/commits_helper.rb
View file @
4e0c2f00
...
@@ -35,8 +35,8 @@ module CommitsHelper
...
@@ -35,8 +35,8 @@ module CommitsHelper
line_old
=
1
line_old
=
1
line_new
=
1
line_new
=
1
type
=
nil
type
=
nil
lines_arr
=
diff_arr
lines_arr
=
::
Gitlab
::
InlineDiff
.
processing
diff_arr
lines_arr
.
each
do
|
line
|
lines_arr
.
each
do
|
line
|
next
if
line
.
match
(
/^\-\-\- \/dev\/null/
)
next
if
line
.
match
(
/^\-\-\- \/dev\/null/
)
next
if
line
.
match
(
/^\+\+\+ \/dev\/null/
)
next
if
line
.
match
(
/^\+\+\+ \/dev\/null/
)
...
@@ -44,6 +44,7 @@ module CommitsHelper
...
@@ -44,6 +44,7 @@ module CommitsHelper
next
if
line
.
match
(
/^\+\+\+ b/
)
next
if
line
.
match
(
/^\+\+\+ b/
)
full_line
=
html_escape
(
line
.
gsub
(
/\n/
,
''
))
full_line
=
html_escape
(
line
.
gsub
(
/\n/
,
''
))
full_line
=
::
Gitlab
::
InlineDiff
.
replace_markers
full_line
if
line
.
match
(
/^@@ -/
)
if
line
.
match
(
/^@@ -/
)
type
=
"match"
type
=
"match"
...
@@ -81,4 +82,5 @@ module CommitsHelper
...
@@ -81,4 +82,5 @@ module CommitsHelper
nil
nil
end
end
end
end
end
end
lib/gitlab/inline_diff.rb
0 → 100644
View file @
4e0c2f00
module
Gitlab
class
InlineDiff
class
<<
self
START
=
"#!idiff-start!#"
FINISH
=
"#!idiff-finish!#"
def
processing
diff_arr
indexes
=
_indexes_of_changed_lines
diff_arr
indexes
.
each
do
|
index
|
first_line
=
diff_arr
[
index
+
1
]
second_line
=
diff_arr
[
index
+
2
]
max_length
=
[
first_line
.
size
,
second_line
.
size
].
max
first_the_same_symbols
=
0
(
0
..
max_length
+
1
).
each
do
|
i
|
first_the_same_symbols
=
i
-
1
if
first_line
[
i
]
!=
second_line
[
i
]
&&
i
>
0
break
end
end
first_token
=
first_line
[
0
..
first_the_same_symbols
][
1
..-
1
]
diff_arr
[
index
+
1
].
sub!
(
first_token
,
first_token
+
START
)
diff_arr
[
index
+
2
].
sub!
(
first_token
,
first_token
+
START
)
last_the_same_symbols
=
0
(
1
..
max_length
+
1
).
each
do
|
i
|
last_the_same_symbols
=
-
i
if
first_line
[
-
i
]
!=
second_line
[
-
i
]
break
end
end
last_the_same_symbols
+=
1
last_token
=
first_line
[
last_the_same_symbols
..-
1
]
diff_arr
[
index
+
1
].
sub!
(
/
#{
Regexp
.
escape
(
last_token
)
}
$/
,
FINISH
+
last_token
)
diff_arr
[
index
+
2
].
sub!
(
/
#{
Regexp
.
escape
(
last_token
)
}
$/
,
FINISH
+
last_token
)
end
diff_arr
end
def
_indexes_of_changed_lines
diff_arr
chain_of_first_symbols
=
""
diff_arr
.
each_with_index
do
|
line
,
i
|
chain_of_first_symbols
+=
line
[
0
]
end
chain_of_first_symbols
.
gsub!
(
/[^\-\+]/
,
"#"
)
offset
=
0
indexes
=
[]
while
index
=
chain_of_first_symbols
.
index
(
"#-+#"
,
offset
)
indexes
<<
index
offset
=
index
+
1
end
indexes
end
def
replace_markers
line
line
.
gsub!
(
START
,
"<span class='idiff'>"
)
line
.
gsub!
(
FINISH
,
"</span>"
)
line
end
end
end
end
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