Module: Marko

Defined in:
lib/marko.rb,
lib/marko/cli.rb,
lib/marko/chain.rb,
lib/marko/model.rb,
lib/marko/tasks.rb,
lib/marko/config.rb,
lib/marko/errors.rb,
lib/marko/parser.rb,
lib/marko/scanner.rb,
lib/marko/version.rb,
lib/marko/renderers.rb,
lib/marko/tasks/load.rb,
lib/marko/tasks/scan.rb,
lib/marko/validators.rb,
lib/marko/model/topic.rb,
lib/marko/tasks/parse.rb,
lib/marko/model/markup.rb,
lib/marko/parser/topic.rb,
lib/marko/parser/source.rb,
lib/marko/renderers/url.rb,
lib/marko/tasks/compile.rb,
lib/marko/renderers/link.rb,
lib/marko/tasks/assemble.rb,
lib/marko/tasks/validate.rb,
lib/marko/model/tree_node.rb,
lib/marko/parser/metadata.rb,
lib/marko/renderers/title.rb,
lib/marko/renderers/topic.rb,
lib/marko/renderers/content.rb,
lib/marko/renderers/artifact.rb,
lib/marko/renderers/metadata.rb,
lib/marko/renderers/renderer.rb,
lib/marko/renderers/nested_list.rb,
lib/marko/renderers/nested_tree.rb,
lib/marko/validators/lost_index.rb,
lib/marko/validators/lost_links.rb,
lib/marko/validators/lost_parent.rb,
lib/marko/validators/non_unique_id.rb

Overview

Marko marckup generator namespace

Defined Under Namespace

Modules: CLI, Chain, Model, Parser, Renderers, Tasks, Validators Classes: CompilerError, MarkoError, ParserError, Scanner, StageError, ValidatorError

Constant Summary collapse

VERSION =
'0.4.0'
CONFIG =
'marko.yml'
Config =
Data.define(:artifact, :title, :author, :order_index) do
  def initialize(artifact: 'artifact.md', title: 'title',
    author: 'author', order_index: '')
    super
  end
end

Class Method Summary collapse

Class Method Details

.assemble(pattern) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/marko/chain.rb', line 22

def self.assemble(pattern)
  chain = [
    Tasks::Load.new,
    Tasks::Scan.new,
    Tasks::Parse.new,
    Tasks::Assemble.new(Marko.read_config(Marko::CONFIG)),
    Tasks::Validate.new
  ]
  Chain.call(chain, pattern)
end

.compile(pattern) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/marko/chain.rb', line 33

def self.compile(pattern)
  chain = [
    Tasks::Load.new,
    Tasks::Scan.new,
    Tasks::Parse.new,
    Tasks::Assemble.new(Marko.read_config(Marko::CONFIG)),
    Tasks::Validate.new,
    Tasks::Compile.new
  ]
  Chain.call(chain, pattern)
end

.read_config(filename) ⇒ Object



16
17
18
19
20
21
# File 'lib/marko/config.rb', line 16

def self.read_config(filename)
  dump = File.read(filename)
  Psych.load(dump)
    .transform_keys(&:to_sym)
    .then{ Config.new(**it) }
end

.write_config(filename, config = Config.new) ⇒ Object



23
24
25
26
27
28
# File 'lib/marko/config.rb', line 23

def self.write_config(filename, config = Config.new)
  data = config.to_h.transform_keys(&:to_s)
  
  dump = Psych.dump(data)
  File.write(filename, dump)
end