brief 1.8.4 → 1.8.5
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/Gemfile.lock +1 -1
- data/apps/blueprint/models/outline.rb +11 -0
- data/lib/brief/briefcase.rb +8 -4
- data/lib/brief/cli/render.rb +48 -0
- data/lib/brief/document.rb +5 -1
- data/lib/brief/document/rendering.rb +26 -2
- data/lib/brief/model/serializers.rb +2 -0
- data/lib/brief/version.rb +1 -1
- data/spec/lib/brief/rendering_spec.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ad789d0f35fc2864273df7ee4dfe3f05b8cdfaf
|
4
|
+
data.tar.gz: 60b434c6ddea2a564862e4cd4888b18645bbe1aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1de7b03ff13fec0ba55696438e93766e58302b36c4b44f2728eb02f8d9a97b7f4dc2d39c82ca2bb87f3ea485e18445f692a870dca31b77705b2f5b09cd5bc1d8
|
7
|
+
data.tar.gz: 03e4f1e437db09249703ea0cd6ff4588a423eefe6a799bc5844ce6d5903a1322d6f9dc66651f3e58d478c073d3e837c7792683ef0070136353b96d563996d899
|
data/Gemfile.lock
CHANGED
data/lib/brief/briefcase.rb
CHANGED
@@ -20,10 +20,6 @@ module Brief
|
|
20
20
|
Brief.cases[root.basename.to_s] ||= self
|
21
21
|
end
|
22
22
|
|
23
|
-
def render_paths paths
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
23
|
def present(style="default", params={})
|
28
24
|
if respond_to?("as_#{style}")
|
29
25
|
send("as_#{style}", params)
|
@@ -37,6 +33,14 @@ module Brief
|
|
37
33
|
"#{slug}:#{repository.cache_key}"
|
38
34
|
end
|
39
35
|
|
36
|
+
def table_of_contents
|
37
|
+
table_of_contents_document.to_model
|
38
|
+
end
|
39
|
+
|
40
|
+
def table_of_contents_document
|
41
|
+
Brief::Document.new(docs_path.join("index.md"), document_type: "outline")
|
42
|
+
end
|
43
|
+
|
40
44
|
def slug
|
41
45
|
options.fetch(:slug) { root.basename.to_s.parameterize }
|
42
46
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
command 'render' do |c|
|
2
|
+
c.syntax = 'brief render PATH [OPTIONS]'
|
3
|
+
c.description = 'render the briefcase path'
|
4
|
+
|
5
|
+
c.option '--root PATH', String, 'The briefcase root'
|
6
|
+
c.option '--output PATH', String, 'Save the output to the specified path'
|
7
|
+
c.option '--app APP', String, 'Use the specified app to get our models etc'
|
8
|
+
c.option '--config PATH', String, 'Use the specified config file'
|
9
|
+
c.option '--include-raw', nil, 'Whether or not to include the raw content'
|
10
|
+
|
11
|
+
c.action do |args, options|
|
12
|
+
options.default(root: Pathname(Dir.pwd))
|
13
|
+
|
14
|
+
o = {
|
15
|
+
root: options.root
|
16
|
+
}
|
17
|
+
|
18
|
+
o[:app] = options.app if options.app
|
19
|
+
o[:config_path] = options.config if options.config
|
20
|
+
|
21
|
+
briefcase = Brief::Briefcase.new(o)
|
22
|
+
|
23
|
+
index = 0
|
24
|
+
|
25
|
+
rendered = if args.empty?
|
26
|
+
briefcase.all_models.map do |model|
|
27
|
+
model.document.to_html(script: true, content: !!(options.include_raw), skip_preamble: (index += 1) > 1)
|
28
|
+
end
|
29
|
+
else
|
30
|
+
args.map do |a|
|
31
|
+
Dir[briefcase.root.join(a)].map do |f|
|
32
|
+
doc = Brief::Document.new(f).in_briefcase(briefcase)
|
33
|
+
doc.to_html(script: true, content: !!(options.include_raw), skip_preamble: (index += 1) > 1)
|
34
|
+
end
|
35
|
+
end.flatten
|
36
|
+
end
|
37
|
+
|
38
|
+
html = rendered.join("\n")
|
39
|
+
html = "<html><head></head><body class='brief-export #{options[:app]}'>#{html}</body></html>"
|
40
|
+
if options.output
|
41
|
+
Pathname(options.output).open("w+") do |fh|
|
42
|
+
fh.write(html)
|
43
|
+
end
|
44
|
+
else
|
45
|
+
puts html
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/brief/document.rb
CHANGED
@@ -4,7 +4,7 @@ module Brief
|
|
4
4
|
include Brief::Document::FrontMatter
|
5
5
|
include Brief::Document::Templating
|
6
6
|
|
7
|
-
attr_accessor :path, :content, :frontmatter, :raw_content
|
7
|
+
attr_accessor :path, :content, :frontmatter, :raw_content, :options
|
8
8
|
|
9
9
|
def document
|
10
10
|
self
|
@@ -214,6 +214,10 @@ module Brief
|
|
214
214
|
end
|
215
215
|
|
216
216
|
def document_type
|
217
|
+
options.fetch(:type) { document_type! }
|
218
|
+
end
|
219
|
+
|
220
|
+
def document_type!
|
217
221
|
existing = data && data.type
|
218
222
|
return existing if existing
|
219
223
|
parent_folder_name.try(:singularize)
|
@@ -25,11 +25,35 @@ module Brief
|
|
25
25
|
fenced_code_blocks: true,
|
26
26
|
footnotes: true)
|
27
27
|
|
28
|
-
::Redcarpet::Markdown.new(r, :tables => true,
|
28
|
+
::Redcarpet::Markdown.new(r, :tables => true,
|
29
|
+
:autolink => true,
|
30
|
+
:gh_blockcode => true,
|
31
|
+
:fenced_code_blocks => true,
|
32
|
+
:footnotes => true)
|
29
33
|
end
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
37
|
+
def script_preamble
|
38
|
+
<<-EOF
|
39
|
+
<script type="text/javascript">
|
40
|
+
if(typeof(global)==="undefined"){
|
41
|
+
global = window
|
42
|
+
}
|
43
|
+
global.Brief = global.Brief || {}
|
44
|
+
Brief.documents = Brief.documents || {}
|
45
|
+
</script>
|
46
|
+
EOF
|
47
|
+
end
|
48
|
+
|
49
|
+
def script_contents(options={})
|
50
|
+
<<-EOF
|
51
|
+
<script type="text/javascript">
|
52
|
+
Brief.documents['#{ self.relative_path }'] = #{ to_model.as_json(options).to_json };
|
53
|
+
</script>
|
54
|
+
EOF
|
55
|
+
end
|
56
|
+
|
33
57
|
# Documents can be rendered into HTML.
|
34
58
|
#
|
35
59
|
# They will first be put through a Nokogiri processor pipeline
|
@@ -41,7 +65,7 @@ module Brief
|
|
41
65
|
unwrapped_html
|
42
66
|
else
|
43
67
|
wrapper = options.fetch(:wrapper, 'div')
|
44
|
-
"<#{ wrapper } data-brief-model='#{ model_class.type_alias }' data-brief-path='#{
|
68
|
+
"#{script_preamble if options[:script] && !options[:skip_preamble]}<#{ wrapper } data-brief-model='#{ model_class.type_alias }' data-brief-path='#{ relative_path }'>#{ unwrapped_html }</#{wrapper}>#{ script_contents(options) if options[:script]}"
|
45
69
|
end
|
46
70
|
|
47
71
|
html.respond_to?(:html_safe) ? html.html_safe : html.to_s
|
@@ -19,6 +19,8 @@ module Brief::Model::Serializers
|
|
19
19
|
title: document_title,
|
20
20
|
actions: self.class.defined_actions,
|
21
21
|
updated_at: File.mtime(path).to_i,
|
22
|
+
id: (doc_id = file_hash),
|
23
|
+
hash: doc_id,
|
22
24
|
urls: {
|
23
25
|
view_content_url: "/view/content/#{ doc_path }",
|
24
26
|
view_rendered_url: "/view/rendered/#{ doc_path }",
|
data/lib/brief/version.rb
CHANGED
@@ -6,7 +6,7 @@ describe "Brief HTML Rendering" do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
it "wraps the document with some identifying details" do
|
9
|
-
expect(sample.to_html).to include("
|
9
|
+
expect(sample.to_html).to include("epics/epic.html.md")
|
10
10
|
end
|
11
11
|
|
12
12
|
it "wraps the higher level headings under section elements" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brief
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Soeder
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- apps/blueprint/models/diagram.rb
|
242
242
|
- apps/blueprint/models/epic.rb
|
243
243
|
- apps/blueprint/models/milestone.rb
|
244
|
+
- apps/blueprint/models/outline.rb
|
244
245
|
- apps/blueprint/models/page.rb
|
245
246
|
- apps/blueprint/models/persona.rb
|
246
247
|
- apps/blueprint/models/project.rb
|
@@ -261,6 +262,7 @@ files:
|
|
261
262
|
- lib/brief/cli/export.rb
|
262
263
|
- lib/brief/cli/init.rb
|
263
264
|
- lib/brief/cli/parse.rb
|
265
|
+
- lib/brief/cli/render.rb
|
264
266
|
- lib/brief/cli/write.rb
|
265
267
|
- lib/brief/configuration.rb
|
266
268
|
- lib/brief/core_ext.rb
|