yarrow 0.5.0 → 0.5.1

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
  SHA256:
3
- metadata.gz: 7360a9c100d2a45cbf57a77fcec6a02f21156a6af46d22a6c438dd43ab07557f
4
- data.tar.gz: c71c2e48c2b3118b1d3d734430925f9bee7981a89462df9a8e05bfc5d12fc3c7
3
+ metadata.gz: cf4a0ff53beff8749c36f82844efeefec5463ec6ea6ebc9126fc4e0928b4d4c0
4
+ data.tar.gz: 2d4c1e187e40f5e6f6e6316e5908c1630129c28fa419c4216f06c6566d27854b
5
5
  SHA512:
6
- metadata.gz: 77ed4fe864b0ad9f7d4a73b9787619f166eb5aa2631c70377e57de4c1f781f8da2bca717dafd98a940aff2e637590335e0076894b99a2f4e7ebbf94151acaa56
7
- data.tar.gz: 6732e24c0275884b3cfbab5a417ab755b900ca8d94ffa00d7a84a6c90a042325615221785085d1913f1a0b26b54399b500d90f5beb6b6cd1c7183236e12beade
6
+ metadata.gz: 9624eb95caeb74e736c561d1bdfc18387d2e308427661073147b46377f35add1fd5aa7b03f758107e902fbbb741b6a7a070fd1cfc71a2371f3965774d1ddb128
7
+ data.tar.gz: 3ae340c7e995e51b6a09ef86bf1faa191565a73bd61660d8276f9f77c6722633717dd027e137b0de2eab3f8a320befc1903ed2ef3f5287a83e99ad6d0eda761b
@@ -0,0 +1,23 @@
1
+ name: Ruby
2
+ on:
3
+ push:
4
+ branches: [ master ]
5
+ pull_request:
6
+ branches: [ master ]
7
+ jobs:
8
+ test:
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ os: [ubuntu-latest, macos-latest]
13
+ ruby: [2.7, '3.0', jruby]
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - name: Set up Ruby
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ bundler-cache: true
22
+ - name: Run tests
23
+ run: bundle exec rspec
data/.gitignore CHANGED
@@ -4,4 +4,5 @@ fabfile.pyc
4
4
  pirum.xml
5
5
  Gemfile.lock
6
6
  yarrow-*.gem
7
- coverage
7
+ coverage
8
+ bin/scripts
data/lib/yarrow.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'hashie'
2
2
  require 'yaml'
3
+ require 'active_support/inflector'
3
4
 
4
5
  require 'yarrow/version'
5
6
  require 'yarrow/logging'
@@ -7,18 +8,27 @@ require 'yarrow/configuration'
7
8
  require 'yarrow/console_runner'
8
9
  require 'yarrow/generator'
9
10
  require 'yarrow/assets'
11
+ require 'yarrow/tools/front_matter'
10
12
  require 'yarrow/content/graph'
11
- #require 'yarrow/content/resource_expander'
13
+ require 'yarrow/content/content_type'
14
+ require 'yarrow/content/source'
12
15
  require 'yarrow/content/source_collector'
16
+ require 'yarrow/content/collection_expander'
13
17
  require 'yarrow/html/asset_tags'
14
18
  require 'yarrow/output/mapper'
15
19
  require 'yarrow/output/generator'
16
20
  require 'yarrow/output/context'
17
21
  require 'yarrow/content_map'
18
22
  require 'yarrow/html'
19
- require 'yarrow/tools/front_matter'
20
23
  require 'yarrow/server'
21
24
  require 'yarrow/server/livereload'
25
+ require 'yarrow/schema'
26
+
27
+ require 'yarrow/process/workflow'
28
+ require 'yarrow/process/step_processor'
29
+ require 'yarrow/process/expand_content'
30
+ require 'yarrow/process/extract_source'
31
+ require 'yarrow/process/project_manifest'
22
32
 
23
33
  # Dir[File.dirname(__FILE__) + '/yarrow/generators/*.rb'].each do |generator|
24
34
  # require generator
