paperwork 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 66af98ddc420cbb32f380bd7e9f4c96b5204f8e23632a3588a48e8d43253dec2
4
- data.tar.gz: f849b6f17d1614a168c9f6c231e47d1a8a67735c4dd49867131fcde93c48bb94
3
+ metadata.gz: 80f63892db3d3c30b601943f7c6a0929b92079d3dab71696a7b2426ef7ce7d3a
4
+ data.tar.gz: 2b70456d7d56e4674df35e4a1864483c75d64087519ea3643b131369aea3ed83
5
5
  SHA512:
6
- metadata.gz: 07aec73f0bd4e8c998552f290325594c31e8028aa20fc315965a2e34e98b1f4d13a6d35dbd0a6aacb85c73751f74e9f8f174509e1234456f6b4a284798ea8707
7
- data.tar.gz: 35a393b36b652cbccbe71f19909d0e84ef5ec5bdbbc1a461cfdb63eaae142790b5243f72b60f2989f96a10abdd515627c1a5dd341b7bc40e19e2badbfa002fac
6
+ metadata.gz: a4f75a8c77f49ba6c00125cdd4176505bb43c85cf127278a033c479bc6d7a5ba22f4fecae0561b2ca4da0572aa5f014ce3e7a205b70a72aa1c59e6368ff81748
7
+ data.tar.gz: c3efec0580ccd1a16ac3fb11caf587537d7fb3c57c9b3006a16d0c77d302313ed2dea8dbe3ec1385b5aef8ed706b36493f8ac30cdd8e7730d1ab115d3717190d
data/Gemfile.lock CHANGED
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- paperwork (0.2.2)
4
+ paperwork (0.3.0)
5
5
  rake (~> 12.3)
6
6
  redcarpet (~> 3.5.0)
7
+ thor (~> 1.1.0)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
@@ -51,6 +52,7 @@ GEM
51
52
  docile (~> 1.1)
52
53
  simplecov-html (~> 0.11)
53
54
  simplecov-html (0.12.2)
55
+ thor (1.1.0)
54
56
  unicode-display_width (1.7.0)
55
57
 
56
58
  PLATFORMS
data/Rakefile CHANGED
@@ -13,4 +13,4 @@ task rebuild: [:clean, :build]
13
13
  task default: :spec
14
14
  CLEAN.include(".work/coverage")
15
15
 
16
- paperwork :doc, sources: ["README.md", "navdemo.md", "site.yml", "custom.js", "custom.css"]
16
+ paperwork :doc, sources: ["README.md", "nested_example/navdemo.md", "paperwork.yml", "custom.js", "custom.css"]
data/bin/paperwork ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "paperwork"
5
+
6
+ Paperwork::CLI.start
data/lib/paperwork.rb CHANGED
@@ -35,5 +35,7 @@ require "paperwork/tasks/root_helpers"
35
35
  require "paperwork/tasks/document"
36
36
  require "paperwork/tasks/template"
37
37
 
38
+ require "paperwork/cli"
39
+
38
40
 
39
41
  include Paperwork # rubocop:disable Style/MixinUsage
