brief 1.8.4 → 1.8.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|