@@ -0,0 +1,219 @@
1
+ puts "CollectionExpander!!!"
2
+
3
+ module Yarrow
4
+ module Content
5
+ class CollectionExpander
6
+ include Yarrow::Tools::FrontMatter
7
+
8
+ def initialize(content_types=nil)
9
+ @content_types = content_types || [
10
+ Yarrow::Content::ContentType.from_name(:pages)
11
+ ]
12
+ end
13
+
14
+ def expand(graph)
15
+ @content_types.each do |content_type|
16
+ expand_nested(graph, content_type)
17
+ end
18
+ end
19
+
20
+ def expand_nested(graph, content_type)
21
+ type = content_type.collection
22
+ exts = content_type.extensions
23
+
24
+ # If match path represents entire content dir, then include the entire
25
+ # content dir instead of scanning from a subfolder matching the name of
26
+ # the collection.
27
+ start_node = if content_type.match_path == "."
28
+ graph.n(:root)
29
+ else
30
+ graph.n(:root).out(name: type.to_s)
31
+ end
32
+
33
+ # Extract metadata from given start node
34
+ data = extract_metadata(start_node, type)
35
+
36
+ # Collects all nested collections in the subgraph for this content type
37
+ subcollections = {}
38
+ index = nil
39
+
40
+ # Define alias for accessing metadata in the loop
41
+ metadata = data
42
+
43
+ # Scan and collect all nested directories under the top level source
44
+ start_node.depth_first.each do |node|
45
+ if node.label == :directory
46
+ # Check if this entry has metadata defined at the top level
47
+ if data[:collections]
48
+ item = data[:collections].find { |c| c[:slug] == node.props[:slug] }
49
+ metadata = item if item
50
+ end
51
+
52
+ # Create a collection node representing a collection of documents
53
+ index = graph.create_node do |collection_node|
54
+ collection_node.label = :collection
55
+ collection_node.props[:type] = type
56
+ collection_node.props[:name] = node.props[:name]
57
+ collection_node.props[:slug] = node.props[:slug]
58
+ collection_node.props[:title] = metadata[:title]
59
+
60
+ # Override default status so that mapped index collections always show
61
+ # up in the resulting document manifest, when they don’t have
62
+ # associated metadata. This is the opposite of how individual pieces
63
+ # of content behave (default to draft status if one isn’t supplied).
64
+ collection_node.props[:status] = if data[:status]
65
+ data[:status]
66
+ else
67
+ "published"
68
+ end
69
+
70
+ # TODO: URL generation might need to happen elsewhere
71
+ collection_node.props[:url] = if data[:url]
72
+ data[:url]
73
+ else
74
+ "#{node.props[:path].split('./content').last}/"
75
+ end
76
+ end
77
+
78
+ # Add this collection id to the lookup table for edge construction
79
+ subcollections[node.props[:path]] = index
80
+
81
+ # Join the collection to its parent
82
+ unless node.props[:slug] == type.to_s || !subcollections.key?(node.props[:entry].parent.to_s)
83
+ graph.create_edge do |edge|
84
+ edge.label = :child
85
+ edge.from = subcollections[node.props[:entry].parent.to_s].id
86
+ edge.to = index.id
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ subcollections.each do |path, index|
93
+ # Group files matching the same slug under a common key
94
+ objects = graph.n(path: path).out(:file).all.select do |file|
95
+ file.props[:name].end_with?(*exts)
96
+ end.group_by do |file|
97
+ file.props[:slug]
98
+ end
99
+
100
+ build_content_nodes(graph, objects, type, index)
101
+ end
102
+ end
103
+
104
+ # Extract collection level configuration/metadata from the root node for
105
+ # this content type.
106
+ def extract_metadata(node, type)
107
+ # TODO: support _index or _slug convention as well
108
+ meta_file = node.out(slug: type.to_s).first
109
+
110
+ if meta_file
111
+ # Process metadata and add it to the collection node
112
+ # TODO: pass in content converter object
113
+ # TODO: index/body content by default if extracted from frontmatter
114
+ body, data = process_content(meta_file.props[:entry])
115
+ else
116
+ # Otherwise, assume default collection behaviour
117
+ data = {}
118
+ end
119
+
120
+ # Generate a default title if not provided in metadata
121
+ unless data.key?(:title)
122
+ data[:title] = type.to_s.capitalize
123
+ end
124
+
125
+ data
126
+ end
127
+
128
+ def build_content_nodes(graph, objects, type, parent_index)
129
+ # TODO: this may need to use a strategy that can be overriden
130
+ content_type = ActiveSupport::Inflector.singularize(type).to_sym
131
+
132
+ # Process collected content objects and generate entity nodes
133
+ objects.each do |name, sources|
134
+ item_node = graph.create_node do |node|
135
+ # TODO: Rename this to :entry and support similar fields to Atom
136
+ node.label = :item
137
+ node.props[:name] = name
138
+ node.props[:type] = content_type
139
+
140
+ meta = {}
141
+ content = ""
142
+
143
+ sources.each do |source|
144
+ body, data = process_content(source.props[:entry])
145
+ meta.merge!(data) unless data.nil?
146
+ content << body unless body.nil?
147
+ end
148
+
149
+ if meta[:url]
150
+ # If a URL is explicitly proided in metadata then use it
151
+ node.props[:url] = meta[:url]
152
+ elsif meta[:permalink]
153
+ # Support for legacy permalink attribute
154
+ node.props[:url] = meta[:permalink]
155
+ else
156
+ # Default URL generation strategy when no explicit URL is provided
157
+ # TODO: collection nodes need URL generation too
158
+ # TODO: replace this with URL generation strategy
159
+ # TODO: slug vs name - why do some nodes have 2 and some 3 props?
160
+ node.props[:url] = if parent_index.props[:name].to_sym == parent_index.props[:type]
161
+ "/#{parent_index.props[:type]}/#{name}"
162
+ else
163
+ "/#{parent_index.props[:type]}/#{parent_index.props[:slug]}/#{name}"
164
+ end
165
+ end
166
+
167
+ # For now, we are storing title, url, etc on the top-level item.
168
+ node.props[:title] = meta[:title]
169
+
170
+ # TODO: What belongs on the entity and what belongs on the item?
171
+ entity_props = meta.merge(body: content, name: meta[:id], url: node.props[:url])
172
+
173
+
174
+ # TODO: consider whether to provide `body` on the item/document or at
175
+ # the custom content type level.
176
+ begin
177
+ content_struct = Object.const_get(ActiveSupport::Inflector.classify(content_type))
178
+ rescue
179
+ require "ostruct"
180
+ content_struct = OpenStruct
181
+ end
182
+
183
+ node.props[:entity] = content_struct.new(entity_props)
184
+ end
185
+
186
+ # Connect entity with source content
187
+ sources.each do |source|
188
+ graph.create_edge do |edge|
189
+ edge.label = :source
190
+ edge.from = item_node
191
+ edge.to = source.id
192
+ end
193
+ end
194
+
195
+ # Connect entity with parent collection
196
+ graph.create_edge do |edge|
197
+ edge.label = :child
198
+ edge.from = parent_index
199
+ edge.to = item_node
200
+ end
201
+ end
202
+ end
203
+
204
+ # Workaround for handling meta and content source in multiple files or a single
205
+ # file with front matter.
206
+ def process_content(path)
207
+ case path.extname
208
+ when '.htm', '.md'
209
+ read_split_content(path.to_s, symbolize_keys: true)
210
+ # when '.md'
211
+ # body, data = read_split_content(path.to_s, symbolize_keys: true)
212
+ # [Kramdown::Document.new(body).to_html, data]
213
+ when '.yml'
214
+ [nil, YAML.load(File.read(path.to_s), symbolize_names: true)]
215
+ end
216
+ end
217
+ end
218
+ end
219
+ end
@@ -0,0 +1,38 @@
1
+ module Yarrow
2
+ module Content
3
+ class ContentType
4
+ DEFAULT_EXTENSIONS = [".md", ".yml", ".htm"]
5
+
6
+ def self.from_name(name)
7
+ new(Yarrow::Configuration.new(collection: name.to_sym))
8
+ end
9
+
10
+ def initialize(properties)
11
+ unless properties.respond_to?(:collection) || properties.respond_to?(:entity)
12
+ raise "Must provide a collection name or entity name"
13
+ end
14
+
15
+ @properties = properties
16
+ end
17
+
18
+ def collection
19
+ return @properties.collection if @properties.respond_to?(:collection)
20
+ ActiveSupport::Inflector.pluralize(@properties.entity).to_sym
21
+ end
22
+
23
+ def entity
24
+ return @properties.entity if @properties.respond_to?(:entity)
25
+ ActiveSupport::Inflector.singularize(@properties.collection).to_sym
26
+ end
27
+
28
+ def extensions
29
+ return @properties.extensions if @properties.respond_to?(:extensions)
30
+ DEFAULT_EXTENSIONS
31
+ end
32
+
33
+ def match_path
34
+ "."
35
+ end
36
+ end
37
+ end
38
+ end
@@ -8,6 +8,19 @@ module Mementus
8
8
  include Enumerable