@@ -0,0 +1,61 @@
1
+ require "yaml"
2
+ require "thor"
3
+ require "paperwork"
4
+
5
+ module Paperwork
6
+ class CLI < Thor
7
+ attr_accessor :config
8
+
9
+ CONFIG_FILE = "paperwork.yml"
10
+
11
+ class_option :verbose, aliases: "-v", desc: "be verbose about the build", type: :boolean, default: false
12
+
13
+ desc "build",
14
+ "creates documentation as defined in #{CONFIG_FILE} and writes it to '#{Paperwork::Config[:build_root]}/<name>/build'"
15
+ def build
16
+ build_internal "build"
17
+ end
18
+
19
+ desc "rebuild",
20
+ "removes previous builds and creates documentation as defined in #{CONFIG_FILE} and writes it to '#{Paperwork::Config[:build_root]}/<name>/build'"
21
+ def rebuild
22
+ build_internal "rebuild"
23
+ end
24
+
25
+ desc "server",
26
+ "starts a aerver that serves documentation as defined in #{CONFIG_FILE}"
27
+ def server
28
+ build_internal "server"
29
+ end
30
+
31
+ protected
32
+ def build_internal(task)
33
+ setup_config
34
+ setup_tasks
35
+ invoke_tasks task
36
+ end
37
+
38
+ def setup_config
39
+ raise Exception.new(
40
+ "#{CONFIG_FILE} not found. You need to create a configuration file first."
41
+ ) unless File.exist?(CONFIG_FILE)
42
+
43
+ yaml = YAML.load_file(CONFIG_FILE)
44
+ self.config = yaml["config"]
45
+ self.config["sources"] << CONFIG_FILE
46
+
47
+ raise Exception.new(
48
+ "No 'config' found in #{CONFIG_FILE}. You need to describe the build setup in a 'config' section first."
49
+ ) if self.config.nil?
50
+ end
51
+
52
+ def setup_tasks
53
+ paperwork self.config["name"], sources: self.config["sources"]
54
+ end
55
+
56
+ def invoke_tasks(target)
57
+ Rake::Task["paperwork:#{self.config["name"]}:set_verbose"].invoke if options[:verbose]
58
+ Rake::Task["paperwork:#{self.config["name"]}:#{target}"].invoke
59
+ end
60
+ end
61
+ end
@@ -9,7 +9,7 @@ module Paperwork
9
9
  ##
10
10
  # main task generator for building the document
11
11
  #
12
- class Document < Paperwork::Tasks::Base
12
+ class Document < Paperwork::Tasks::Base # rubocop:disable Metrics/ClassLength
13
13
  attr_reader :dir
14
14
 
15
15
  include Rake::DSL
@@ -34,19 +34,26 @@ module Paperwork
34
34
 
35
35
  private
36
36
 
37
- def get_destination(dst_base, src) # rubocop:disable Metrics/AbcSize
37
+ def get_destination(dst_base, src) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
38
+ nested_base = File.dirname(src)
39
+ nested_base = if nested_base == "."
40
+ dst_base
41
+ else
42
+ File.join(dst_base, nested_base)
43
+ end
44
+
38
45
  ext = File.extname(src)
39
46
  case ext
40
47
  when ".md"
41
- File.join(dst_base, File.basename(src)).gsub(".md", ".html.md")
48
+ File.join(nested_base, File.basename(src)).gsub(".md", ".html.md")
42
49
  when ".scss"
43
- Paperwork::Config[:custom_css] << File.basename(src)
50
+ Paperwork::Config[:custom_css] << File.basename(src, ext)
44
51
  File.join(dst_base, "stylesheets", File.basename(src)).gsub(".scss", ".css.scss")
45
52
  when ".css"
46
- Paperwork::Config[:custom_css] << File.basename(src)
53
+ Paperwork::Config[:custom_css] << File.basename(src, ext)
47
54
  File.join(dst_base, "stylesheets", File.basename(src))
48
55
  when ".js"
49
- Paperwork::Config[:custom_js] << File.basename(src)
56
+ Paperwork::Config[:custom_js] << File.basename(src, ext)
50
57
  File.join(dst_base, "javascripts", File.basename(src))
51
58
  when ".yml"
52
59
  File.join(dst_base, "..", "data", File.basename(src))
@@ -79,9 +86,9 @@ module Paperwork
79
86
  end
80
87
  end
81
88
 
82
- def tasks_nested # rubocop:disable Metrics/AbcSize
83
- namespace :paperwork do
84
- namespace self.name do
89
+ def tasks_nested # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
90
+ namespace :paperwork do # rubocop:disable Metrics/BlockLength
91
+ namespace self.name do # rubocop:disable Metrics/BlockLength
85
92
  task build: ["paperwork:#{self.name}"]
