paperwork 0.3.5 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f13203b1fabe9808e33e1cdaea4ba2c92d738daa94ffa1d22117af9057e76d6b
4
- data.tar.gz: d4349a96f701e92591eabdc19abf1316b72ba88b876cd518ce9b58ea705aeecf
3
+ metadata.gz: 0ce95a4eba79bce8b9489a4f421da5fd2d90eb5814222c4d99dceb39966b25b5
4
+ data.tar.gz: 1c0448b67db7619d2d798b370f9a8020e97885a30ad88588dc809341a9c306df
5
5
  SHA512:
6
- metadata.gz: '009b8503df60c1e652123084e5c51ec935e1daf996d7e7002b24f63a163a1fab9b5059d3e76b2c1f30d7489db70192dc157346a08f33d904d2fafd66ec4fe161'
7
- data.tar.gz: 9cee87ec48e8587f19332f5fd5c5bb4b675199ffe5ec529582123a13c1b9dd46e0a3a7f4794f1347d36e3cfdb23986b17cdeb78951b4bb9970c984f747100392
6
+ metadata.gz: e0e9dd39efe87a4174ffa674c13a5554a4b9788fecb9c27e276cad5bcfdef26c13b81eee9d6678895c20cf2637ed38fe53d6d58c595730f07e320fb2c94efab3
7
+ data.tar.gz: 6917edf9fa357eda4aa207763057938bf872e64644ce5781c6a98fe667f6655a88cbb4520e8726d66c0cd820b0d5840a972ea6339ef5e9a83311203bd7d5f2f1
data/.gitignore CHANGED
@@ -13,3 +13,4 @@
13
13
  # rspec failure tracking
14
14
  .rspec_status
15
15
  .build
16
+ /lib/paperwork/tasks/middleman_template/node_modules
data/.gitlab-ci.yml CHANGED
@@ -1,20 +1,26 @@
1
- image: "ruby:2.6"
2
-
3
- # include:
4
- # - template: License-Scanning.gitlab-ci.yml
1
+ image: ruby:2.6.8
5
2
 
6
3
  stages:
7
4
  - build
8
5
  - test
6
+ - release
9
7
  - deploy
10
8
 
11
9
  before_script:
12
- - ruby -v
13
- - which ruby
14
10
  - apt update
15
11
  - apt install nodejs npm yarn -y
16
- - gem install bundler --no-document
17
- - bundle install --jobs $(nproc) ${FLAGS}
12
+ # default rubygems CLI in ruby2.6-container-images is 3.0.3, which won't
13
+ # support API KEY being provided by environment variable GEM_HOST_API_KEY.
14
+ # --> update it to >3.0.5
15
+ - gem update --system
16
+ - gem install bundler -v 2.2.27 --no-document
17
+ - bundle config set --local path .bundle
18
+ - bundle install --jobs $(nproc)
19
+
20
+ cache:
21
+ key: ${CI_COMMIT_REF_NAME}
22
+ paths:
23
+ - .bundle
18
24
 
19
25
  build:
20
26
  stage: build
@@ -27,8 +33,6 @@ build:
27
33
 
28
34
  rspec:
29
35
  stage: test
30
- dependencies:
31
- - build
32
36
  script:
33
37
  - bundle exec "rspec --format RspecJunitFormatter --out rspec.xml"
34
38
  artifacts:
@@ -38,28 +42,48 @@ rspec:
38
42
  reports:
39
43
  junit: rspec.xml
40
44
 
41
- rubocop:
42
- stage: test
45
+ # requires environment variable GEM_HOST_API_KEY to be set. content
46
+ # has to be a valid rubygems API key for authentication when publishing the
47
+ # gem to rubygems.org.
48
+ #
49
+ # also requires GIT_REPOSITORY_AUTH in which "access_token_name:access_token"
50
+ # for this git repository is configured.
51
+ release:
52
+ stage: release
53
+ rules:
54
+ - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
55
+ when: manual
56
+ variables:
57
+ GIT_REMOTE_URL: ${CI_SERVER_PROTOCOL}://${GIT_REPOSITORY_AUTH}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/${CI_PROJECT_PATH}.git
43
58
  script:
44
- - bundle exec "rubocop --format junit --out rubocop.xml"
45
- artifacts:
46
- paths:
47
- - rubocop.xml
48
- reports:
49
- junit: rubocop.xml
59
+ - VERSION=$(bundle exec rake version)
60
+ - bundle exec rake build
61
+ # remember who is responsible for this release
62
+ - git config --global user.name "${GITLAB_USER_LOGIN}"
63
+ - git config --global user.email "${GITLAB_USER_EMAIL}"
64
+ - git remote add release ${GIT_REMOTE_URL}
65
+ - git tag ${VERSION}
66
+ - git push release --tags
67
+ - gem push pkg/paperwork-${VERSION}.gem
68
+
69
+ # rubocop:
70
+ # stage: test
71
+ # script:
72
+ # - bundle exec "rubocop --format junit --out rubocop.xml"
73
+ # artifacts:
74
+ # paths:
75
+ # - rubocop.xml
76
+ # reports:
77
+ # junit: rubocop.xml
50
78
 
51
79
  pages:
52
80
  stage: deploy
53
- dependencies:
54
- - build
55
- - rspec
56
- - rubocop
81
+ rules:
82
+ - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
83
+ artifacts:
84
+ paths:
85
+ - public
57
86
  script:
58
87
  - mkdir public
