trifle-docs 0.1.0
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 +7 -0
- data/.byebug_history +2 -0
- data/.devcontainer.json +6 -0
- data/.devops/docker/codespaces/Dockerfile +1 -0
- data/.devops/docker/codespaces/docker-compose.yml +9 -0
- data/.rspec +3 -0
- data/.rubocop.yml +15 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +81 -0
- data/LICENSE +21 -0
- data/README.md +123 -0
- data/Rakefile +12 -0
- data/demo.gif +0 -0
- data/docs/asdf.txt +1 -0
- data/docs/blog/2022-06-20_getting_started_with_trifle_docs.md +41 -0
- data/docs/blog/2022-06-27_advanced_documentation.md +10 -0
- data/docs/blog/screen.png +0 -0
- data/docs/blog.md +7 -0
- data/docs/example/snippet.md +7 -0
- data/docs/example.md +8 -0
- data/docs/index.md +7 -0
- data/docs/projects/kindergarden.md +8 -0
- data/docs/projects/petite_project.md +8 -0
- data/docs/projects/rugby_team.md +8 -0
- data/docs/projects.md +9 -0
- data/docs/test/case.md +8 -0
- data/docs/test/index.md +8 -0
- data/docs/test/sample.md +8 -0
- data/lib/trifle/docs/app.rb +30 -0
- data/lib/trifle/docs/configuration.rb +25 -0
- data/lib/trifle/docs/harvester/file.rb +32 -0
- data/lib/trifle/docs/harvester/markdown.rb +55 -0
- data/lib/trifle/docs/harvester.rb +86 -0
- data/lib/trifle/docs/helper/tree.rb +39 -0
- data/lib/trifle/docs/operations/collection.rb +24 -0
- data/lib/trifle/docs/operations/content.rb +24 -0
- data/lib/trifle/docs/operations/meta.rb +24 -0
- data/lib/trifle/docs/operations/sitemap.rb +21 -0
- data/lib/trifle/docs/version.rb +7 -0
- data/lib/trifle/docs.rb +53 -0
- data/sig/trifle/docs.rbs +6 -0
- data/templates/simple/layout.erb +12 -0
- data/templates/simple/page.erb +32 -0
- data/trifle-docs.gemspec +51 -0
- metadata +233 -0
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'redcarpet'
|
5
|
+
require 'rouge'
|
6
|
+
require 'rouge/plugins/redcarpet'
|
7
|
+
|
8
|
+
module Trifle
|
9
|
+
module Docs
|
10
|
+
module Harvester
|
11
|
+
module Markdown
|
12
|
+
class Render < Redcarpet::Render::HTML
|
13
|
+
include Rouge::Plugins::Redcarpet
|
14
|
+
end
|
15
|
+
|
16
|
+
class Sieve < Harvester::Sieve
|
17
|
+
def match?
|
18
|
+
file.end_with?('.md')
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_url
|
22
|
+
file.gsub(%r{^#{path}/}, '')
|
23
|
+
.gsub(%r{/?index\.md}, '')
|
24
|
+
.gsub(/\.md/, '')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Conveyor < Harvester::Conveyor
|
29
|
+
def content
|
30
|
+
@content ||= Redcarpet::Markdown.new(
|
31
|
+
Render.new(with_toc_data: true),
|
32
|
+
fenced_code_blocks: true,
|
33
|
+
disable_indented_code_blocks: true,
|
34
|
+
footnotes: true
|
35
|
+
).render(data.gsub(/^---(.*?)---(\s*)/m, ''))
|
36
|
+
end
|
37
|
+
|
38
|
+
def meta
|
39
|
+
@meta ||= YAML.load_file(file).merge(
|
40
|
+
'url' => "/#{url}",
|
41
|
+
'breadcrumbs' => url.split('/'),
|
42
|
+
'toc' => toc
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
def toc
|
47
|
+
@toc ||= Redcarpet::Markdown.new(
|
48
|
+
Redcarpet::Render::HTML_TOC
|
49
|
+
).render(data.gsub(/^---(.*?)---(\s*)/m, ''))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trifle
|
4
|
+
module Docs
|
5
|
+
module Harvester
|
6
|
+
class Walker
|
7
|
+
attr_reader :path, :router
|
8
|
+
|
9
|
+
def initialize(**keywords)
|
10
|
+
@path = keywords.fetch(:path)
|
11
|
+
@harvesters = keywords.fetch(:harvesters)
|
12
|
+
@router = {}
|
13
|
+
|
14
|
+
gather
|
15
|
+
end
|
16
|
+
|
17
|
+
def gather
|
18
|
+
Dir["#{path}/**/*.*"].each do |file|
|
19
|
+
@harvesters.each do |harvester|
|
20
|
+
sieve = harvester::Sieve.new(path: path, file: file)
|
21
|
+
if sieve.match?
|
22
|
+
@router[sieve.to_url] = harvester::Conveyor.new(file: file, url: sieve.to_url)
|
23
|
+
break
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
def sitemap
|
31
|
+
@sitemap ||= begin
|
32
|
+
mapping = router.keys.each_with_object({}) do |url, out|
|
33
|
+
out[url] = meta_for(url: url)
|
34
|
+
end
|
35
|
+
|
36
|
+
Trifle::Docs::Helper::Tree.new(mapping: mapping).menu
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def collection_for(url:)
|
41
|
+
return sitemap if url.empty?
|
42
|
+
|
43
|
+
sitemap.dig(*url.split('/'))
|
44
|
+
end
|
45
|
+
|
46
|
+
def content_for(url:)
|
47
|
+
@router[url].content
|
48
|
+
end
|
49
|
+
|
50
|
+
def meta_for(url:)
|
51
|
+
@router[url].meta
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class Sieve
|
56
|
+
attr_reader :path, :file
|
57
|
+
|
58
|
+
def initialize(path:, file:)
|
59
|
+
@path = path
|
60
|
+
@file = file
|
61
|
+
end
|
62
|
+
|
63
|
+
def match?
|
64
|
+
raise 'Not Impelemented'
|
65
|
+
end
|
66
|
+
|
67
|
+
def to_url
|
68
|
+
raise 'Not Impelemented'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class Conveyor
|
73
|
+
attr_reader :file, :url
|
74
|
+
|
75
|
+
def initialize(file:, url:)
|
76
|
+
@file = file
|
77
|
+
@url = url
|
78
|
+
end
|
79
|
+
|
80
|
+
def data
|
81
|
+
@data ||= ::File.read(file)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trifle
|
4
|
+
module Docs
|
5
|
+
module Helper
|
6
|
+
class Tree
|
7
|
+
attr_reader :mapping
|
8
|
+
|
9
|
+
def initialize(mapping:)
|
10
|
+
@mapping = mapping
|
11
|
+
end
|
12
|
+
|
13
|
+
def menu
|
14
|
+
@menu ||= mapping.inject({}) do |out, (url, meta)|
|
15
|
+
deep_merge(
|
16
|
+
out, url.split('/').reverse.inject({ '_meta' => meta }) { |o, k| { k => o } }
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def deep_merge(this_hash, other_hash, &block)
|
22
|
+
deep_merge!(this_hash.dup, other_hash, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def deep_merge!(this_hash, other_hash, &block)
|
26
|
+
this_hash.merge!(other_hash) do |key, this_val, other_val|
|
27
|
+
if this_val.is_a?(Hash) && other_val.is_a?(Hash)
|
28
|
+
deep_merge(this_val, other_val, &block)
|
29
|
+
elsif block_given?
|
30
|
+
block.call(key, this_val, other_val)
|
31
|
+
else
|
32
|
+
other_val
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trifle
|
4
|
+
module Docs
|
5
|
+
module Operations
|
6
|
+
class Collection
|
7
|
+
attr_reader :url
|
8
|
+
|
9
|
+
def initialize(**keywords)
|
10
|
+
@url = keywords.fetch(:url)
|
11
|
+
@config = keywords[:config]
|
12
|
+
end
|
13
|
+
|
14
|
+
def config
|
15
|
+
@config || Trifle::Docs.default
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform
|
19
|
+
config.harvester.collection_for(url: url)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trifle
|
4
|
+
module Docs
|
5
|
+
module Operations
|
6
|
+
class Content
|
7
|
+
attr_reader :url
|
8
|
+
|
9
|
+
def initialize(**keywords)
|
10
|
+
@url = keywords.fetch(:url)
|
11
|
+
@config = keywords[:config]
|
12
|
+
end
|
13
|
+
|
14
|
+
def config
|
15
|
+
@config || Trifle::Docs.default
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform
|
19
|
+
config.harvester.content_for(url: url)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trifle
|
4
|
+
module Docs
|
5
|
+
module Operations
|
6
|
+
class Meta
|
7
|
+
attr_reader :url
|
8
|
+
|
9
|
+
def initialize(**keywords)
|
10
|
+
@url = keywords.fetch(:url)
|
11
|
+
@config = keywords[:config]
|
12
|
+
end
|
13
|
+
|
14
|
+
def config
|
15
|
+
@config || Trifle::Docs.default
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform
|
19
|
+
config.harvester.meta_for(url: url)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Trifle
|
4
|
+
module Docs
|
5
|
+
module Operations
|
6
|
+
class Sitemap
|
7
|
+
def initialize(**keywords)
|
8
|
+
@config = keywords[:config]
|
9
|
+
end
|
10
|
+
|
11
|
+
def config
|
12
|
+
@config || Trifle::Docs.default
|
13
|
+
end
|
14
|
+
|
15
|
+
def perform
|
16
|
+
config.harvester.sitemap
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/trifle/docs.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'docs/configuration'
|
4
|
+
require_relative 'docs/helper/tree'
|
5
|
+
require_relative 'docs/harvester'
|
6
|
+
require_relative 'docs/harvester/file'
|
7
|
+
require_relative 'docs/harvester/markdown'
|
8
|
+
require_relative 'docs/operations/content'
|
9
|
+
require_relative 'docs/operations/collection'
|
10
|
+
require_relative 'docs/operations/meta'
|
11
|
+
require_relative 'docs/operations/sitemap'
|
12
|
+
require_relative 'docs/version'
|
13
|
+
require_relative 'docs/app' # NOTE: Load app last
|
14
|
+
|
15
|
+
module Trifle
|
16
|
+
module Docs
|
17
|
+
class Error < StandardError; end
|
18
|
+
|
19
|
+
def self.default
|
20
|
+
@default ||= Configuration.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.configure
|
24
|
+
yield(default)
|
25
|
+
|
26
|
+
default
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.content(url:, config: nil)
|
30
|
+
Trifle::Docs::Operations::Content.new(
|
31
|
+
url: url, config: config
|
32
|
+
).perform
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.meta(url:, config: nil)
|
36
|
+
Trifle::Docs::Operations::Meta.new(
|
37
|
+
url: url, config: config
|
38
|
+
).perform
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.collection(url:, config: nil)
|
42
|
+
Trifle::Docs::Operations::Collection.new(
|
43
|
+
url: url, config: config
|
44
|
+
).perform
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.sitemap(config: nil)
|
48
|
+
Trifle::Docs::Operations::Sitemap.new(
|
49
|
+
config: config
|
50
|
+
).perform
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/sig/trifle/docs.rbs
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
<ul>
|
2
|
+
<% sitemap.sort_by {|(key, option)| option.dig('_meta', 'nav_order') || 0 }.each do |(key, option)| %>
|
3
|
+
<% next if key == '_meta' %>
|
4
|
+
<li>
|
5
|
+
<a href="<%= option.dig('_meta', 'url') %>"><%= option.dig('_meta', 'title') %></a>
|
6
|
+
<ul>
|
7
|
+
<% option.sort_by {|(key, option)| option.dig('_meta', 'nav_order') || 0 }.each do |(key, option)| %>
|
8
|
+
<% next if key == '_meta' %>
|
9
|
+
<li><a href="<%= option.dig('_meta', 'url') %>"><%= option.dig('_meta', 'title') %></a></li>
|
10
|
+
<% end %>
|
11
|
+
</ul>
|
12
|
+
</li>
|
13
|
+
<% end %>
|
14
|
+
</ul>
|
15
|
+
|
16
|
+
Breadcrumbs: <% meta['breadcrumbs'].count.times do |i| %>
|
17
|
+
<% page = sitemap.dig(*meta['breadcrumbs'].take(i+1)) %>
|
18
|
+
<a href="<%= page.dig('_meta', 'url') %>"><%= page.dig('_meta', 'title') %></a>
|
19
|
+
<% next if i+1 == meta['breadcrumbs'].count %>
|
20
|
+
/
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<%= content %>
|
24
|
+
|
25
|
+
<% if meta['type'] == 'collection' %>
|
26
|
+
<ul>
|
27
|
+
<% collection.sort_by {|(key, option)| option.dig('_meta', 'nav_order') || 0 }.each do |(key, option)| %>
|
28
|
+
<% next if key == '_meta' %>
|
29
|
+
<li><a href="<%= option.dig('_meta', 'url') %>"><%= option.dig('_meta', 'title') %></a></li>
|
30
|
+
<% end %>
|
31
|
+
</ul>
|
32
|
+
<% end %>
|
data/trifle-docs.gemspec
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/trifle/docs/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "trifle-docs"
|
7
|
+
spec.version = Trifle::Docs::VERSION
|
8
|
+
spec.authors = ["Jozef Vaclavik"]
|
9
|
+
spec.email = ["jozef@hey.com"]
|
10
|
+
|
11
|
+
spec.summary = "Simple documentation for your markdown files."
|
12
|
+
spec.description = "Trifle::Docs is way too simple documentation app. "\
|
13
|
+
'It uses your markdown files and structure to build '\
|
14
|
+
'up your documentation. You can use it as a standalone '\
|
15
|
+
'app or mount it in your Rails app.'
|
16
|
+
spec.homepage = 'https://trifle.io'
|
17
|
+
spec.license = "MIT"
|
18
|
+
spec.required_ruby_version = ">= 2.6.0"
|
19
|
+
|
20
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
21
|
+
spec.metadata['source_code_uri'] = 'https://github.com/trifle-io/trifle-docs'
|
22
|
+
spec.metadata["changelog_uri"] = "https://github.com/trifle-io/trifle-docs/blob/main/CHANGELOG.md"
|
23
|
+
|
24
|
+
# Specify which files should be added to the gem when it is released.
|
25
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
26
|
+
spec.files = Dir.chdir(__dir__) do
|
27
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
28
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
spec.bindir = "exe"
|
32
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
33
|
+
spec.require_paths = ["lib"]
|
34
|
+
|
35
|
+
# Uncomment to register a new dependency of your gem
|
36
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
37
|
+
spec.add_development_dependency('bundler', '~> 2.1')
|
38
|
+
spec.add_development_dependency('byebug', '>= 0')
|
39
|
+
spec.add_development_dependency('puma')
|
40
|
+
spec.add_development_dependency('rake', '~> 13.0')
|
41
|
+
spec.add_development_dependency('rspec', '~> 3.2')
|
42
|
+
spec.add_development_dependency('rubocop', '1.0.0')
|
43
|
+
|
44
|
+
spec.add_dependency('redcarpet')
|
45
|
+
spec.add_dependency('rouge')
|
46
|
+
spec.add_dependency('sinatra')
|
47
|
+
spec.add_dependency('yaml')
|
48
|
+
|
49
|
+
# For more information and examples about making a new gem, check out our
|
50
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,233 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trifle-docs
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jozef Vaclavik
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-06-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: puma
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '13.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '13.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.0.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: redcarpet
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rouge
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: sinatra
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: yaml
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: Trifle::Docs is way too simple documentation app. It uses your markdown
|
154
|
+
files and structure to build up your documentation. You can use it as a standalone
|
155
|
+
app or mount it in your Rails app.
|
156
|
+
email:
|
157
|
+
- jozef@hey.com
|
158
|
+
executables: []
|
159
|
+
extensions: []
|
160
|
+
extra_rdoc_files: []
|
161
|
+
files:
|
162
|
+
- ".byebug_history"
|
163
|
+
- ".devcontainer.json"
|
164
|
+
- ".devops/docker/codespaces/Dockerfile"
|
165
|
+
- ".devops/docker/codespaces/docker-compose.yml"
|
166
|
+
- ".rspec"
|
167
|
+
- ".rubocop.yml"
|
168
|
+
- CHANGELOG.md
|
169
|
+
- CODE_OF_CONDUCT.md
|
170
|
+
- Gemfile
|
171
|
+
- Gemfile.lock
|
172
|
+
- LICENSE
|
173
|
+
- README.md
|
174
|
+
- Rakefile
|
175
|
+
- demo.gif
|
176
|
+
- docs/asdf.txt
|
177
|
+
- docs/blog.md
|
178
|
+
- docs/blog/2022-06-20_getting_started_with_trifle_docs.md
|
179
|
+
- docs/blog/2022-06-27_advanced_documentation.md
|
180
|
+
- docs/blog/screen.png
|
181
|
+
- docs/example.md
|
182
|
+
- docs/example/snippet.md
|
183
|
+
- docs/index.md
|
184
|
+
- docs/projects.md
|
185
|
+
- docs/projects/kindergarden.md
|
186
|
+
- docs/projects/petite_project.md
|
187
|
+
- docs/projects/rugby_team.md
|
188
|
+
- docs/test/case.md
|
189
|
+
- docs/test/index.md
|
190
|
+
- docs/test/sample.md
|
191
|
+
- lib/trifle/docs.rb
|
192
|
+
- lib/trifle/docs/app.rb
|
193
|
+
- lib/trifle/docs/configuration.rb
|
194
|
+
- lib/trifle/docs/harvester.rb
|
195
|
+
- lib/trifle/docs/harvester/file.rb
|
196
|
+
- lib/trifle/docs/harvester/markdown.rb
|
197
|
+
- lib/trifle/docs/helper/tree.rb
|
198
|
+
- lib/trifle/docs/operations/collection.rb
|
199
|
+
- lib/trifle/docs/operations/content.rb
|
200
|
+
- lib/trifle/docs/operations/meta.rb
|
201
|
+
- lib/trifle/docs/operations/sitemap.rb
|
202
|
+
- lib/trifle/docs/version.rb
|
203
|
+
- sig/trifle/docs.rbs
|
204
|
+
- templates/simple/layout.erb
|
205
|
+
- templates/simple/page.erb
|
206
|
+
- trifle-docs.gemspec
|
207
|
+
homepage: https://trifle.io
|
208
|
+
licenses:
|
209
|
+
- MIT
|
210
|
+
metadata:
|
211
|
+
homepage_uri: https://trifle.io
|
212
|
+
source_code_uri: https://github.com/trifle-io/trifle-docs
|
213
|
+
changelog_uri: https://github.com/trifle-io/trifle-docs/blob/main/CHANGELOG.md
|
214
|
+
post_install_message:
|
215
|
+
rdoc_options: []
|
216
|
+
require_paths:
|
217
|
+
- lib
|
218
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 2.6.0
|
223
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
|
+
requirements:
|
225
|
+
- - ">="
|
226
|
+
- !ruby/object:Gem::Version
|
227
|
+
version: '0'
|
228
|
+
requirements: []
|
229
|
+
rubygems_version: 3.2.3
|
230
|
+
signing_key:
|
231
|
+
specification_version: 4
|
232
|
+
summary: Simple documentation for your markdown files.
|
233
|
+
test_files: []
|