86
93
 
87
94
  desc "rebuild documentation from scratch for '#{self.name}'"
@@ -98,6 +105,31 @@ module Paperwork
98
105
  task :clean do
99
106
  rm_rf self.dir
100
107
  end
108
+
109
+ desc "start middleman server for editing documents and get visual feedback with live reload"
110
+ task server: :build do
111
+ Dir.chdir(self.dir) do
112
+ Bundler.with_unbundled_env do
113
+ Process.spawn(
114
+ "bundle exec middleman server",
115
+ out: :out,
116
+ in: :in,
117
+ err: :err
118
+ )
119
+ end
120
+ puts
121
+ puts "+---------------------------------------------------------------+"
122
+ puts "| |"
123
+ puts "| IMPORTANT: Edit documents in #{self.dir} for live reload! |"
124
+ puts "| ---------- The documents there are hard links to your |"
125
+ puts "| source files, so the changes will be there |"
126
+ puts "| as well. |"
127
+ puts "| |"
128
+ puts "+---------------------------------------------------------------+"
129
+ puts
130
+ Process.waitall
131
+ end
132
+ end
101
133
  end
102
134
  end
103
135
  end
@@ -50,7 +50,6 @@ set :relative_links, true
50
50
  activate :relative_assets
51
51
  activate :livereload
52
52
  activate :syntax, line_numbers: true
53
- # activate :directory_indexes
54
53
 
55
54
 
56
55
  require "lib/doc_renderer"
@@ -6,10 +6,12 @@
6
6
  #
7
7
  module DocRenderer
8
8
  require "middleman-core/renderers/redcarpet"
9
+ require_relative "info_helpers"
9
10
 
10
11
  # This is a basic renderer for transforming markdown to HTML
11
12
  # inherit from this renderer to create more specific variants
12
13
  class Base < Middleman::Renderers::MiddlemanRedcarpetHTML
14
+ include InfoHelpers
13
15
 
14
16
  # block level calls
15
17
  def block_code(code, language)
@@ -79,11 +81,11 @@ module DocRenderer
79
81
  # def emphasis(text)
80
82
  # end
81
83
 
82
- # def image(link, title, alt_text, default_class: "img-fluid")
83
- # <<~IMG
84
- # <img src="#{link}" alt="#{alt_text}" class="#{default_class}">
85
- # IMG
86
- # end
84
+ def image(link, title, alt_text)
85
+ <<~IMG
86
+ <img src="#{relative_link link, scope.current_path}" alt="#{alt_text}" class="img-fluid">#{title}</img>
87
+ IMG
88
+ end
87
89
 
88
90
  # def linebreak()
89
91
  # end
@@ -20,24 +20,44 @@ module InfoHelpers
20
20
  end
21
21
  end
22
22
 
23
- def site?
24
- data.respond_to?(:site)
23
+ def relative_link(stringifyable, current_path = current_page.path)
24
+ relative = String.new
25
+ dots = current_path.split(/[\/\\]/).size - 1
26
+ dots.times{ relative += "../" }
27
+ # This has been some nasty part to debug...
28
+ # keep these comments for debugging session yet to come
29
+ # puts "##################################"
30
+ # puts "current_page.path: #{current_page.path}"
31
+ # puts "stringifyable: #{stringifyable.to_s}"
32
+ # puts "dots: #{dots}"
33
+ # puts "relative link: #{relative + stringifyable.to_s}"
34
+ # puts "##################################"
35
+ relative + stringifyable.to_s
36
+ end
37
+
38
+ def paperwork?
39
+ data.respond_to?(:paperwork)
25
40
  end
26
41
 
27
42
  def navbar?
28
- site? && data.site.respond_to?(:navbar)
43
+ paperwork? && data.paperwork.respond_to?(:navbar)
29
44
  end
30
45
 
31
46
  def navbar_links
