yarrow 0.4.3 → 0.6.2
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/.github/workflows/ruby.yml +23 -0
- data/.gitignore +8 -0
- data/Gemfile +3 -0
- data/LICENSE +20 -0
- data/README.md +59 -0
- data/Rakefile +18 -0
- data/SERVER.md +41 -0
- data/lib/yarrow.rb +18 -5
- data/lib/yarrow/config.rb +59 -0
- data/lib/yarrow/configuration.rb +35 -63
- data/lib/yarrow/content/collection_expander.rb +218 -0
- data/lib/yarrow/content/content_type.rb +42 -0
- data/lib/yarrow/content/graph.rb +33 -0
- data/lib/yarrow/content/source.rb +11 -0
- data/lib/yarrow/content/source_collector.rb +55 -0
- data/lib/yarrow/extensions.rb +1 -0
- data/lib/yarrow/extensions/mementus.rb +24 -0
- data/lib/yarrow/output/context.rb +0 -6
- data/lib/yarrow/output/generator.rb +2 -2
- data/lib/yarrow/output/web/indexed_file.rb +39 -0
- data/lib/yarrow/process/expand_content.rb +12 -0
- data/lib/yarrow/process/extract_source.rb +12 -0
- data/lib/yarrow/process/project_manifest.rb +20 -0
- data/lib/yarrow/process/step_processor.rb +43 -0
- data/lib/yarrow/process/workflow.rb +36 -0
- data/lib/yarrow/schema.rb +132 -0
- data/lib/yarrow/schema/validations/array.rb +0 -0
- data/lib/yarrow/schema/validations/object.rb +0 -0
- data/lib/yarrow/schema/validations/string.rb +0 -0
- data/lib/yarrow/server.rb +8 -5
- data/lib/yarrow/source/graph.rb +6 -0
- data/lib/yarrow/symbols.rb +19 -0
- data/lib/yarrow/tools/content_utils.rb +66 -0
- data/lib/yarrow/tools/front_matter.rb +4 -2
- data/lib/yarrow/version.rb +3 -2
- data/lib/yarrow/web/html_document.rb +9 -0
- data/lib/yarrow/web/manifest.rb +9 -0
- data/lib/yarrow/web/static_asset.rb +9 -0
- data/lib/yarrow/web/template.rb +9 -0
- data/yarrow.gemspec +30 -0
- metadata +61 -47
- data/lib/yarrow/html.rb +0 -1
- data/lib/yarrow/html/asset_tags.rb +0 -59
- data/lib/yarrow/html/content_tags.rb +0 -7
- data/lib/yarrow/tools/output_file.rb +0 -40
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/yarrow/server.rb
CHANGED
|
@@ -4,18 +4,21 @@ module Yarrow
|
|
|
4
4
|
##
|
|
5
5
|
# Little web server for browsing local files.
|
|
6
6
|
class Server
|
|
7
|
-
|
|
7
|
+
attr_reader :config
|
|
8
8
|
|
|
9
|
-
def initialize
|
|
10
|
-
if
|
|
11
|
-
raise ConfigurationError.new(
|
|
9
|
+
def initialize(instance_config)
|
|
10
|
+
if instance_config.server.nil?
|
|
11
|
+
raise ConfigurationError.new("Missing server entry")
|
|
12
12
|
end
|
|
13
|
+
|
|
14
|
+
@config = instance_config
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
##
|
|
16
18
|
# Rack Middleware for detecting and serving an 'index.html' file
|
|
17
19
|
# instead of a directory index.
|
|
18
20
|
#
|
|
21
|
+
# TODO: Fix bug where a directory /index.html/ causes this to crash
|
|
19
22
|
# TODO: Add configurable mapping and media types for README files as an alternative
|
|
20
23
|
class DirectoryIndex
|
|
21
24
|
def initialize(app, options={})
|
|
@@ -97,7 +100,7 @@ module Yarrow
|
|
|
97
100
|
##
|
|
98
101
|
# @return [String]
|
|
99
102
|
def docroot
|
|
100
|
-
config.output_dir
|
|
103
|
+
config.output_dir
|
|
101
104
|
end
|
|
102
105
|
|
|
103
106
|
##
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require "strings-inflection"
|
|
2
|
+
require "strings-case"
|
|
3
|
+
|
|
4
|
+
module Yarrow
|
|
5
|
+
module Symbols
|
|
6
|
+
# Converts an atomic content identifier to a live class constant.
|
|
7
|
+
def self.to_const(atom)
|
|
8
|
+
Object.const_get(Strings::Case.pascalcase(atom.to_s).to_sym)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.to_singular(atom)
|
|
12
|
+
Strings::Inflection.singularize(atom.to_s).to_sym
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.to_plural(atom)
|
|
16
|
+
Strings::Inflection.pluralize(atom.to_s).to_sym
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
module Yarrow
|
|
2
|
+
module Tools
|
|
3
|
+
# Synchronous utility functions for working with filesystem content tasks.
|
|
4
|
+
module ContentUtils
|
|
5
|
+
# Pass in a source path and get back a parsed representation of the
|
|
6
|
+
# content if it is in a known text format. Mostly used as a fallback if
|
|
7
|
+
# a custom parser or processing chain is not configured for a content
|
|
8
|
+
# type.
|
|
9
|
+
#
|
|
10
|
+
# Supported formats:
|
|
11
|
+
# - HTML template and document partials
|
|
12
|
+
# - Markdown documents
|
|
13
|
+
# - YAML documents
|
|
14
|
+
# - JSON (untested)
|
|
15
|
+
#
|
|
16
|
+
# Works around meta and content source in multiple files or a single
|
|
17
|
+
# file with front matter.
|
|
18
|
+
def read(name)
|
|
19
|
+
path = if name.is_a?(Pathname)
|
|
20
|
+
name
|
|
21
|
+
else
|
|
22
|
+
Pathname.new(name)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
text = File.read(path, :encoding => 'utf-8')
|
|
26
|
+
|
|
27
|
+
case path.extname
|
|
28
|
+
when '.htm', '.md', '.txt', '.yfm'
|
|
29
|
+
extract_yfm(text, symbolize_keys: true)
|
|
30
|
+
# when '.md'
|
|
31
|
+
# body, data = read_split_content(path.to_s, symbolize_keys: true)
|
|
32
|
+
# [Kramdown::Document.new(body).to_html, data]
|
|
33
|
+
when '.yml'
|
|
34
|
+
[nil, YAML.load(File.read(path.to_s), symbolize_names: true)]
|
|
35
|
+
when '.json'
|
|
36
|
+
[nil, JSON.parse(File.read(path.to_s))]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def extract_yfm(text, options={})
|
|
41
|
+
pattern = /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
|
42
|
+
if text =~ pattern
|
|
43
|
+
content = text.sub(pattern, "")
|
|
44
|
+
|
|
45
|
+
begin
|
|
46
|
+
if options.key?(:symbolize_keys)
|
|
47
|
+
meta = YAML.load($1, symbolize_names: true)
|
|
48
|
+
else
|
|
49
|
+
meta = YAML.load($1)
|
|
50
|
+
end
|
|
51
|
+
return [content, meta]
|
|
52
|
+
rescue Psych::SyntaxError => error
|
|
53
|
+
if defined? ::Logger
|
|
54
|
+
# todo: application wide logger
|
|
55
|
+
#logger = ::Logger.new(STDOUT)
|
|
56
|
+
#logger.error "#{error.message}"
|
|
57
|
+
end
|
|
58
|
+
return [content, nil]
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
[text, nil]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
module Yarrow
|
|
2
2
|
module Tools
|
|
3
|
+
# @deprecated
|
|
4
|
+
# Maintained here as it is still used in a number of places but needs to be removed soon
|
|
3
5
|
module FrontMatter
|
|
4
6
|
|
|
5
7
|
def read_split_content(path, options={})
|
|
@@ -21,8 +23,8 @@ module Yarrow
|
|
|
21
23
|
rescue Psych::SyntaxError => error
|
|
22
24
|
if defined? ::Logger
|
|
23
25
|
# todo: application wide logger
|
|
24
|
-
logger = ::Logger.new(STDOUT)
|
|
25
|
-
logger.error "#{error.message}"
|
|
26
|
+
#logger = ::Logger.new(STDOUT)
|
|
27
|
+
#logger.error "#{error.message}"
|
|
26
28
|
end
|
|
27
29
|
return [content, nil]
|
|
28
30
|
end
|
data/lib/yarrow/version.rb
CHANGED
data/yarrow.gemspec
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
|
2
|
+
|
|
3
|
+
require 'yarrow/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = 'yarrow'
|
|
7
|
+
spec.version = Yarrow::VERSION
|
|
8
|
+
spec.platform = Gem::Platform::RUBY
|
|
9
|
+
spec.summary = 'Documentation generator based on a fluent data model.'
|
|
10
|
+
spec.description = 'Yarrow is a tool for generating well structured documentation from a variety of input sources.'
|
|
11
|
+
spec.authors = ['Mark Rickerby']
|
|
12
|
+
spec.email = 'me@maetl.net'
|
|
13
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
14
|
+
spec.executables << 'yarrow'
|
|
15
|
+
spec.executables << 'yarrow-server'
|
|
16
|
+
spec.add_runtime_dependency 'mementus', '~> 0.8'
|
|
17
|
+
spec.add_runtime_dependency 'rack', '~> 2.0'
|
|
18
|
+
spec.add_runtime_dependency 'rack-livereload', '~> 0.3'
|
|
19
|
+
spec.add_runtime_dependency 'eventmachine', '~> 1.2'
|
|
20
|
+
spec.add_runtime_dependency 'em-websocket', '~> 0.5.1'
|
|
21
|
+
spec.add_runtime_dependency 'strings-inflection', '~> 0.1'
|
|
22
|
+
spec.add_runtime_dependency 'strings-case', '~> 0.3'
|
|
23
|
+
spec.add_development_dependency 'bundler', '~> 2.2.9'
|
|
24
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
25
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
|
26
|
+
spec.add_development_dependency 'coveralls', '~> 0.8.23'
|
|
27
|
+
spec.add_development_dependency 'rack-test', '~> 0.8'
|
|
28
|
+
spec.homepage = 'http://rubygemspec.org/gems/yarrow'
|
|
29
|
+
spec.license = 'MIT'
|
|
30
|
+
end
|
metadata
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: yarrow
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Rickerby
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-03-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: hashie
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '3.5'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '3.5'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: mementus
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -38,20 +24,6 @@ dependencies:
|
|
|
38
24
|
- - "~>"
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
26
|
version: '0.8'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: activesupport
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '5.1'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '5.1'
|
|
55
27
|
- !ruby/object:Gem::Dependency
|
|
56
28
|
name: rack
|
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -109,75 +81,89 @@ dependencies:
|
|
|
109
81
|
- !ruby/object:Gem::Version
|
|
110
82
|
version: 0.5.1
|
|
111
83
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
84
|
+
name: strings-inflection
|
|
113
85
|
requirement: !ruby/object:Gem::Requirement
|
|
114
86
|
requirements:
|
|
115
87
|
- - "~>"
|
|
116
88
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
89
|
+
version: '0.1'
|
|
118
90
|
type: :runtime
|
|
119
91
|
prerelease: false
|
|
120
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
93
|
requirements:
|
|
122
94
|
- - "~>"
|
|
123
95
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
96
|
+
version: '0.1'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: strings-case
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0.3'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0.3'
|
|
125
111
|
- !ruby/object:Gem::Dependency
|
|
126
112
|
name: bundler
|
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
|
128
114
|
requirements:
|
|
129
115
|
- - "~>"
|
|
130
116
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
117
|
+
version: 2.2.9
|
|
132
118
|
type: :development
|
|
133
119
|
prerelease: false
|
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
121
|
requirements:
|
|
136
122
|
- - "~>"
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
|
-
version:
|
|
124
|
+
version: 2.2.9
|
|
139
125
|
- !ruby/object:Gem::Dependency
|
|
140
126
|
name: rake
|
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
|
142
128
|
requirements:
|
|
143
129
|
- - "~>"
|
|
144
130
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
131
|
+
version: '13.0'
|
|
146
132
|
type: :development
|
|
147
133
|
prerelease: false
|
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
135
|
requirements:
|
|
150
136
|
- - "~>"
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
|
-
version: '
|
|
138
|
+
version: '13.0'
|
|
153
139
|
- !ruby/object:Gem::Dependency
|
|
154
140
|
name: rspec
|
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
|
156
142
|
requirements:
|
|
157
143
|
- - "~>"
|
|
158
144
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: '3.
|
|
145
|
+
version: '3.10'
|
|
160
146
|
type: :development
|
|
161
147
|
prerelease: false
|
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
149
|
requirements:
|
|
164
150
|
- - "~>"
|
|
165
151
|
- !ruby/object:Gem::Version
|
|
166
|
-
version: '3.
|
|
152
|
+
version: '3.10'
|
|
167
153
|
- !ruby/object:Gem::Dependency
|
|
168
154
|
name: coveralls
|
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
|
170
156
|
requirements:
|
|
171
157
|
- - "~>"
|
|
172
158
|
- !ruby/object:Gem::Version
|
|
173
|
-
version: 0.8.
|
|
159
|
+
version: 0.8.23
|
|
174
160
|
type: :development
|
|
175
161
|
prerelease: false
|
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
163
|
requirements:
|
|
178
164
|
- - "~>"
|
|
179
165
|
- !ruby/object:Gem::Version
|
|
180
|
-
version: 0.8.
|
|
166
|
+
version: 0.8.23
|
|
181
167
|
- !ruby/object:Gem::Dependency
|
|
182
168
|
name: rack-test
|
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -201,29 +187,58 @@ executables:
|
|
|
201
187
|
extensions: []
|
|
202
188
|
extra_rdoc_files: []
|
|
203
189
|
files:
|
|
190
|
+
- ".github/workflows/ruby.yml"
|
|
191
|
+
- ".gitignore"
|
|
192
|
+
- Gemfile
|
|
193
|
+
- LICENSE
|
|
194
|
+
- README.md
|
|
195
|
+
- Rakefile
|
|
196
|
+
- SERVER.md
|
|
204
197
|
- bin/yarrow
|
|
205
198
|
- bin/yarrow-server
|
|
206
199
|
- lib/yarrow.rb
|
|
207
200
|
- lib/yarrow/assets.rb
|
|
208
201
|
- lib/yarrow/assets/manifest.rb
|
|
209
202
|
- lib/yarrow/assets/pipeline.rb
|
|
203
|
+
- lib/yarrow/config.rb
|
|
210
204
|
- lib/yarrow/configuration.rb
|
|
211
205
|
- lib/yarrow/console_runner.rb
|
|
206
|
+
- lib/yarrow/content/collection_expander.rb
|
|
207
|
+
- lib/yarrow/content/content_type.rb
|
|
208
|
+
- lib/yarrow/content/graph.rb
|
|
209
|
+
- lib/yarrow/content/source.rb
|
|
210
|
+
- lib/yarrow/content/source_collector.rb
|
|
212
211
|
- lib/yarrow/content_map.rb
|
|
213
212
|
- lib/yarrow/defaults.yml
|
|
213
|
+
- lib/yarrow/extensions.rb
|
|
214
|
+
- lib/yarrow/extensions/mementus.rb
|
|
214
215
|
- lib/yarrow/generator.rb
|
|
215
|
-
- lib/yarrow/html.rb
|
|
216
|
-
- lib/yarrow/html/asset_tags.rb
|
|
217
|
-
- lib/yarrow/html/content_tags.rb
|
|
218
216
|
- lib/yarrow/logging.rb
|
|
219
217
|
- lib/yarrow/output/context.rb
|
|
220
218
|
- lib/yarrow/output/generator.rb
|
|
221
219
|
- lib/yarrow/output/mapper.rb
|
|
220
|
+
- lib/yarrow/output/web/indexed_file.rb
|
|
221
|
+
- lib/yarrow/process/expand_content.rb
|
|
222
|
+
- lib/yarrow/process/extract_source.rb
|
|
223
|
+
- lib/yarrow/process/project_manifest.rb
|
|
224
|
+
- lib/yarrow/process/step_processor.rb
|
|
225
|
+
- lib/yarrow/process/workflow.rb
|
|
226
|
+
- lib/yarrow/schema.rb
|
|
227
|
+
- lib/yarrow/schema/validations/array.rb
|
|
228
|
+
- lib/yarrow/schema/validations/object.rb
|
|
229
|
+
- lib/yarrow/schema/validations/string.rb
|
|
222
230
|
- lib/yarrow/server.rb
|
|
223
231
|
- lib/yarrow/server/livereload.rb
|
|
232
|
+
- lib/yarrow/source/graph.rb
|
|
233
|
+
- lib/yarrow/symbols.rb
|
|
234
|
+
- lib/yarrow/tools/content_utils.rb
|
|
224
235
|
- lib/yarrow/tools/front_matter.rb
|
|
225
|
-
- lib/yarrow/tools/output_file.rb
|
|
226
236
|
- lib/yarrow/version.rb
|
|
237
|
+
- lib/yarrow/web/html_document.rb
|
|
238
|
+
- lib/yarrow/web/manifest.rb
|
|
239
|
+
- lib/yarrow/web/static_asset.rb
|
|
240
|
+
- lib/yarrow/web/template.rb
|
|
241
|
+
- yarrow.gemspec
|
|
227
242
|
homepage: http://rubygemspec.org/gems/yarrow
|
|
228
243
|
licenses:
|
|
229
244
|
- MIT
|
|
@@ -243,8 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
243
258
|
- !ruby/object:Gem::Version
|
|
244
259
|
version: '0'
|
|
245
260
|
requirements: []
|
|
246
|
-
|
|
247
|
-
rubygems_version: 2.7.6
|
|
261
|
+
rubygems_version: 3.1.2
|
|
248
262
|
signing_key:
|
|
249
263
|
specification_version: 4
|
|
250
264
|
summary: Documentation generator based on a fluent data model.
|