9
9
  end
10
10
  end
11
+ module Structure
12
+ class IncidenceList
13
+ def inspect
14
+ "<Mementus::Structure::IncidenceList>"
15
+ end
16
+ end
17
+ end
18
+ class Graph
19
+ def inspect
20
+ "<Mementus::Graph @structure=#{@structure.inspect} " +
21
+ "nodes_count=#{nodes_count} edges_count=#{edges_count}>"
22
+ end
23
+ end
11
24
  end
12
25
 
13
26
  module Yarrow
@@ -16,7 +29,19 @@ module Yarrow
16
29
  class Graph
17
30
  # Construct a graph collected from source content files.
18
31
  def self.from_source(config)
19
- new(SourceCollector.collect(config.input_dir))
32
+ new(SourceCollector.collect(config.input_dir), config)
33
+ end
34
+
35
+ attr_reader :graph, :config
36
+
37
+ def initialize(graph, config)
38
+ @graph = graph
39
+ @config = config
40
+ end
41
+
42
+ def expand_pages
43
+ expander = Yarrow::Content::CollectionExpander.new(config.content_types)
44
+ expander.expand(graph)
20
45
  end
21
46
 
22
47
  # List of source files.
@@ -28,14 +53,6 @@ module Yarrow
28
53
  def directories