32
- nav = data.site.navbar.links if navbar?
33
- nav || {}
47
+ nav = data.paperwork.navbar.links if navbar?
48
+ nav ||= {}
49
+ mapped = {}
50
+ nav.each do |name, link|
51
+ mapped[name] = relative_link(link)
52
+ end
53
+ mapped
34
54
  end
35
55
 
36
56
  def navbar_brand
37
- data.site.navbar.brand if navbar?
57
+ data.paperwork.navbar.brand if navbar?
38
58
  end
39
59
 
40
60
  def footer_text
41
- data.site.footer if site?
61
+ data.paperwork.footer if paperwork?
42
62
  end
43
63
  end
@@ -33,7 +33,7 @@ module Paperwork
33
33
  <<~ROOT_HELPERS
34
34
  module RootHelpers
35
35
  def root_path
36
- "#{self.root}"
36
+ relative_link "#{self.root}"
37
37
  end
38
38
 
39
39
  def custom_css
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Paperwork
4
- VERSION = "0.2.2"
4
+ VERSION = "0.3.0"
5
5
  end
@@ -3,3 +3,6 @@ title: Linked
3
3
  ---
4
4
 
5
5
  # just a linked page for demonstrating navbar links
6
+
7
+
8
+ [Back...](../README.md)
data/paperwork.gemspec CHANGED
@@ -35,4 +35,5 @@ Gem::Specification.new do |spec|
35
35
 
36
36
  spec.add_runtime_dependency "rake", "~> 12.3"
37
37
  spec.add_runtime_dependency "redcarpet", "~> 3.5.0"
38
+ spec.add_runtime_dependency "thor", "~> 1.1.0"
38
39
  end
data/paperwork.yml ADDED
@@ -0,0 +1,15 @@
1
+ footer: © Tobi Schmid
2
+
3
+ navbar:
4
+ brand: paperwork
5
+ links:
6
+ Home: README.md
7
+ Navbar Demo: nested_example/navdemo.md
8
+
9
+ config:
10
+ name: doc
11
+ sources:
12
+ - README.md
13
+ - nested_example/navdemo.md
14
+ - custom.js
15
+ - custom.css
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperwork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Schmid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-19 00:00:00.000000000 Z
11
+ date: 2021-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -108,11 +108,26 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.5.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: thor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.0
111
125
  description:
112
126
  email:
113
127
  - couchbelag@gmail.com
114
128
  executables:
115
129
  - console
130
+ - paperwork
116
131
  - setup
117
132
  extensions: []
118
133
  extra_rdoc_files: []
@@ -128,12 +143,14 @@ files:
128
143
  - README.md
129
144
  - Rakefile
130
145
  - bin/console
146
+ - bin/paperwork
131
147
  - bin/setup
132
148
  - custom.css
133
149
  - custom.js
134
150
  - lib/paperwork.rb
135
151
  - lib/paperwork/assets/paperwork/presentation.css
136
152
  - lib/paperwork/assets/presentation.css
153
+ - lib/paperwork/cli.rb
137
154
  - lib/paperwork/config.rb
138
155
  - lib/paperwork/tasks.rb
139
156
  - lib/paperwork/tasks/base.rb
@@ -161,9 +178,9 @@ files:
161
178
  - lib/paperwork/tasks/root_helpers.rb
162
179
  - lib/paperwork/tasks/template.rb
163
180
  - lib/paperwork/version.rb
164
- - navdemo.md
181
+ - nested_example/navdemo.md
165
182
  - paperwork.gemspec
166
- - site.yml
183
+ - paperwork.yml
167
184
  homepage: https://gitlab.com/couchbelag/paperwork
168
185
  licenses:
169
186
  - MIT
data/site.yml DELETED
@@ -1,7 +0,0 @@
1
- footer: © Tobi Schmid
2
-
3
- navbar:
4
- brand: paperwork
5
- links:
6
- Home: README.md
7
- Navbar Demo: navdemo.md