brief 1.8.11 → 1.8.12

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
  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