29
54
  graph.nodes(:directory)
30
55
  end
31
-
32
- private
33
-
34
- def initialize(graph)
35
- @graph = graph
36
- end
37
-
38
- attr_reader :graph
39
56
  end
40
57
  end
41
58
  end
@@ -0,0 +1,11 @@
1
+ module Yarrow
2
+ module Content
3
+ class Source
4
+ attr_reader :input_dir
5
+
6
+ def initialize(config)
7
+ @input_dir = config[:input_dir]
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module Yarrow
2
+ module Process
3
+ class ExpandContent < StepProcessor
4
+ accepts String
5
+ provides String
6
+
7
+ def step(source)
8
+ "#{source} | ExpandContent::Result"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Yarrow
2
+ module Process
3
+ class ExtractSource < StepProcessor
4
+ accepts String
5
+ provides String
6
+
7
+ def step(source)
8
+ "#{source} | ExtractSource::Result"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,20 @@
1
+ module Yarrow
2
+ module Process
3
+ class ProjectManifest < StepProcessor
4
+ accepts String
5
+ provides String
6
+
7
+ def before_step(content)
8
+
9
+ end
10
+
11
+ def step(content)
12
+ "#{content} | ProjectManifest::Result"
13
+ end
14
+
15
+ def after_step(content)
16
+
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,43 @@
1
+ module Yarrow
2
+ module Process
3
+ class StepProcessor
4
+ attr_reader :source
5
+
6
+ class << self
7
+ attr_reader :accepted_input, :provided_output
8
+
9
+ def accepts(input_const)
10
+ @accepted_input = input_const.to_s
11
+ end
12
+
13
+ def provides(output_const)
14
+ @provided_output = output_const.to_s
15
+ end
16
+ end
17
+
18
+ def initialize
19
+ @source = nil
20
+ end
21
+
22
+ def accepts
23
+ self.class.accepted_input
24
+ end
25
+
26
+ def provides
27
+ self.class.provided_output
28
+ end
29
+
30
+ def can_accept?(provided)
31
+ accepts == provided
32
+ end
33
+
34
+ def process(source)
35
+ # begin
36
+ result = step(source)
37
+ # log.info("<Result source=#{result}>")
38
+ # rescue
39
+ result
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,36 @@
1
+ module Yarrow
2
+ module Process
3
+ class Workflow
4
+ def initialize(input)
5
+ @input = input
6
+ @processors = []
7
+ end
8
+
9
+ def connect(processor)
10
+ provided_input = if @processors.any?
11
+ @processors.last.provides
12
+ else
13
+ @input.class.to_s
14
+ end
15
+
16
+ if processor.can_accept?(provided_input)
17
+ @processors << processor
18
+ else
19
+ raise ArgumentError.new(
20
+ "`#{processor.class}` accepts `#{processor.accepts}` but was connected to `#{provided_input}`"
21
+ )
22
+ end
23
+ end
24
+
25
+ def process(&block)
26
+ result = @input
27
+
28
+ @processors.each do |processor|
29
+ result = processor.process(result)
30
+ end
31
+
32
+ block.call(result)
33
+ end
34
+ end
35
+ end
36
+ end
data/lib/yarrow/server.rb CHANGED
@@ -16,6 +16,7 @@ module Yarrow
16
16
  # Rack Middleware for detecting and serving an 'index.html' file
17
17
  # instead of a directory index.
18
18
  #
19
+ # TODO: Fix bug where a directory /index.html/ causes this to crash
19
20
  # TODO: Add configurable mapping and media types for README files as an alternative
