class ColonizeRepo

Creates clerq repository sources in current work directory Warning! Change work dierectory before calling for the serice Usage

node = Clerq.node_repository.assembly
Dir.chdir(Clerq.src) { ColonizeRepo.(node) }

Constants

TEMPLATE

Public Class Methods

new(node, on_create_dir = nil, on_create_file = nil) click to toggle source

@param node [Node] the node for colonization @param on_create_file [Block(arg)] on create new file callback @param on_create_dir [Block(arg)] on create new directory callback

# File lib/assets/lib/colonize_repo.rb, line 35
def initialize(node, on_create_dir = nil, on_create_file = nil)
  @node = node
  @on_create_dir = on_create_dir
  @on_create_file = on_create_file
end

Public Instance Methods

call() click to toggle source
# File lib/assets/lib/colonize_repo.rb, line 14
def call
  write(@node)
end
filename(node) click to toggle source
# File lib/assets/lib/colonize_repo.rb, line 57
def filename(node)
  "#{node.id} #{node.title}.md"
end
folder(node) click to toggle source
# File lib/assets/lib/colonize_repo.rb, line 47
def folder(node)
  dir = ''
  n = node
  while n != @node.root && n.parent != @node.root
    dir = File.join("#{n.parent.id} #{n.parent.title}", dir)
    n = n.parent
  end
  dir
end
source(node) click to toggle source
# File lib/assets/lib/colonize_repo.rb, line 41
def source(node)
  fld = folder(node)
  src = filename(node)
  fld.empty? ? src : File.join(fld, src)
end
text(node) click to toggle source

TODO replace to services

# File lib/assets/lib/colonize_repo.rb, line 62
def text(node)
  RenderErb.(erb: TEMPLATE, object: node)
end
write(node) click to toggle source

TODO callback? and calback for ReadNode.()?

# File lib/assets/lib/colonize_repo.rb, line 19
def write(node)
  dir = folder(node)
  src = source(node)
  txt = text(node)
  unless dir.empty? || Dir.exist?(dir)
    Dir.mkdir(dir)
    @on_create_dir.call(dir) if @on_create_dir
  end
  File.write(src, txt)
  @on_create_file.call(src) if @on_create_file
  node.items.reject{|n| n.items.empty?}.each{|n| write(n)}
end