brief 1.8.11 → 1.8.12

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
  SHA1:
3
- metadata.gz: 3de7498537562e1af987a1dde8f953ac597e43bf
4
- data.tar.gz: 485d59167686ab6a22fc7c21692e6c0fdb55dcee
3
+ metadata.gz: 2c387f19c8ad49a0779cebe811c4bf7036400381
4
+ data.tar.gz: 60106d90ac046020fa178b28881ea88af8e672ba
5
5
  SHA512:
6
- metadata.gz: 602e813382b61bb65234e80162d2cc02dbce676e11529b2b9e89471f0a4486c481907482bc7d9e12310da18303b88a77f4f343e422524d4f6f3a881bbfab4a88
7
- data.tar.gz: 72737aded296ed97a129db549f5a46d19e08428373a2434cab50094df9fd5c5a4982909a70d692ea984691c710f3a30f514be147cb42f7ee6c06a05a37e7b7bd
6
+ metadata.gz: 4a0f50b0dc77533e07e03b15e644e117856aba281fdf272a0d947175a59b2170162785c8eac04345cf528a8e0b0776839cd65dd7f851f3e018cafb45cbda4904
7
+ data.tar.gz: 7451362423fef638486fb758d03ca6818e6d82f8d291b29fa8ace319e192955ac1cd3de14d029db3c0a7e44956c4a68d703212fb748f07584721244973eedf6c
data/.gitignore CHANGED
@@ -1,4 +1,3 @@
1
- spec/fixtures/example/docs/concept.html.md
2
1
  tests/middleman/build
3
2
  distro/
4
3
  pkg/
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- brief (1.8.10)
5
- activemodel
4
+ brief (1.8.12)
6
5
  activesupport (>= 4.0)
7
6
  commander (>= 4.2.1)
8
7
  github-fs
@@ -15,9 +14,6 @@ PATH
15
14
  GEM
16
15
  remote: https://rubygems.org/
17
16
  specs:
18
- activemodel (4.2.1)
19
- activesupport (= 4.2.1)
20
- builder (~> 3.1)
21
17
  activesupport (4.2.1)
22
18
  i18n (~> 0.7)
23
19
  json (~> 1.7, >= 1.7.7)
@@ -29,7 +25,6 @@ GEM
29
25
  descendants_tracker (~> 0.0.4)
30
26
  ice_nine (~> 0.11.0)
31
27
  thread_safe (~> 0.3, >= 0.3.1)
32
- builder (3.2.2)
33
28
  coderay (1.1.0)
34
29
  coercible (1.0.0)
35
30
  descendants_tracker (~> 0.0.1)
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
1
  # Brief