20
21
  class DirectoryIndex
21
22
  def initialize(app, options={})
@@ -0,0 +1,6 @@
1
+ module Yarrow
2
+ module Source
3
+ class Graph
4
+ end
5
+ end
6
+ end
@@ -1,4 +1,4 @@
1
1
  module Yarrow
2
2
  APP_NAME = 'Yarrow'.freeze
3
- VERSION = '0.5.0'.freeze
3
+ VERSION = '0.5.1'.freeze
4
4
  end
data/yarrow.gemspec CHANGED
@@ -21,10 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency 'eventmachine', '~> 1.2'
22
22
  spec.add_runtime_dependency 'em-websocket', '~> 0.5.1'
23
23
  spec.add_runtime_dependency 'sprockets', '~> 3.7'
24
- spec.add_development_dependency 'bundler', '~> 1.16'
25
- spec.add_development_dependency 'rake', '~> 12.3'
26
- spec.add_development_dependency 'rspec', '~> 3.7'
27
- spec.add_development_dependency 'coveralls', '~> 0.8.21'
24
+ spec.add_development_dependency 'bundler', '~> 2.2.9'
25
+ spec.add_development_dependency 'rake', '~> 13.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.10'
27
+ spec.add_development_dependency 'coveralls', '~> 0.8.23'
28
28
  spec.add_development_dependency 'rack-test', '~> 0.8'
29
29
  spec.homepage = 'http://rubygemspec.org/gems/yarrow'
30
30
  spec.license = 'MIT'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickerby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-18 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -128,56 +128,56 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.16'
131
+ version: 2.2.9
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.16'
138
+ version: 2.2.9
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rake
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '12.3'
145
+ version: '13.0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '12.3'
152
+ version: '13.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rspec
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '3.7'
159
+ version: '3.10'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '3.7'
166
+ version: '3.10'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: coveralls
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 0.8.21
173
+ version: 0.8.23
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 0.8.21
180
+ version: 0.8.23
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rack-test
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -201,8 +201,8 @@ executables:
201
201
  extensions: []
202
202
  extra_rdoc_files: []
203
203
  files:
204
+ - ".github/workflows/ruby.yml"
204
205
  - ".gitignore"
205
- - ".travis.yml"
206
206
  - Gemfile
207
207
  - LICENSE
208
208
  - README.md
@@ -216,7 +216,10 @@ files:
216
216
  - lib/yarrow/assets/pipeline.rb
217
217
  - lib/yarrow/configuration.rb
218
218
  - lib/yarrow/console_runner.rb
219
+ - lib/yarrow/content/collection_expander.rb
220
+ - lib/yarrow/content/content_type.rb
219
221
  - lib/yarrow/content/graph.rb
222
+ - lib/yarrow/content/source.rb
220
223
  - lib/yarrow/content/source_collector.rb
221
224
  - lib/yarrow/content_map.rb
222
225
  - lib/yarrow/defaults.yml
@@ -228,8 +231,14 @@ files:
228
231
  - lib/yarrow/output/context.rb
229
232
  - lib/yarrow/output/generator.rb
230
233
  - lib/yarrow/output/mapper.rb
234
+ - lib/yarrow/process/expand_content.rb
235
+ - lib/yarrow/process/extract_source.rb
236
+ - lib/yarrow/process/project_manifest.rb
237
+ - lib/yarrow/process/step_processor.rb
238
+ - lib/yarrow/process/workflow.rb
231
239
  - lib/yarrow/server.rb
232
240
  - lib/yarrow/server/livereload.rb
241
+ - lib/yarrow/source/graph.rb
233
242
  - lib/yarrow/tools/front_matter.rb
234
243
  - lib/yarrow/tools/output_file.rb
235
244
  - lib/yarrow/version.rb
@@ -253,8 +262,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
253
262
  - !ruby/object:Gem::Version
254
263
  version: '0'
255
264
  requirements: []
256
- rubyforge_project:
257
- rubygems_version: 2.7.6
265
+ rubygems_version: 3.1.2
258
266
  signing_key:
259
267
  specification_version: 4
260
268
  summary: Documentation generator based on a fluent data model.
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
-
3
- cache: bundler
4
-
5
- rvm:
6
- - 2.3
7
- - 2.4
8
- - 2.5
9
- - ruby-head
10
- - jruby
11
- - rbx-3
12
-
13
- script: bundle exec rspec
14
-
15
- before_install:
16
- - gem install bundler