yarrow 0.5.0 → 0.6.3
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 +2 -1
- data/README.md +13 -19
- data/Rakefile +15 -1
- data/lib/yarrow.rb +17 -6
- 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 +13 -21
- data/lib/yarrow/content/source.rb +11 -0
- data/lib/yarrow/extensions.rb +1 -0
- data/lib/yarrow/extensions/mementus.rb +24 -0
- data/lib/yarrow/output/context.rb +0 -4
- 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 +74 -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 +6 -7
- metadata +52 -48
- data/.travis.yml +0 -16
- 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,74 @@
|
|
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_yfm(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
|
+
|
65
|
+
def write_yfm(name, text, meta)
|
66
|
+
# Symbolized keys are better to deal with when manipulating data in
|
67
|
+
# Ruby but are an interop nightmare when serialized so here we do a
|
68
|
+
# round-trip through JSON encoding to ensure all keys are string
|
69
|
+
# encoded before dumping them to the front matter format.
|
70
|
+
File.write(name, [YAML.dump(meta.to_json), "---", text].join("\n"))
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
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
CHANGED
@@ -13,18 +13,17 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
14
14
|
spec.executables << 'yarrow'
|
15
15
|
spec.executables << 'yarrow-server'
|
16
|
-
spec.add_runtime_dependency 'hashie', '~> 3.5'
|
17
16
|
spec.add_runtime_dependency 'mementus', '~> 0.8'
|
18
|
-
spec.add_runtime_dependency 'activesupport', '~> 5.1'
|
19
17
|
spec.add_runtime_dependency 'rack', '~> 2.0'
|
20
18
|
spec.add_runtime_dependency 'rack-livereload', '~> 0.3'
|
21
19
|
spec.add_runtime_dependency 'eventmachine', '~> 1.2'
|
22
20
|
spec.add_runtime_dependency 'em-websocket', '~> 0.5.1'
|
23
|
-
spec.add_runtime_dependency '
|
24
|
-
spec.
|
25
|
-
spec.add_development_dependency '
|
26
|
-
spec.add_development_dependency '
|
27
|
-
spec.add_development_dependency '
|
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'
|
28
27
|
spec.add_development_dependency 'rack-test', '~> 0.8'
|
29
28
|
spec.homepage = 'http://rubygemspec.org/gems/yarrow'
|
30
29
|
spec.license = 'MIT'
|
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.3
|
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-29 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,8 +187,8 @@ executables:
|
|
201
187
|
extensions: []
|
202
188
|
extra_rdoc_files: []
|
203
189
|
files:
|
190
|
+
- ".github/workflows/ruby.yml"
|
204
191
|
- ".gitignore"
|
205
|
-
- ".travis.yml"
|
206
192
|
- Gemfile
|
207
193
|
- LICENSE
|
208
194
|
- README.md
|
@@ -214,25 +200,44 @@ files:
|
|
214
200
|
- lib/yarrow/assets.rb
|
215
201
|
- lib/yarrow/assets/manifest.rb
|
216
202
|
- lib/yarrow/assets/pipeline.rb
|
203
|
+
- lib/yarrow/config.rb
|
217
204
|
- lib/yarrow/configuration.rb
|
218
205
|
- lib/yarrow/console_runner.rb
|
206
|
+
- lib/yarrow/content/collection_expander.rb
|
207
|
+
- lib/yarrow/content/content_type.rb
|
219
208
|
- lib/yarrow/content/graph.rb
|
209
|
+
- lib/yarrow/content/source.rb
|
220
210
|
- lib/yarrow/content/source_collector.rb
|
221
211
|
- lib/yarrow/content_map.rb
|
222
212
|
- lib/yarrow/defaults.yml
|
213
|
+
- lib/yarrow/extensions.rb
|
214
|
+
- lib/yarrow/extensions/mementus.rb
|
223
215
|
- lib/yarrow/generator.rb
|
224
|
-
- lib/yarrow/html.rb
|
225
|
-
- lib/yarrow/html/asset_tags.rb
|
226
|
-
- lib/yarrow/html/content_tags.rb
|
227
216
|
- lib/yarrow/logging.rb
|
228
217
|
- lib/yarrow/output/context.rb
|
229
218
|
- lib/yarrow/output/generator.rb
|
230
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
|
231
230
|
- lib/yarrow/server.rb
|
232
231
|
- lib/yarrow/server/livereload.rb
|
232
|
+
- lib/yarrow/source/graph.rb
|
233
|
+
- lib/yarrow/symbols.rb
|
234
|
+
- lib/yarrow/tools/content_utils.rb
|
233
235
|
- lib/yarrow/tools/front_matter.rb
|
234
|
-
- lib/yarrow/tools/output_file.rb
|
235
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
|
236
241
|
- yarrow.gemspec
|
237
242
|
homepage: http://rubygemspec.org/gems/yarrow
|
238
243
|
licenses:
|
@@ -253,8 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
253
258
|
- !ruby/object:Gem::Version
|
254
259
|
version: '0'
|
255
260
|
requirements: []
|
256
|
-
|
257
|
-
rubygems_version: 2.7.6
|
261
|
+
rubygems_version: 3.1.2
|
258
262
|
signing_key:
|
259
263
|
specification_version: 4
|
260
264
|
summary: Documentation generator based on a fluent data model.
|