2
+ [![Build
3
+ Status](https://travis-ci.org/datapimp/brief.svg?branch=master)](https://travis-ci.org/datapimp/brief)
2
4
 
3
5
  Brief is a tool for building applications on top of collections of
4
6
  documents written in markdown.
@@ -8,3 +8,10 @@ view(:summary) do |*args|
8
8
  end
9
9
  end
10
10
  end
11
+
12
+ view(:table_of_contents) do |*args|
13
+ briefcase = args.first
14
+
15
+ doc = Brief::Document.new(briefcase.docs_path.join("index.md"), document_type: "outline")
16
+ doc && doc.to_model
17
+ end
data/brief.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'github-fs'
24
24
  spec.add_dependency 'virtus', '>= 1.0.3'
25
25
  spec.add_dependency 'inflecto'
26
- spec.add_dependency 'activemodel'
26
+ #spec.add_dependency 'activemodel'
27
27
  spec.add_dependency 'activesupport', '>= 4.0'
28
28
  spec.add_dependency 'nokogiri', '1.6.5'
29
29
 
@@ -33,14 +33,6 @@ module Brief
33
33
  "#{slug}:#{repository.cache_key}"
34
34
  end
35
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
-
44
36
  def slug
45
37
  options.fetch(:slug) { root.basename.to_s.parameterize }
46
38
  end
@@ -97,7 +89,7 @@ module Brief
97
89
  def schema_map(include_all=false)
98
90
  list = include_all ? Brief::Model.classes : model_classes
99
91
  list.map(&:to_schema)
100
- .reduce({}) {|m, k| m[k[:type_alias]] = k; m }
92
+ .reduce({}.to_mash) {|m, k| m[k[:type_alias]] = k; m }
101
93
  end
102
94
 
103
95
  def data
@@ -1,3 +1,16 @@
1
+ class Commander::Command
2
+ def action(*args, &block)
3
+ Brief.default_cli_options(self)
4
+
5
+ when_called do |args, options|
6
+ options.default(root: Brief.pwd)
7
+ Brief.case = Brief::Briefcase.new(root: Pathname(options.root))
8
+
9
+ block.call(args, options)
10
+ end
11
+ end
12
+ end
13
+
1
14
  module Brief
2
15
  def self.cli_action(c, &block)
3
16
  c.action do |args, options|
@@ -2,22 +2,32 @@ command 'write' do |c|
2
2
  c.syntax = 'brief write MODEL_TYPE [OPTIONS]'
3
3
  c.description = 'Create a new document for a given model type'
4
4
 
5
- c.action do |args, _options|
6
- string_args = args.select { |a| a.is_a?(String) }
7
- model_class = Brief::Model.lookup_class_from_args(string_args)
5
+ c.action do |args, options|
6
+ schema_map = Brief.case.schema_map(true)
7
+ type_alias = args.first
8
8
 
9
- base_content = ''
9
+ model_class = schema_map.fetch(type_alias) do
10
+ raise "Unknown model type: #{ type_alias }. Available types are: #{ schema_map.keys.join(',') }"
11
+ end
12
+
13
+ default_example = "---\ntype:#{type_alias}\n---\n\n# Enter some content"
14
+
15
+ content = ask_editor(model_class.to_mash.example || default_example)
10
16
 
11
- if model_class && model_class.example_body.to_s.length > 0
12
- base_content = model_class.example_body
13
- else
14
- # document_contents = model_class.inspect + model_class.example_body.to_s
17
+ file = ask("Enter a filename")
18
+
19
+ if file.to_s.length == 0
20
+ rand_token = rand(36**36).to_s(36).slice(0,6)
21
+ file = "new-#{ type_alias }-#{ rand_token }.md"
15
22
  end
16
23
 
17
- document_contents = ask_editor(base_content)
18
- file = ask('enter a name for this file:', String)
24
+ folder = Brief.case.docs_path.join(type_alias.pluralize)
25
+ folder = folder.exist? ? folder : Brief.case.docs_path
26
+
27
+ folder.join(file).open("w+") do |fh|
28
+ fh.write(content)
29
+ end
19
30
 
20
- puts file
21
- puts document_contents
31
+ puts "== Successfully created #{ folder.join(file) }"
22
32
  end
23
33
  end
@@ -121,6 +121,23 @@ module Brief
121
121
  (@briefcase_root && Brief.cases[@briefcase_root]) || Brief.case
122
122
  end
123
123
 
124
+ def has_sections?
125
+ model_class.section_mappings.length > 0
126
+ end
127
+
128
+ def section_headings
129
+ sections.keys
130
+ end
131
+
132
+ def sections_data
133
+ section_headings.reduce({}) do |memo, heading|
134
+ section = sections.send(heading)
135
+ items = section.items rescue nil
136
+ memo[heading] = items if items
137
+ memo
138
+ end
139
+ end
140
+
124
141
  def sections
125
142
  mappings = model_class.section_mappings
126
143
 
@@ -21,6 +21,8 @@ module Brief::Model::Serializers
21
21
  updated_at: File.mtime(path).to_i,
22
22
  id: Digest::MD5.hexdigest(path.to_s),
23
23
  hash: file_hash,
24
+ sections: {},
25
+ section_headings: [],
24
26
  urls: {
25
27
  view_content_url: "/view/content/#{ doc_path }",
26
28
  view_rendered_url: "/view/rendered/#{ doc_path }",
@@ -33,6 +35,11 @@ module Brief::Model::Serializers
33
35
  }.tap do |h|
34
36
  h[:content] = document.combined_data_and_content if options[:content]
35
37
  h[:rendered] = document.to_html if options[:rendered]
38
+ end.tap do |h|
39
+ if document.has_sections?
40
+ h[:section_headings] = document.section_headings
41
+ h[:sections] = document.sections_data
42
+ end
36
43
  end
37
44
  end
38
45
  end
data/lib/brief/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Brief
2
- VERSION = '1.8.11'
2
+ VERSION = '1.8.12'
3
3
  end
@@ -3,6 +3,11 @@ config do
3
3
  set(:templates => Pathname(File.dirname(__FILE__)).join("templates"))
4
4
  end
5
5
 
6
+ view :table_of_contents do
7
+ doc = Brief::Document.new(docs_path.join("index.md"), document_type: "outline")
8
+ doc && doc.to_model
9
+ end
10
+
6
11
  view :custom_aggregator do
7
12
  {aggregator:"custom"}
8
13
  end
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: concept
3
+
4
+ ---
5
+
6
+ # Modified Content sorqvyr5bygiotiqfp2jnj3ku0k240xhv8uf
7
+
8
+ 1
9
+
10
+ 1
@@ -54,6 +54,18 @@ describe "The Brief Document" do
54
54
  end
55
55
 
56
56
  context "defining sections" do
57
+ it "has sections" do
58
+ expect(sample).to be_has_sections
59
+ end
60
+
61
+ it "gives me info about the section headings" do
62
+ expect(sample.section_headings).to include("user_stories")
63
+ end
64
+
65
+ it "has the information from the sections" do
66
+ expect(sample.sections_data).not_to be_empty
67
+ end
68
+
57
69
  it "lets me define content sections" do
58
70
  expect(sample.sections).not_to be_empty
59
71
  expect(sample.sections.user_stories).to be_present
@@ -26,12 +26,12 @@ describe "The Brief Document Repository" do
26
26
  end
27
27
 
28
28
  it "finds the first document matching a query" do
29
- query = repository.where(state:"active")
29
+ query = repository.where(state:"active", type: "epic")
30
30
  expect(query.first.type).to eq("epic")
31
31
  end
32
32
 
33
33
  it "finds the last document matching a query" do
34
- query = repository.where(state:"active")
34
+ query = repository.where(state:"active", type:"user_story")
35
35
  expect(query.last.type).to eq("user_story")
36
36
  end
37
37
 
data/spec/spec_helper.rb CHANGED
@@ -37,6 +37,10 @@ RSpec.configure do |config|
37
37
  config.mock_with :rspec
38
38
  config.include Rack::Test::Methods
39
39
  config.include TestHelpers
40
+
41
+ config.after(:suite) do
42
+ `git checkout spec/fixtures/example/docs` rescue nil
43
+ end
40
44
  end
41
45
 
42
46
  ENV['BRIEF_APPS_PATH'] = Brief.spec_root.join("fixtures","apps").to_s
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brief
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.11
4
+ version: 1.8.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Soeder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-28 00:00:00.000000000 Z
11
+ date: 2015-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: activemodel
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: activesupport
99
85
  requirement: !ruby/object:Gem::Requirement