docurium 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +42 -0
- data/Gemfile +4 -2
- data/bin/cm +14 -0
- data/docurium.gemspec +3 -2
- data/lib/docurium/cli.rb +6 -1
- data/lib/docurium/debug.rb +41 -0
- data/lib/docurium/docparser.rb +94 -26
- data/lib/docurium/layout.rb +0 -3
- data/lib/docurium/version.rb +1 -1
- data/lib/docurium.rb +235 -96
- data/site/css/style.css +17 -11
- data/site/index.html +123 -114
- data/site/js/backbone.js +1 -1
- data/site/js/docurium.js +151 -157
- data/site/js/underscore.js +5 -5
- data/test/docurium_test.rb +52 -15
- data/test/fixtures/git2/cherrypick.h +2 -0
- data/test/fixtures/git2/common.h +1 -6
- data/test/fixtures/git2/repository.h +39 -0
- data/test/fixtures/git2/types.h +2 -0
- data/test/parser_test.rb +8 -4
- metadata +26 -12
- data/.travis.yml +0 -14
data/test/docurium_test.rb
CHANGED
@@ -9,15 +9,6 @@ class DocuriumTest < Minitest::Test
|
|
9
9
|
|
10
10
|
@repo = Rugged::Repository.init_at(@dir, :bare)
|
11
11
|
|
12
|
-
config = <<END
|
13
|
-
{
|
14
|
-
"name": "libgit2",
|
15
|
-
"github": "libgit2/libgit2",
|
16
|
-
"prefix": "git_",
|
17
|
-
"branch": "gh-pages"
|
18
|
-
}
|
19
|
-
END
|
20
|
-
|
21
12
|
# Create an index as we would have read from the user's repository
|
22
13
|
index = Rugged::Index.new
|
23
14
|
headers = File.dirname(__FILE__) + '/fixtures/git2/'
|
@@ -29,7 +20,7 @@ END
|
|
29
20
|
end
|
30
21
|
|
31
22
|
@path = File.dirname(__FILE__) + '/fixtures/git2/api.docurium'
|
32
|
-
@doc = Docurium.new(@path, @repo)
|
23
|
+
@doc = Docurium.new(@path, {}, @repo)
|
33
24
|
@data = @doc.parse_headers(index, 'HEAD')
|
34
25
|
end
|
35
26
|
|
@@ -37,6 +28,13 @@ END
|
|
37
28
|
FileUtils.remove_entry(@dir)
|
38
29
|
end
|
39
30
|
|
31
|
+
def test_can_parse
|
32
|
+
refute_nil @data
|
33
|
+
assert_equal [:files, :functions, :callbacks, :globals, :types, :prefix, :groups], @data.keys
|
34
|
+
files = %w(blob.h callback.h cherrypick.h commit.h common.h errors.h index.h object.h odb.h odb_backend.h oid.h refs.h repository.h revwalk.h signature.h tag.h tree.h types.h)
|
35
|
+
assert_equal files, @data[:files].map {|d| d[:file] }
|
36
|
+
end
|
37
|
+
|
40
38
|
def test_can_parse_headers
|
41
39
|
keys = @data.keys.map { |k| k.to_s }.sort
|
42
40
|
assert_equal ['callbacks', 'files', 'functions', 'globals', 'groups', 'prefix', 'types'], keys
|
@@ -61,7 +59,7 @@ END
|
|
61
59
|
end
|
62
60
|
|
63
61
|
def test_can_find_type_usage
|
64
|
-
oid = @data[:types].
|
62
|
+
oid = @data[:types].find {|a| a[0] == 'git_oid' }
|
65
63
|
oid_returns = [
|
66
64
|
"git_commit_id",
|
67
65
|
"git_commit_parent_oid",
|
@@ -161,11 +159,50 @@ END
|
|
161
159
|
assert_equal 'int (*)(const char *, void *)', func[:args][2][:type]
|
162
160
|
assert_equal 'Function which will be called for every listed ref', func[:args][2][:comment]
|
163
161
|
expect_comment =<<-EOF
|
164
|
-
|
165
|
-
|
166
|
-
|
162
|
+
<p>The listed references may be filtered by type, or using
|
163
|
+
a bitwise OR of several types. Use the magic value
|
164
|
+
<code>GIT_REF_LISTALL</code> to obtain all references, including
|
165
|
+
packed ones.</p>
|
166
|
+
|
167
|
+
<p>The <code>callback</code> function will be called for each of the references
|
168
|
+
in the repository, and will receive the name of the reference and
|
169
|
+
the <code>payload</code> value passed to this method.</p>
|
167
170
|
EOF
|
168
|
-
assert_equal expect_comment.split("\n")
|
171
|
+
assert_equal expect_comment.split("\n"), func[:comments].split("\n")
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_can_handle_bulleted_lists
|
175
|
+
type = @data[:types].find {|name, data| name == 'git_repository_init_options' }
|
176
|
+
refute_nil type
|
177
|
+
expect_comment = <<-EOF
|
178
|
+
<p>This contains extra options for <code>git_repository_init_ext</code> that enable
|
179
|
+
additional initialization features. The fields are:</p>
|
180
|
+
|
181
|
+
<ul>
|
182
|
+
<li>flags - Combination of GIT_REPOSITORY_INIT flags above.</li>
|
183
|
+
<li>mode - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...
|
184
|
+
constants above, or to a custom value that you would like.</li>
|
185
|
+
<li>workdir_path - The path to the working dir or NULL for default (i.e.
|
186
|
+
repo_path parent on non-bare repos). IF THIS IS RELATIVE PATH,
|
187
|
+
IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH. If this is not
|
188
|
+
the "natural" working directory, a .git gitlink file will be
|
189
|
+
created here linking to the repo_path.</li>
|
190
|
+
<li>description - If set, this will be used to initialize the "description"
|
191
|
+
file in the repository, instead of using the template content.</li>
|
192
|
+
<li>template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,
|
193
|
+
this contains the path to use for the template directory. If
|
194
|
+
this is NULL, the config or default directory options will be
|
195
|
+
used instead.</li>
|
196
|
+
<li>initial_head - The name of the head to point HEAD at. If NULL, then
|
197
|
+
this will be treated as "master" and the HEAD ref will be set
|
198
|
+
to "refs/heads/master". If this begins with "refs/" it will be
|
199
|
+
used verbatim; otherwise "refs/heads/" will be prefixed.</li>
|
200
|
+
<li>origin_url - If this is non-NULL, then after the rest of the
|
201
|
+
repository initialization is completed, an "origin" remote
|
202
|
+
will be added pointing to this URL.</li>
|
203
|
+
</ul>
|
204
|
+
EOF
|
205
|
+
assert_equal expect_comment, type[1][:comments]
|
169
206
|
end
|
170
207
|
|
171
208
|
def test_can_get_the_full_description_from_multi_liners
|
data/test/fixtures/git2/common.h
CHANGED
@@ -28,6 +28,7 @@
|
|
28
28
|
#include "thread-utils.h"
|
29
29
|
#include <time.h>
|
30
30
|
#include <stdlib.h>
|
31
|
+
#include <stdint.h>
|
31
32
|
|
32
33
|
#ifdef __cplusplus
|
33
34
|
# define GIT_BEGIN_DECL extern "C" {
|
@@ -39,12 +40,6 @@
|
|
39
40
|
# define GIT_END_DECL /* empty */
|
40
41
|
#endif
|
41
42
|
|
42
|
-
/*
|
43
|
-
* libclang won't consider anything with size_t to have comments unless we use
|
44
|
-
* this hack.
|
45
|
-
*/
|
46
|
-
typedef size_t size_t;
|
47
|
-
|
48
43
|
/** Declare a public function exported for application use. */
|
49
44
|
#ifdef __GNUC__
|
50
45
|
# define GIT_EXTERN(type) extern \
|
@@ -212,6 +212,45 @@ GIT_EXTERN(const char *) git_repository_path(git_repository *repo);
|
|
212
212
|
*/
|
213
213
|
GIT_EXTERN(const char *) git_repository_workdir(git_repository *repo);
|
214
214
|
|
215
|
+
/**
|
216
|
+
* Extended options structure for `git_repository_init_ext`.
|
217
|
+
*
|
218
|
+
* This contains extra options for `git_repository_init_ext` that enable
|
219
|
+
* additional initialization features. The fields are:
|
220
|
+
*
|
221
|
+
* * flags - Combination of GIT_REPOSITORY_INIT flags above.
|
222
|
+
* * mode - Set to one of the standard GIT_REPOSITORY_INIT_SHARED_...
|
223
|
+
* constants above, or to a custom value that you would like.
|
224
|
+
* * workdir_path - The path to the working dir or NULL for default (i.e.
|
225
|
+
* repo_path parent on non-bare repos). IF THIS IS RELATIVE PATH,
|
226
|
+
* IT WILL BE EVALUATED RELATIVE TO THE REPO_PATH. If this is not
|
227
|
+
* the "natural" working directory, a .git gitlink file will be
|
228
|
+
* created here linking to the repo_path.
|
229
|
+
* * description - If set, this will be used to initialize the "description"
|
230
|
+
* file in the repository, instead of using the template content.
|
231
|
+
* * template_path - When GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE is set,
|
232
|
+
* this contains the path to use for the template directory. If
|
233
|
+
* this is NULL, the config or default directory options will be
|
234
|
+
* used instead.
|
235
|
+
* * initial_head - The name of the head to point HEAD at. If NULL, then
|
236
|
+
* this will be treated as "master" and the HEAD ref will be set
|
237
|
+
* to "refs/heads/master". If this begins with "refs/" it will be
|
238
|
+
* used verbatim; otherwise "refs/heads/" will be prefixed.
|
239
|
+
* * origin_url - If this is non-NULL, then after the rest of the
|
240
|
+
* repository initialization is completed, an "origin" remote
|
241
|
+
* will be added pointing to this URL.
|
242
|
+
*/
|
243
|
+
typedef struct {
|
244
|
+
unsigned int version;
|
245
|
+
uint32_t flags;
|
246
|
+
uint32_t mode;
|
247
|
+
const char *workdir_path;
|
248
|
+
const char *description;
|
249
|
+
const char *template_path;
|
250
|
+
const char *initial_head;
|
251
|
+
const char *origin_url;
|
252
|
+
} git_repository_init_options;
|
253
|
+
|
215
254
|
/** @} */
|
216
255
|
GIT_END_DECL
|
217
256
|
#endif
|
data/test/fixtures/git2/types.h
CHANGED
data/test/parser_test.rb
CHANGED
@@ -4,13 +4,17 @@ require 'pp'
|
|
4
4
|
|
5
5
|
class ParserTest < Minitest::Test
|
6
6
|
|
7
|
-
def
|
8
|
-
@parser
|
7
|
+
def teardown
|
8
|
+
@parser.cleanup! if @parser
|
9
9
|
end
|
10
10
|
|
11
11
|
# e.g. parse('git2/refs.h')
|
12
|
+
# contents is either a string (the contents of "path")
|
13
|
+
# or a hash of paths => contents
|
12
14
|
def parse(path, contents)
|
13
|
-
|
15
|
+
contents = [[path, contents]] if contents.is_a? String
|
16
|
+
@parser = Docurium::DocParser.new(contents)
|
17
|
+
@parser.parse_file(path)
|
14
18
|
end
|
15
19
|
|
16
20
|
def test_single_function
|
@@ -122,7 +126,7 @@ EOF
|
|
122
126
|
GIT_EXTERN(int) some_public_function(int val);
|
123
127
|
EOF
|
124
128
|
|
125
|
-
actual =
|
129
|
+
actual = parse(name_b, [[name_a, contents_a], [name_b, contents_b]])
|
126
130
|
# "Fix" the path so we remove the temp dir
|
127
131
|
actual[0][:file] = File.split(actual[0][:file])[-1]
|
128
132
|
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docurium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carlos Martín Nieto
|
8
8
|
- Scott Chacon
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-02-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: version_sorter
|
@@ -73,14 +73,14 @@ dependencies:
|
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
76
|
+
version: '1.1'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
83
|
+
version: '1.1'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: redcarpet
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,20 +109,34 @@ dependencies:
|
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0.5'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: parallel
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '1.20'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '1.20'
|
112
126
|
- !ruby/object:Gem::Dependency
|
113
127
|
name: rake
|
114
128
|
requirement: !ruby/object:Gem::Requirement
|
115
129
|
requirements:
|
116
130
|
- - "~>"
|
117
131
|
- !ruby/object:Gem::Version
|
118
|
-
version: '
|
132
|
+
version: '13'
|
119
133
|
type: :development
|
120
134
|
prerelease: false
|
121
135
|
version_requirements: !ruby/object:Gem::Requirement
|
122
136
|
requirements:
|
123
137
|
- - "~>"
|
124
138
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
139
|
+
version: '13'
|
126
140
|
- !ruby/object:Gem::Dependency
|
127
141
|
name: minitest
|
128
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,8 +160,8 @@ executables:
|
|
146
160
|
extensions: []
|
147
161
|
extra_rdoc_files: []
|
148
162
|
files:
|
163
|
+
- ".github/workflows/main.yml"
|
149
164
|
- ".gitignore"
|
150
|
-
- ".travis.yml"
|
151
165
|
- Gemfile
|
152
166
|
- LICENCE
|
153
167
|
- README.md
|
@@ -159,6 +173,7 @@ files:
|
|
159
173
|
- lib/docurium/cli.rb
|
160
174
|
- lib/docurium/cparser.rb
|
161
175
|
- lib/docurium/css.css
|
176
|
+
- lib/docurium/debug.rb
|
162
177
|
- lib/docurium/docparser.rb
|
163
178
|
- lib/docurium/layout.mustache
|
164
179
|
- lib/docurium/layout.rb
|
@@ -211,7 +226,7 @@ homepage: https://github.com/libgit2/docurium
|
|
211
226
|
licenses:
|
212
227
|
- MIT
|
213
228
|
metadata: {}
|
214
|
-
post_install_message:
|
229
|
+
post_install_message:
|
215
230
|
rdoc_options: []
|
216
231
|
require_paths:
|
217
232
|
- lib
|
@@ -226,9 +241,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
226
241
|
- !ruby/object:Gem::Version
|
227
242
|
version: '0'
|
228
243
|
requirements: []
|
229
|
-
|
230
|
-
|
231
|
-
signing_key:
|
244
|
+
rubygems_version: 3.2.32
|
245
|
+
signing_key:
|
232
246
|
specification_version: 4
|
233
247
|
summary: A simpler, prettier Doxygen replacement.
|
234
248
|
test_files: []
|