59
88
  - mv .work/doc/build/* public/
60
89
  - mv .work/coverage public/
61
- artifacts:
62
- paths:
63
- - public
64
- only:
65
- - master
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- paperwork (0.3.5)
4
+ paperwork (0.5.0)
5
5
  listen (~> 3.4.1)
6
6
  rake (~> 12.3)
7
7
  redcarpet (~> 3.5.0)
@@ -10,38 +10,38 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- ast (2.4.1)
13
+ ast (2.4.2)
14
14
  byebug (11.1.3)
15
- diff-lcs (1.4.4)
16
- docile (1.3.2)
17
- ffi (1.14.2)
15
+ diff-lcs (1.5.0)
16
+ docile (1.4.0)
17
+ ffi (1.15.5)
18
18
  listen (3.4.1)
19
19
  rb-fsevent (~> 0.10, >= 0.10.3)
20
20
  rb-inotify (~> 0.9, >= 0.9.10)
21
- parallel (1.19.2)
22
- parser (2.7.1.4)
21
+ parallel (1.22.1)
22
+ parser (3.1.2.0)
23
23
  ast (~> 2.4.1)
24
- rainbow (3.0.0)
24
+ rainbow (3.1.1)
25
25
  rake (12.3.3)
26
- rb-fsevent (0.10.4)
26
+ rb-fsevent (0.11.1)
27
27
  rb-inotify (0.10.1)
28
28
  ffi (~> 1.0)
29
29
  redcarpet (3.5.1)
30
- regexp_parser (1.7.1)
31
- rexml (3.2.4)
32
- rspec (3.9.0)
33
- rspec-core (~> 3.9.0)
34
- rspec-expectations (~> 3.9.0)
35
- rspec-mocks (~> 3.9.0)
36
- rspec-core (3.9.2)
37
- rspec-support (~> 3.9.3)
38
- rspec-expectations (3.9.2)
30
+ regexp_parser (2.5.0)
31
+ rexml (3.2.5)
32
+ rspec (3.11.0)
33
+ rspec-core (~> 3.11.0)
34
+ rspec-expectations (~> 3.11.0)
35
+ rspec-mocks (~> 3.11.0)
36
+ rspec-core (3.11.0)
37
+ rspec-support (~> 3.11.0)
38
+ rspec-expectations (3.11.0)
39
39
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.9.0)
41
- rspec-mocks (3.9.1)
40
+ rspec-support (~> 3.11.0)
41
+ rspec-mocks (3.11.1)
42
42
  diff-lcs (>= 1.2.0, < 2.0)
43
- rspec-support (~> 3.9.0)
44
- rspec-support (3.9.3)
43
+ rspec-support (~> 3.11.0)
44
+ rspec-support (3.11.0)
45
45
  rspec_junit_formatter (0.4.1)
46
46
  rspec-core (>= 2, < 4, != 2.12.0)
47
47
  rubocop (0.87.1)
@@ -53,15 +53,15 @@ GEM
53
53
  rubocop-ast (>= 0.1.0, < 1.0)
54
54
  ruby-progressbar (~> 1.7)
55
55
  unicode-display_width (>= 1.4.0, < 2.0)
56
- rubocop-ast (0.1.0)
57
- parser (>= 2.7.0.1)
58
- ruby-progressbar (1.10.1)
56
+ rubocop-ast (0.8.0)
57
+ parser (>= 2.7.1.5)
58
+ ruby-progressbar (1.11.0)
59
59
  simplecov (0.18.5)
60
60
  docile (~> 1.1)
61
61
  simplecov-html (~> 0.11)
62
- simplecov-html (0.12.2)
62
+ simplecov-html (0.12.3)
63
63
  thor (1.1.0)
64
- unicode-display_width (1.7.0)
64
+ unicode-display_width (1.8.0)
65
65
 
66
66
  PLATFORMS
67
67
  ruby
@@ -75,4 +75,4 @@ DEPENDENCIES
75
75
  simplecov (~> 0.18.5)
76
76
 
77
77
  BUNDLED WITH
78
- 2.1.4
78
+ 2.2.27
data/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
  title: paperwork
3
3
  ---
4
4
 
5
- # paperwork [![w-10](https://gitlab.com/couchbelag/paperwork/badges/master/pipeline.svg)](https://gitlab.com/couchbelag/paperwork/-/commits/master)[![w-10](https://gitlab.com/couchbelag/paperwork/badges/master/coverage.svg)](https://couchbelag.gitlab.io/paperwork/coverage)
5
+ # paperwork
6
+
7
+ [![w-10](https://gitlab.com/couchbelag/paperwork/badges/master/pipeline.svg)](https://gitlab.com/couchbelag/paperwork/-/commits/master)[![w-10](https://gitlab.com/couchbelag/paperwork/badges/master/coverage.svg)](https://couchbelag.gitlab.io/paperwork/coverage)
6
8
 
7
9
 
8
10
  ### The *paperwork gem* is an aproach to create appealing documentation from markdown documents.
data/Rakefile CHANGED
@@ -14,3 +14,8 @@ task default: :spec
14
14
  CLEAN.include(".work/coverage")
15
15
 
16
16
  paperwork :doc, sources: ["README.md", "nested_example/navdemo.md", "paperwork.yml", "custom.js", "custom.css"]
17
+
18
+ desc "returns version information"
19
+ task :version do
20
+ puts Paperwork::VERSION
21
+ end
@@ -48,7 +48,7 @@ module DocRenderer
48
48
  # end
49
49
 
50
50
  def paragraph(text)
51
- definition_list(text.strip)
51
+ "<p>#{definition_list(text.strip)}</p>"
52
52
  end
53
53
 
54
54
  def table(header, body)
@@ -60,4 +60,10 @@ module InfoHelpers
60
60
  def footer_text
61
61
  data.paperwork.footer if paperwork?
62
62
  end
63
+
64
+ def toc?
65
+ !data.paperwork.config.nil? &&
66
+ !data.paperwork.config.toc.nil? &&
67
+ data.paperwork.config.toc
68
+ end
63
69
  end
@@ -4,5 +4,14 @@ import $ from "jquery";
4
4
  import 'popper.js';
5
5
  import 'bootstrap';
6
6
  import mermaid from "mermaid";
7
+ import {getTableOfContents} from './toc';
7
8
 
8
9
  mermaid.initialize({startOnLoad:true});
10
+
11
+ $(()=>{
12
+ var sidebar = $(".toc.sidebar > ul")
13
+ var topbar = $(".toc.topbar > ul")
14
+ var toc = getTableOfContents();
15
+ toc.insertTo(sidebar);
16
+ toc.insertTo(topbar);
17
+ });
@@ -0,0 +1,64 @@
1
+ import $ from "jquery";
2
+
3
+ var idCounter = 0;
4
+
5
+ class Section {
6
+ constructor(element=null) {
7
+ this.children = [];
8
+ this.element = element;
9
+
10
+ if (this.element) {
11
+ this.anchor = "paperwork-h-" + ++idCounter;
12
+ } else {
13
+ this.element = $("body");
14
+ }
15
+
16
+ this.element.find(":header").each((index, elem)=>{
17
+ this.add(new Section($(elem)));
18
+ });
19
+ }
20
+
21
+ add(childSection) {
22
+ this.children.push(childSection);
23
+ }
24
+
25
+ id() {
26
+ return this.anchor;
27
+ }
28
+
29
+ level() {
30
+ return this.element.prop("tagName").toLowerCase();
31
+ }
32
+
33
+ mark() {
34
+ if (this.level() != "body") {
35
+ // create anchor
36
+ this.element.before("<div id='" + this.id() + "'></div>");
37
+ }
38
+ this.children.forEach((child)=>{
39
+ child.mark();
40
+ });
41
+ }
42
+
43
+ insertTo(target) {
44
+ if (this.level() != "body") {
45
+ // link to anchor
46
+ target.append("<li class='toc-" + this.level() + "'><a href='#" + this.id() + "'>" + this.text() + "</a></li>");
47
+ }
48
+ this.children.forEach((child)=>{
49
+ child.insertTo(target);
50
+ });
51
+ }
52
+
53
+ text() {
54
+ return this.element.text();
55
+ }
56
+ }
57
+
58
+ function getTableOfContents() {
59
+ var toc = new Section();
60
+ toc.mark();
61
+ return toc;
62
+ }
63
+
64
+ export { getTableOfContents };
@@ -0,0 +1,6 @@
1
+ <%= partial "layouts/header" %>
2
+ <div class="row">
3
+ <div class="col">
4
+ <%= body %>
5
+ </div>
6
+ </div>
@@ -0,0 +1,25 @@
1
+ <div class="d-flex">
2
+ <div class="d-xl-block d-lg-block d-md-block d-none">
3
+ <%= partial "layouts/toc", locals: {classes: [:sidebar]} %>
4
+ </div>
5
+
6
+ <div>
7
+ <%= partial "layouts/header" %>
8
+
9
+ <div class="row d-xl-none d-lg-none d-md-none ">
10
+ <div class="col">
11
+ <%= partial "layouts/toc", locals: {classes: [:topbar]} %>
12
+ </div>
13
+ </div>
14
+
15
+ <div class="row">
16
+ <div class="col">
17
+ <%= body %>
18
+ </div>
19
+ </div>
20
+ </div>
21
+
22
+ <div class="v-spacer-2 d-xl-block d-lg-block d-md-block d-sm-none d-xs-none"></div>
23
+ <div class="v-spacer-2 d-xl-block d-lg-block d-md-none d-sm-none d-xs-none"></div>
24
+ <div class="v-spacer-3 d-xl-block d-lg-none d-md-none d-sm-none d-xs-none"></div>
25
+ </div>
@@ -29,14 +29,21 @@
29
29
  <body>
30
30
  <%= partial "layouts/navbar" %>
31
31
 
32
+ <% if toc? %>
33
+ <div class="container-fluid">
34
+ <div class="row">
35
+ <div class="col">
36
+ <%= partial "layouts/content_with_toc", locals: {body: body} %>
37
+ </div>
38
+ </div>
39
+ <% else %>
32
40
  <div class="container">
33
- <%= partial "layouts/header" %>
34
-
35
41
  <div class="row">
36
42
  <div class="col">
37
- <%= body %>
43
+ <%= partial "layouts/content", locals: {body: body} %>
38
44
  </div>
39
45
  </div>
46
+ <% end %>
40
47
 
41
48
  <div class="row mt-5 pb-4">
42
49
  <div class="col text-right small border-top">
@@ -1,14 +1,14 @@
1
1
  <div class="row">
2
2
  <div class="col-sm-7 mb-5">
3
- <span class="display-2"><%= yield_content :title %></span>
3
+ <span class="page-title"><%= yield_content :title %></span>
4
4
  <br>
5
- <span class="display-4"><%= yield_content :subtitle %></span>
5
+ <span class="page-sub-title"><%= yield_content :subtitle %></span>
6
6
  </div>
7
7
 
8
8
  <div class="col-sm-5">
9
9
 
10
10
  <div class="row">
11
- <div class="col text-right sub-title mb-2">
11
+ <div class="col text-right page-category mb-2">
12
12
  <%= yield_content :category %>
13
13
  </div>
14
14
  </div>
@@ -1,13 +1,15 @@
1
1
  <nav class="sticky-top navbar navbar-expand-lg navbar-dark bg-dark">
2
2
  <a class="navbar-brand" href="<%= root_path %>"><%= navbar_brand || yield_content(:title) %></a>
3
- <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
4
- <span class="navbar-toggler-icon"></span>
5
- </button>
6
- <div id="navbarSupportedContent" class="collapse navbar-collapse">
7
- <ul class="mr-auto navbar-nav">
8
- <% navbar_links.each do |name, link| %>
9
- <li class=" nav-item"><a class="nav-link" data-method="get" href="<%= link.gsub(/\.md$/, ".html") %>"><%= name %></a></li>
10
- <% end %>
11
- </ul>
12
- </div>
3
+ <% if navbar_links.size > 0 %>
4
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
5
+ <span class="navbar-toggler-icon"></span>
6
+ </button>
7
+ <div id="navbarSupportedContent" class="collapse navbar-collapse">
8
+ <ul class="mr-auto navbar-nav">
9
+ <% navbar_links.each do |name, link| %>
10
+ <li class=" nav-item"><a class="nav-link" data-method="get" href="<%= link.gsub(/\.md$/, ".html") %>"><%= name %></a></li>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ <% end %>
13
15
  </nav>
@@ -0,0 +1,9 @@
1
+ <%
2
+ classes ||= []
3
+ classes << "toc"
4
+ %>
5
+
6
+ <div class="<%= classes.join(" ") %>">
7
+ <div class="title">Table of Contents</div>
8
+ <ul class="list-unstyled"></ul>
9
+ </div>