dolt 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/bin/dolt +8 -0
- data/lib/dolt/version.rb +1 -1
- data/lib/dolt/view/breadcrumb.rb +1 -1
- data/lib/dolt/view/syntax_highlight.rb +3 -3
- data/lib/dolt/view/tree.rb +8 -8
- data/test/dolt/git/repository_test.rb +2 -2
- data/test/dolt/templates/tree_test.rb +13 -0
- data/test/dolt/view/syntax_highlight_test.rb +1 -1
- data/test/dolt/view/tree_test.rb +24 -2
- data/views/tree.erb +7 -4
- metadata +4 -4
data/Gemfile.lock
CHANGED
data/bin/dolt
CHANGED
@@ -66,6 +66,14 @@ view.helper(Dolt::View::BinaryBlobEmbedder)
|
|
66
66
|
# Render supported formats as markup, syntax highlight the rest
|
67
67
|
view.helper(Dolt::View::SmartBlobRenderer)
|
68
68
|
|
69
|
+
module MaxDepth
|
70
|
+
def maxdepth
|
71
|
+
3
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
view.helper(MaxDepth)
|
76
|
+
|
69
77
|
Sinatra::Base.set(:public_folder, File.join(base, "vendor/ui"))
|
70
78
|
server = create_app(ARGV[0], view)
|
71
79
|
Thin::Server.start("0.0.0.0", 3000, server)
|
data/lib/dolt/version.rb
CHANGED
data/lib/dolt/view/breadcrumb.rb
CHANGED
@@ -26,7 +26,7 @@ module Dolt
|
|
26
26
|
url = repo_url(repository, "/tree/#{ref}")
|
27
27
|
<<-HTML
|
28
28
|
<ul class="breadcrumb">
|
29
|
-
<li><a href="#{url}:"><i class="icon icon-file"></i
|
29
|
+
<li><a href="#{url}:"><i class="icon icon-file"></i> /</a></li>
|
30
30
|
#{dir_html}<li class="active">#{filename}</li>
|
31
31
|
</ul>
|
32
32
|
HTML
|
@@ -45,6 +45,8 @@ module Dolt
|
|
45
45
|
|
46
46
|
def self.lexer(suffix, code = nil)
|
47
47
|
return @@lexer_aliases[suffix] if @@lexer_aliases[suffix]
|
48
|
+
lexer = Pygments::Lexer.find_by_extname(".#{suffix}")
|
49
|
+
return lexer.aliases.first || lexer.name if lexer
|
48
50
|
shebang_language(shebang(code)) || suffix
|
49
51
|
end
|
50
52
|
|
@@ -79,12 +81,10 @@ module Dolt
|
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
82
|
-
Dolt::View::SyntaxHighlight.add_lexer_alias("
|
84
|
+
Dolt::View::SyntaxHighlight.add_lexer_alias("txt", "text")
|
83
85
|
Dolt::View::SyntaxHighlight.add_lexer_alias("ru", "rb")
|
84
86
|
Dolt::View::SyntaxHighlight.add_lexer_alias("Rakefile", "rb")
|
85
87
|
Dolt::View::SyntaxHighlight.add_lexer_alias("Gemfile", "rb")
|
86
88
|
Dolt::View::SyntaxHighlight.add_lexer_alias("Gemfile.lock", "yaml")
|
87
|
-
Dolt::View::SyntaxHighlight.add_lexer_alias("gemspec", "rb")
|
88
|
-
Dolt::View::SyntaxHighlight.add_lexer_alias("htm", "html")
|
89
89
|
|
90
90
|
Dolt::View::SyntaxHighlight.add_lexer_shebang(/\bruby\b/, "rb")
|
data/lib/dolt/view/tree.rb
CHANGED
@@ -28,8 +28,7 @@ module Dolt
|
|
28
28
|
sort(tree.entries.select { |e| e[:type] == :blob })
|
29
29
|
end
|
30
30
|
|
31
|
-
def tree_context(repo, ref,
|
32
|
-
levels = accumulate_path(partition_path(path, maxdepth))
|
31
|
+
def tree_context(repo, ref, levels)
|
33
32
|
return "" if levels.length == 1 && levels[0].length == 1
|
34
33
|
total = 4 + levels.length
|
35
34
|
colspan = total
|
@@ -56,7 +55,7 @@ module Dolt
|
|
56
55
|
file = path == "" ? "/" : File.basename(path)
|
57
56
|
url = object_url(repo, ref, dir, { :type => :tree, :name => file })
|
58
57
|
html = "<a href=\"#{url}\">#{extra} #{file}</a>"
|
59
|
-
extra = ""
|
58
|
+
extra = extra == "" || extra == "/" ? "/" : ""
|
60
59
|
html
|
61
60
|
end).join(" ")
|
62
61
|
end
|
@@ -67,7 +66,8 @@ module Dolt
|
|
67
66
|
return result if path == ""
|
68
67
|
parts = path.split("/")
|
69
68
|
maxdepth ||= parts.length
|
70
|
-
|
69
|
+
fill_first = [parts.length, [1, parts.length - maxdepth + 1].max].min
|
70
|
+
fill_first.times { result[0] << parts.shift }
|
71
71
|
result << [parts.shift] while parts.length > 0
|
72
72
|
result
|
73
73
|
end
|
@@ -83,12 +83,12 @@ module Dolt
|
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
-
def tree_table_padding_width(
|
87
|
-
|
86
|
+
def tree_table_padding_width(partitioned)
|
87
|
+
partitioned.length == 1 ? partitioned[0].length - 1 : partitioned.length
|
88
88
|
end
|
89
89
|
|
90
|
-
def tree_table_padding_td(
|
91
|
-
"<td></td>" * tree_table_padding_width(
|
90
|
+
def tree_table_padding_td(partitioned)
|
91
|
+
"<td></td>" * tree_table_padding_width(partitioned)
|
92
92
|
end
|
93
93
|
|
94
94
|
private
|
@@ -50,12 +50,12 @@ describe Dolt::Git::Repository do
|
|
50
50
|
|
51
51
|
describe "#tree" do
|
52
52
|
it "includes submodule data for trees" do
|
53
|
-
@repository.tree("
|
53
|
+
@repository.tree("3dc532f", "vendor").callback do |tree|
|
54
54
|
assert_equal({
|
55
55
|
:type => :submodule,
|
56
56
|
:filemode => 57344,
|
57
57
|
:name => "ui",
|
58
|
-
:oid => "
|
58
|
+
:oid => "d167e3e1c17a27e4cf459dd380670801b0659659",
|
59
59
|
:url => "git://gitorious.org/gitorious/ui3.git"
|
60
60
|
}, tree.entries.first)
|
61
61
|
done!
|
@@ -49,4 +49,17 @@ describe "tree template" do
|
|
49
49
|
assert_match /<table class="table table-striped gts-tree-explorer"/, markup
|
50
50
|
assert_match /data-gts-tree-history="/, markup
|
51
51
|
end
|
52
|
+
|
53
|
+
it "renders context for non-empty tree" do
|
54
|
+
tree = Tree.new([
|
55
|
+
{ :type => :tree, :name => "lib" },
|
56
|
+
{ :type => :submodule, :name => "ui", :url => "git://git.git" },
|
57
|
+
{ :type => :blob, :name => "file.txt" }
|
58
|
+
])
|
59
|
+
|
60
|
+
markup = render("app/models", tree)
|
61
|
+
|
62
|
+
assert_match /icon-folder-open/, markup
|
63
|
+
assert_match /tree\/master:app"/, markup
|
64
|
+
end
|
52
65
|
end
|
data/test/dolt/view/tree_test.rb
CHANGED
@@ -120,6 +120,11 @@ describe Dolt::View::Tree do
|
|
120
120
|
parts = partition_path("lib/dolt/very/deep", 3)
|
121
121
|
assert_equal [["", "lib", "dolt"], ["very"], ["deep"]], parts
|
122
122
|
end
|
123
|
+
|
124
|
+
it "partitions short path with maxdepth" do
|
125
|
+
parts = partition_path("lib", 3)
|
126
|
+
assert_equal [["", "lib"]], parts
|
127
|
+
end
|
123
128
|
end
|
124
129
|
|
125
130
|
describe "#accumulate_path" do
|
@@ -130,8 +135,8 @@ describe Dolt::View::Tree do
|
|
130
135
|
end
|
131
136
|
|
132
137
|
describe "#tree_context" do
|
133
|
-
def context(path)
|
134
|
-
tree_context("gitorious", "master", path)
|
138
|
+
def context(path, maxdepth = nil)
|
139
|
+
tree_context("gitorious", "master", accumulate_path(partition_path(path, maxdepth)))
|
135
140
|
end
|
136
141
|
|
137
142
|
it "renders root as empty string" do
|
@@ -173,5 +178,22 @@ describe Dolt::View::Tree do
|
|
173
178
|
tr = select(context("lib/dolt"), "tr")[1]
|
174
179
|
assert_equal 2, select(tr, "td").length
|
175
180
|
end
|
181
|
+
|
182
|
+
it "renders condensed first entry with slashes" do
|
183
|
+
links = select(context("src/phorkie/Database/Adapter", 3), "a")
|
184
|
+
|
185
|
+
assert_equal "<a href=\"/tree/master:\"><i class=\"icon icon-folder-open\"></i> /</a>", links.first
|
186
|
+
assert_equal "<a href=\"/tree/master:src\"> src</a>", links[1]
|
187
|
+
assert_equal "<a href=\"/tree/master:src/phorkie\">/ phorkie</a>", links[2]
|
188
|
+
end
|
189
|
+
|
190
|
+
it "renders long condensed first entry with slashes" do
|
191
|
+
links = select(context("src/phorkie/Database/Adapter/Elasticsearch", 3), "a")
|
192
|
+
|
193
|
+
assert_equal "<a href=\"/tree/master:\"><i class=\"icon icon-folder-open\"></i> /</a>", links.first
|
194
|
+
assert_equal "<a href=\"/tree/master:src\"> src</a>", links[1]
|
195
|
+
assert_equal "<a href=\"/tree/master:src/phorkie\">/ phorkie</a>", links[2]
|
196
|
+
assert_equal "<a href=\"/tree/master:src/phorkie/Database\">/ Database</a>", links[3]
|
197
|
+
end
|
176
198
|
end
|
177
199
|
end
|
data/views/tree.erb
CHANGED
@@ -17,21 +17,24 @@
|
|
17
17
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
18
18
|
#++
|
19
19
|
%>
|
20
|
-
<%
|
20
|
+
<%
|
21
|
+
@title = "#{path == '' ? './' : path} in #{ref}"
|
22
|
+
levels = accumulate_path(partition_path(path, respond_to?(:maxdepth) ? maxdepth : nil))
|
23
|
+
%>
|
21
24
|
<div id="gts-ref-selector-ph"></div>
|
22
25
|
<table class="table table-striped gts-tree-explorer" data-gts-tree-history="<%= tree_history_url(repository, ref, path) %>">
|
23
26
|
<thead>
|
24
27
|
<tr>
|
25
|
-
<th colspan="<%= tree_table_padding_width(
|
28
|
+
<th colspan="<%= tree_table_padding_width(levels) + 1 %>">File</th>
|
26
29
|
<th class="gts-col-changed">Changed</th>
|
27
30
|
<th class="gts-col-commit" colspan="2">Last commit</th>
|
28
31
|
</tr>
|
29
32
|
</thead>
|
30
33
|
<tbody>
|
31
|
-
<%= tree_context(repository, ref,
|
34
|
+
<%= tree_context(repository, ref, levels) %>
|
32
35
|
<% tree_entries(tree).each do |object| %>
|
33
36
|
<tr>
|
34
|
-
<%= tree_table_padding_td(
|
37
|
+
<%= tree_table_padding_td(levels) %>
|
35
38
|
<td class="gts-name">
|
36
39
|
<a href="<%= object_url(repository, ref, path, object) %>">
|
37
40
|
<i class="icon <%= object_icon_class(object) %>"></i>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dolt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christian Johansen
|