marko 0.1.0 → 0.4.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 +4 -4
- data/.dockerignore +12 -0
- data/.rubocop.yml +45 -0
- data/CHANGELOG.md +54 -1
- data/Dockerfile +11 -0
- data/LICENSE.txt +21 -0
- data/README.md +24 -35
- data/Rakefile +2 -6
- data/exe/marko +4 -20
- data/lib/basic.rb +27 -0
- data/lib/marko/chain.rb +44 -0
- data/lib/marko/cli.rb +119 -121
- data/lib/marko/config.rb +30 -20
- data/lib/marko/errors.rb +38 -0
- data/lib/marko/model/markup.rb +33 -0
- data/lib/marko/model/topic.rb +126 -0
- data/lib/marko/model/tree_node.rb +34 -0
- data/lib/marko/model.rb +10 -0
- data/lib/marko/parser/metadata.rb +28 -0
- data/lib/marko/parser/source.rb +52 -0
- data/lib/marko/parser/topic.rb +33 -0
- data/lib/marko/parser.rb +8 -19
- data/lib/marko/renderers/artifact.rb +29 -0
- data/lib/marko/renderers/content.rb +37 -0
- data/lib/marko/renderers/link.rb +19 -0
- data/lib/marko/renderers/metadata.rb +34 -0
- data/lib/marko/renderers/nested_list.rb +21 -0
- data/lib/marko/renderers/nested_tree.rb +22 -0
- data/lib/marko/renderers/renderer.rb +17 -0
- data/lib/marko/renderers/title.rb +16 -0
- data/lib/marko/renderers/topic.rb +24 -0
- data/lib/marko/renderers/url.rb +16 -0
- data/lib/marko/renderers.rb +17 -0
- data/lib/marko/scanner.rb +39 -0
- data/lib/marko/tasks/assemble.rb +52 -0
- data/lib/marko/tasks/compile.rb +19 -0
- data/lib/marko/tasks/load.rb +13 -0
- data/lib/marko/tasks/parse.rb +27 -0
- data/lib/marko/tasks/scan.rb +18 -0
- data/lib/marko/tasks/validate.rb +32 -0
- data/lib/marko/tasks.rb +13 -0
- data/lib/marko/validators/lost_index.rb +21 -0
- data/lib/marko/validators/lost_links.rb +25 -0
- data/lib/marko/validators/lost_parent.rb +21 -0
- data/lib/marko/validators/non_unique_id.rb +23 -0
- data/lib/marko/validators.rb +11 -0
- data/lib/marko/version.rb +1 -3
- data/lib/marko.rb +11 -35
- metadata +47 -54
- data/Gemfile +0 -10
- data/Gemfile.lock +0 -22
- data/lib/assets/demo/README.md +0 -13
- data/lib/assets/demo/src/fr/assemble.md +0 -27
- data/lib/assets/demo/src/fr/compile.md +0 -25
- data/lib/assets/demo/src/fr/markup.md +0 -111
- data/lib/assets/demo/src/fr/storage.md +0 -16
- data/lib/assets/demo/src/fr/treenode.md +0 -34
- data/lib/assets/demo/src/index.md +0 -34
- data/lib/assets/demo/src/intro.md +0 -98
- data/lib/assets/demo/src/ui/cli.md +0 -26
- data/lib/assets/demo/src/ui/gem.md +0 -14
- data/lib/assets/demo/src/ur/uc.create.project.md +0 -8
- data/lib/assets/demo/src/ur/uc.general.flow.md +0 -14
- data/lib/assets/init/README.md +0 -61
- data/lib/assets/init/Rakefile +0 -100
- data/lib/assets/init/tt/artifact.md.tt +0 -3
- data/lib/marko/artifact.rb +0 -3
- data/lib/marko/assembler.rb +0 -82
- data/lib/marko/compiler.rb +0 -16
- data/lib/marko/gadgets/pluggable.rb +0 -55
- data/lib/marko/gadgets/sentry.rb +0 -66
- data/lib/marko/gadgets/service.rb +0 -52
- data/lib/marko/gadgets.rb +0 -3
- data/lib/marko/loader.rb +0 -38
- data/lib/marko/markup/compiler.rb +0 -36
- data/lib/marko/markup/decorator.rb +0 -65
- data/lib/marko/markup/macro.rb +0 -176
- data/lib/marko/markup/parser.rb +0 -122
- data/lib/marko/markup/storage.rb +0 -100
- data/lib/marko/markup/validator.rb +0 -101
- data/lib/marko/markup.rb +0 -24
- data/lib/marko/services/assemble.rb +0 -16
- data/lib/marko/services/compile.rb +0 -30
- data/lib/marko/services.rb +0 -2
- data/lib/marko/storage.rb +0 -36
- data/lib/marko/tree_node.rb +0 -128
- data/lib/marko/validator.rb +0 -19
- data/marko.gemspec +0 -44
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative 'renderers/renderer'
|
2
|
+
require_relative 'renderers/url'
|
3
|
+
require_relative 'renderers/link'
|
4
|
+
require_relative 'renderers/title'
|
5
|
+
require_relative 'renderers/metadata'
|
6
|
+
require_relative 'renderers/nested_list'
|
7
|
+
require_relative 'renderers/nested_tree'
|
8
|
+
require_relative 'renderers/content'
|
9
|
+
require_relative 'renderers/topic'
|
10
|
+
require_relative 'renderers/artifact'
|
11
|
+
|
12
|
+
module Marko
|
13
|
+
|
14
|
+
# Renderers
|
15
|
+
module Renderers
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative 'model'
|
2
|
+
|
3
|
+
module Marko
|
4
|
+
|
5
|
+
# Source scanner
|
6
|
+
class Scanner
|
7
|
+
# @param text [String]
|
8
|
+
# @return [Array<Model::Markup>]
|
9
|
+
def scan(filename)
|
10
|
+
@source = filename
|
11
|
+
content = File.read(filename)
|
12
|
+
scan_topics(content)
|
13
|
+
.select{ it.content.start_with?(?#) }
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def scan_topics(text)
|
19
|
+
quote, buffer, lineno = false, [], 0
|
20
|
+
origin = proc{
|
21
|
+
Model::Markup.new(@source,
|
22
|
+
lineno - buffer.size + 1, buffer.join)
|
23
|
+
}
|
24
|
+
|
25
|
+
[].tap{|ary|
|
26
|
+
text.each_line do |line|
|
27
|
+
if line =~ /^#/ && !quote && buffer.any?
|
28
|
+
ary << origin.()
|
29
|
+
buffer.clear
|
30
|
+
end
|
31
|
+
lineno += 1
|
32
|
+
buffer << line
|
33
|
+
quote = !quote if line.start_with?('```')
|
34
|
+
end
|
35
|
+
ary << origin.() if buffer.any?
|
36
|
+
}
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
require_relative '../errors'
|
3
|
+
|
4
|
+
module Marko
|
5
|
+
module Tasks
|
6
|
+
|
7
|
+
# Assemble tree
|
8
|
+
class Assemble
|
9
|
+
def initialize(config)
|
10
|
+
@config = config
|
11
|
+
@metadata = { id: '0' }
|
12
|
+
.merge(config.to_h.slice(:order_index, :author))
|
13
|
+
end
|
14
|
+
|
15
|
+
# @param topics [Array<Model::Topic>]
|
16
|
+
# @return [Model::Topic]
|
17
|
+
def call(topics)
|
18
|
+
@artifact = Model::Topic.new(
|
19
|
+
@config.title, '', **@metadata)
|
20
|
+
|
21
|
+
topics.each{ @artifact.add(it) }
|
22
|
+
@artifact.each{ maybe_move(it) }
|
23
|
+
inject_ids
|
24
|
+
@artifact
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
|
29
|
+
def maybe_move(node)
|
30
|
+
return unless node[:parent]
|
31
|
+
|
32
|
+
parent = @artifact.find{ it.id == node[:parent] }
|
33
|
+
return unless parent
|
34
|
+
|
35
|
+
parent.add(node)
|
36
|
+
@artifact.delete(node)
|
37
|
+
end
|
38
|
+
|
39
|
+
def inject_ids
|
40
|
+
counter = {}
|
41
|
+
no_id = @artifact.select {|node| node.id.empty?}
|
42
|
+
no_id.each do
|
43
|
+
index = counter[it.parent] || 1
|
44
|
+
counter[it.parent] = index + 1
|
45
|
+
id = index.to_s.rjust(2, '0')
|
46
|
+
id = '.' + id unless it.parent == @artifact
|
47
|
+
it.id = id
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
require_relative '../errors'
|
3
|
+
require_relative '../renderers'
|
4
|
+
|
5
|
+
module Marko
|
6
|
+
module Tasks
|
7
|
+
|
8
|
+
# Compile tree into markup
|
9
|
+
class Compile
|
10
|
+
|
11
|
+
# @param topic [Model::Topic]
|
12
|
+
# @return [String]
|
13
|
+
def call(topic)
|
14
|
+
Renderers::Artifact.new.render(topic)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
require_relative '../errors'
|
3
|
+
require_relative '../parser'
|
4
|
+
|
5
|
+
module Marko
|
6
|
+
module Tasks
|
7
|
+
|
8
|
+
# Parse source files
|
9
|
+
class Parse
|
10
|
+
# @param payload [Array< Array<Model::Markup> >]
|
11
|
+
# @return [Array<Model::Topic>]
|
12
|
+
def call(payload)
|
13
|
+
parser = Parser::Source.new
|
14
|
+
|
15
|
+
topics = payload
|
16
|
+
.map{ parser.parse(it) }
|
17
|
+
.flatten
|
18
|
+
|
19
|
+
errors = topics.reject{ it.is_a?(Model::Topic) }
|
20
|
+
fail Marko::StageError.new('Load stage failed', errors) \
|
21
|
+
if errors.any?
|
22
|
+
|
23
|
+
topics
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
require_relative '../errors'
|
3
|
+
require_relative '../scanner'
|
4
|
+
|
5
|
+
module Marko
|
6
|
+
module Tasks
|
7
|
+
|
8
|
+
# Scan source files
|
9
|
+
class Scan
|
10
|
+
# @param payload [Array<String>] filenames
|
11
|
+
# @return [Array<Array<Model::Markup>>] each scanned source must be parsed separately
|
12
|
+
def call(payload)
|
13
|
+
scanner = Scanner.new
|
14
|
+
payload.map{ scanner.scan(it) }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
require_relative '../errors'
|
3
|
+
require_relative '../validators'
|
4
|
+
|
5
|
+
module Marko
|
6
|
+
module Tasks
|
7
|
+
|
8
|
+
# Validate tree
|
9
|
+
class Validate
|
10
|
+
|
11
|
+
# @param topic [Model::Topic]
|
12
|
+
def call(topic)
|
13
|
+
validators =
|
14
|
+
[ Validators::NonUniqueId,
|
15
|
+
Validators::LostParent,
|
16
|
+
Validators::LostIndex,
|
17
|
+
Validators::LostLinks
|
18
|
+
].map(&:new)
|
19
|
+
|
20
|
+
errors = validators
|
21
|
+
.inject([]){|errors, validator| errors << validator.call(topic) }
|
22
|
+
.flatten
|
23
|
+
|
24
|
+
fail Marko::StageError.new('Check stage failed', errors) \
|
25
|
+
if errors.any?
|
26
|
+
|
27
|
+
topic
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/marko/tasks.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative 'tasks/load'
|
2
|
+
require_relative 'tasks/scan'
|
3
|
+
require_relative 'tasks/parse'
|
4
|
+
require_relative 'tasks/assemble'
|
5
|
+
require_relative 'tasks/validate'
|
6
|
+
require_relative 'tasks/compile'
|
7
|
+
|
8
|
+
module Marko
|
9
|
+
|
10
|
+
# Tasks
|
11
|
+
module Tasks
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative '../errors'
|
2
|
+
|
3
|
+
module Marko
|
4
|
+
module Validators
|
5
|
+
|
6
|
+
# Lost parent validator
|
7
|
+
class LostIndex
|
8
|
+
# @param tree [Enumerable]
|
9
|
+
def call(tree)
|
10
|
+
faulty = tree.drop(1)
|
11
|
+
.select{ it.lost_order_index.any? }
|
12
|
+
|
13
|
+
faulty.map do |e|
|
14
|
+
message = "lost order_index #{e.lost_order_index.join(', ')} in #{e.markup}"
|
15
|
+
Marko::ValidatorError.new(message)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative '../errors'
|
2
|
+
|
3
|
+
module Marko
|
4
|
+
module Validators
|
5
|
+
|
6
|
+
# Lost links validator
|
7
|
+
class LostLinks
|
8
|
+
|
9
|
+
# @param tree [Enumerable]
|
10
|
+
def call(tree)
|
11
|
+
lost_links = tree.inject([]) do |memo, topic|
|
12
|
+
lost = topic.links.reject{ topic.find_by_id(it) }
|
13
|
+
memo << [topic, lost] if lost.any?
|
14
|
+
memo
|
15
|
+
end
|
16
|
+
|
17
|
+
lost_links.map do |e, lost|
|
18
|
+
message = "lost link #{lost.join(', ')} in #{e.markup}"
|
19
|
+
Marko::ValidatorError.new(message)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative '../errors'
|
2
|
+
|
3
|
+
module Marko
|
4
|
+
module Validators
|
5
|
+
|
6
|
+
# Lost parent validator
|
7
|
+
class LostParent
|
8
|
+
# @param tree [Enumerable]
|
9
|
+
def call(tree)
|
10
|
+
faulty = tree
|
11
|
+
.select{ it[:parent] && it&.parent&.id != it[:parent] }
|
12
|
+
|
13
|
+
faulty.map do
|
14
|
+
message = "lost parent [#{it[:parent]}] in #{it.markup}"
|
15
|
+
Marko::ValidatorError.new(message)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require_relative '../errors'
|
2
|
+
|
3
|
+
module Marko
|
4
|
+
module Validators
|
5
|
+
|
6
|
+
# Non unique id validator
|
7
|
+
class NonUniqueId
|
8
|
+
# @param tree [Enumerable]
|
9
|
+
def call(tree)
|
10
|
+
topics = tree
|
11
|
+
.group_by(&:id)
|
12
|
+
.select{|_, items| items.size > 1 }
|
13
|
+
|
14
|
+
topics.map do |id, items|
|
15
|
+
sources = items.map{" #{it.markup}"}.join(?\n)
|
16
|
+
message = "the same id [#{id}] found in\n#{sources}"
|
17
|
+
Marko::ValidatorError.new(message)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/marko/version.rb
CHANGED
data/lib/marko.rb
CHANGED
@@ -1,37 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
|
11
|
-
|
12
|
-
require_relative "marko/markup"
|
13
|
-
require_relative "marko/services"
|
14
|
-
require_relative "marko/loader"
|
15
|
-
require_relative "marko/cli"
|
16
|
-
|
1
|
+
require_relative 'marko/errors'
|
2
|
+
require_relative 'marko/model'
|
3
|
+
require_relative 'marko/renderers'
|
4
|
+
require_relative 'marko/parser'
|
5
|
+
require_relative 'marko/validators'
|
6
|
+
require_relative 'marko/tasks'
|
7
|
+
require_relative 'marko/config'
|
8
|
+
require_relative 'marko/chain'
|
9
|
+
require_relative 'marko/cli'
|
10
|
+
|
11
|
+
# Marko marckup generator namespace
|
17
12
|
module Marko
|
18
|
-
|
19
|
-
class << self
|
20
|
-
def root
|
21
|
-
File.dirname __dir__
|
22
|
-
end
|
23
|
-
|
24
|
-
# helper method for assemblage
|
25
|
-
# @see Marko::Services::Assemble
|
26
|
-
def assemble(&block)
|
27
|
-
Services::Assemble.(&block)
|
28
|
-
end
|
29
|
-
|
30
|
-
# helper method for compilation
|
31
|
-
# @see Marko::Services::Compile
|
32
|
-
def compile(tree: nil, template: '', filename: '', &block)
|
33
|
-
Services::Compile.(
|
34
|
-
tree: tree, template: template, filename: filename, &block)
|
35
|
-
end
|
36
|
-
end
|
37
13
|
end
|
metadata
CHANGED
@@ -1,19 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marko
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- nvoynov
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies: []
|
13
|
-
description:
|
14
|
-
Marko supplies a "docs-as-code" approach for compiling bulky software artifacts by providing source storage, original plain text markup, compiler templates, command-line and Gem interfaces.
|
15
|
-
|
16
|
-
Having the assembled artifact, it can be analyzed, enriched by extra data, served as a source for deriving subdued artifacts, etc.
|
12
|
+
description: Marko assembles separated markup sources into one artifact tree.
|
17
13
|
email:
|
18
14
|
- nvoynov@gmail.com
|
19
15
|
executables:
|
@@ -21,62 +17,61 @@ executables:
|
|
21
17
|
extensions: []
|
22
18
|
extra_rdoc_files: []
|
23
19
|
files:
|
20
|
+
- ".dockerignore"
|
21
|
+
- ".rubocop.yml"
|
24
22
|
- CHANGELOG.md
|
25
|
-
-
|
26
|
-
-
|
23
|
+
- Dockerfile
|
24
|
+
- LICENSE.txt
|
27
25
|
- README.md
|
28
26
|
- Rakefile
|
29
27
|
- exe/marko
|
30
|
-
- lib/
|
31
|
-
- lib/assets/demo/src/fr/assemble.md
|
32
|
-
- lib/assets/demo/src/fr/compile.md
|
33
|
-
- lib/assets/demo/src/fr/markup.md
|
34
|
-
- lib/assets/demo/src/fr/storage.md
|
35
|
-
- lib/assets/demo/src/fr/treenode.md
|
36
|
-
- lib/assets/demo/src/index.md
|
37
|
-
- lib/assets/demo/src/intro.md
|
38
|
-
- lib/assets/demo/src/ui/cli.md
|
39
|
-
- lib/assets/demo/src/ui/gem.md
|
40
|
-
- lib/assets/demo/src/ur/uc.create.project.md
|
41
|
-
- lib/assets/demo/src/ur/uc.general.flow.md
|
42
|
-
- lib/assets/init/README.md
|
43
|
-
- lib/assets/init/Rakefile
|
44
|
-
- lib/assets/init/tt/artifact.md.tt
|
28
|
+
- lib/basic.rb
|
45
29
|
- lib/marko.rb
|
46
|
-
- lib/marko/
|
47
|
-
- lib/marko/assembler.rb
|
30
|
+
- lib/marko/chain.rb
|
48
31
|
- lib/marko/cli.rb
|
49
|
-
- lib/marko/compiler.rb
|
50
32
|
- lib/marko/config.rb
|
51
|
-
- lib/marko/
|
52
|
-
- lib/marko/
|
53
|
-
- lib/marko/
|
54
|
-
- lib/marko/
|
55
|
-
- lib/marko/
|
56
|
-
- lib/marko/markup.rb
|
57
|
-
- lib/marko/markup/compiler.rb
|
58
|
-
- lib/marko/markup/decorator.rb
|
59
|
-
- lib/marko/markup/macro.rb
|
60
|
-
- lib/marko/markup/parser.rb
|
61
|
-
- lib/marko/markup/storage.rb
|
62
|
-
- lib/marko/markup/validator.rb
|
33
|
+
- lib/marko/errors.rb
|
34
|
+
- lib/marko/model.rb
|
35
|
+
- lib/marko/model/markup.rb
|
36
|
+
- lib/marko/model/topic.rb
|
37
|
+
- lib/marko/model/tree_node.rb
|
63
38
|
- lib/marko/parser.rb
|
64
|
-
- lib/marko/
|
65
|
-
- lib/marko/
|
66
|
-
- lib/marko/
|
67
|
-
- lib/marko/
|
68
|
-
- lib/marko/
|
69
|
-
- lib/marko/
|
39
|
+
- lib/marko/parser/metadata.rb
|
40
|
+
- lib/marko/parser/source.rb
|
41
|
+
- lib/marko/parser/topic.rb
|
42
|
+
- lib/marko/renderers.rb
|
43
|
+
- lib/marko/renderers/artifact.rb
|
44
|
+
- lib/marko/renderers/content.rb
|
45
|
+
- lib/marko/renderers/link.rb
|
46
|
+
- lib/marko/renderers/metadata.rb
|
47
|
+
- lib/marko/renderers/nested_list.rb
|
48
|
+
- lib/marko/renderers/nested_tree.rb
|
49
|
+
- lib/marko/renderers/renderer.rb
|
50
|
+
- lib/marko/renderers/title.rb
|
51
|
+
- lib/marko/renderers/topic.rb
|
52
|
+
- lib/marko/renderers/url.rb
|
53
|
+
- lib/marko/scanner.rb
|
54
|
+
- lib/marko/tasks.rb
|
55
|
+
- lib/marko/tasks/assemble.rb
|
56
|
+
- lib/marko/tasks/compile.rb
|
57
|
+
- lib/marko/tasks/load.rb
|
58
|
+
- lib/marko/tasks/parse.rb
|
59
|
+
- lib/marko/tasks/scan.rb
|
60
|
+
- lib/marko/tasks/validate.rb
|
61
|
+
- lib/marko/validators.rb
|
62
|
+
- lib/marko/validators/lost_index.rb
|
63
|
+
- lib/marko/validators/lost_links.rb
|
64
|
+
- lib/marko/validators/lost_parent.rb
|
65
|
+
- lib/marko/validators/non_unique_id.rb
|
70
66
|
- lib/marko/version.rb
|
71
|
-
- marko.gemspec
|
72
67
|
homepage: https://github.com/nvoynov/marko
|
73
|
-
licenses:
|
68
|
+
licenses:
|
69
|
+
- MIT
|
74
70
|
metadata:
|
75
71
|
allowed_push_host: https://rubygems.org
|
76
72
|
homepage_uri: https://github.com/nvoynov/marko
|
77
73
|
source_code_uri: https://github.com/nvoynov/marko
|
78
74
|
changelog_uri: https://github.com/nvoynov/marko/CHANGELOG.md
|
79
|
-
post_install_message:
|
80
75
|
rdoc_options: []
|
81
76
|
require_paths:
|
82
77
|
- lib
|
@@ -84,16 +79,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
84
79
|
requirements:
|
85
80
|
- - ">="
|
86
81
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
82
|
+
version: '3.4'
|
88
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
84
|
requirements:
|
90
85
|
- - ">="
|
91
86
|
- !ruby/object:Gem::Version
|
92
87
|
version: '0'
|
93
88
|
requirements: []
|
94
|
-
rubygems_version: 3.
|
95
|
-
signing_key:
|
89
|
+
rubygems_version: 3.6.9
|
96
90
|
specification_version: 4
|
97
|
-
summary: Marko is a
|
98
|
-
and compiles it into a deliverable artifact.
|
91
|
+
summary: Marko is a markdown separate sources compiler.
|
99
92
|
test_files: []
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
marko (0.1.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
minitest (5.16.3)
|
10
|
-
rake (13.0.6)
|
11
|
-
|
12
|
-
PLATFORMS
|
13
|
-
x64-mingw32
|
14
|
-
x86_64-linux
|
15
|
-
|
16
|
-
DEPENDENCIES
|
17
|
-
marko!
|
18
|
-
minitest (~> 5.0)
|
19
|
-
rake (~> 13.0)
|
20
|
-
|
21
|
-
BUNDLED WITH
|
22
|
-
2.4.1
|
data/lib/assets/demo/README.md
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
% Marko Demo Project
|
2
|
-
|
3
|
-
# Overview
|
4
|
-
|
5
|
-
This project is an example of developing bulky technical artifacts with Marko Markup Compiler. It also serves as a sandbox for testing and features development.
|
6
|
-
|
7
|
-
# Usage
|
8
|
-
|
9
|
-
Run `$ marko` to see command-line interface
|
10
|
-
|
11
|
-
Run `$ rake marko:publish` to publish the aritfact
|
12
|
-
|
13
|
-
Run `$ rake -T` to see other custom interface
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# Assemble artifact
|
2
|
-
{{id: .assemble, parent: fr}}
|
3
|
-
|
4
|
-
The system shall provide the function to assemble artifact.
|
5
|
-
|
6
|
-
__Input__
|
7
|
-
|
8
|
-
* NO
|
9
|
-
|
10
|
-
__Output__
|
11
|
-
|
12
|
-
Parameter Type 0..* Description
|
13
|
-
--------- -------- ---- --------------
|
14
|
-
tree TreeNode 1 assembled tree
|
15
|
-
|
16
|
-
__Flow__
|
17
|
-
|
18
|
-
@@todo provide id for required functions and change steps with appropriate links
|
19
|
-
|
20
|
-
1. get list of project sources
|
21
|
-
2. parse sources buffering nodes and errors
|
22
|
-
3. fail "parsing errors" if errors.any?
|
23
|
-
4. assemble artifact from buffer of nodes
|
24
|
-
5. generate and inject auto ids
|
25
|
-
6. validate artifact buffering errors
|
26
|
-
7. fail "tree errors" if errors.any?
|
27
|
-
8. return artifact
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# Compile artifact
|
2
|
-
{{id: .compile, parent: fr}}
|
3
|
-
|
4
|
-
The system shall provide the function to create deliverable artifact.
|
5
|
-
|
6
|
-
__Input__
|
7
|
-
|
8
|
-
Parameter Type 0..* Description
|
9
|
-
--------- -------- ---- --------------
|
10
|
-
tree TreeNode 1 assembled tree
|
11
|
-
template String 1 ERB template
|
12
|
-
filename String 1 filename
|
13
|
-
|
14
|
-
__Output__
|
15
|
-
|
16
|
-
The output of the function must be well-formed deliverable with `filename` built on `template` parameter.
|
17
|
-
|
18
|
-
__Flow__
|
19
|
-
|
20
|
-
@@todo provide id for required functions and change steps with appropriate links
|
21
|
-
|
22
|
-
1. `tree` = [[fr.assemble]] unless `tree`
|
23
|
-
2. load template body from `template`
|
24
|
-
3. backup `filename` to `<filename>~`
|
25
|
-
4. render `template` for each node of `tree` into `filename`
|