yarrow 0.5.0 → 0.5.1

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