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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
a0955892
Commit
a0955892
authored
Jul 02, 2012
by
Valeriy Sizov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
InlineDiff: base implementation
parent
caf5b9e5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
2 deletions
+64
-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
+53
-2
No files found.
app/assets/stylesheets/sections/commits.scss
View file @
a0955892
...
...
@@ -82,6 +82,17 @@
color
:
#333
;
font-size
:
12px
;
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
{
background
:
#eee
;
...
...
app/helpers/commits_helper.rb
View file @
a0955892
...
...
@@ -35,8 +35,9 @@ module CommitsHelper
line_old
=
1
line_new
=
1
type
=
nil
lines_arr
=
diff_arr
lines_arr
=
inline_diff
diff_arr
#lines_arr = diff_arr
lines_arr
.
each
do
|
line
|
next
if
line
.
match
(
/^\-\-\- \/dev\/null/
)
next
if
line
.
match
(
/^\+\+\+ \/dev\/null/
)
...
...
@@ -45,6 +46,9 @@ module CommitsHelper
full_line
=
html_escape
(
line
.
gsub
(
/\n/
,
''
))
full_line
.
gsub!
(
"#!idiff-start!#"
,
"<span class='idiff'>"
)
full_line
.
gsub!
(
"#!idiff-finish!#"
,
"</span>"
)
if
line
.
match
(
/^@@ -/
)
type
=
"match"
...
...
@@ -81,4 +85,51 @@ module CommitsHelper
nil
end
end
def
inline_diff
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
.
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
+
"#!idiff-start!#"
)
diff_arr
[
index
+
2
].
sub!
(
first_token
,
first_token
+
"#!idiff-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!
(
/
#{
last_token
}
$/
,
"#!idiff-finish!#"
+
last_token
)
diff_arr
[
index
+
2
].
sub!
(
/
#{
last_token
}
$/
,
"#!idiff-finish!#"
+
last_token
)
end
diff_arr
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