class Clerq::Repositories::NodeRepository
Public Class Methods
new(path: Dir.pwd, pattern: '*.md')
click to toggle source
Calls superclass method
Clerq::Repositories::FileRepository::new
# File lib/clerq/repositories/node_repository.rb, line 14 def initialize(path: Dir.pwd, pattern: '*.md') super(path: path, pattern: pattern) end
Public Instance Methods
assemble(on_parse: nil, on_error: nil)
click to toggle source
asseble repository nodes hierarchy @return [Node]
# File lib/clerq/repositories/node_repository.rb, line 25 def assemble(on_parse: nil, on_error: nil) @node = Node.new(id: 'join', title: Clerq.title) loadn = load(on_parse: on_parse, on_error: on_error) loadn.each{|n| @node << n} subo! eqid! if @node.items.size == 1 @node = @node.items.first @node.orphan! end @node end
save(node)
click to toggle source
# File lib/clerq/repositories/node_repository.rb, line 18 def save(node) check! node write("#{node.id}.md", markup(node)) end
Protected Instance Methods
check!(node)
click to toggle source
# File lib/clerq/repositories/node_repository.rb, line 77 def check!(node) return if node.is_a? Node errmsg = "Invalid argument" raise ArgumentError, errmsg, caller #caller[1..-1] end
eqid!()
click to toggle source
# File lib/clerq/repositories/node_repository.rb, line 64 def eqid! counter = {} @node.select{|n| n.id.empty?}.each do |n| # TODO maybe just .to_a.drop(1).select ? next if n == @node index = counter[n.parent] || 1 counter[n.parent] = index + 1 id = index.to_s.rjust(2, '0') id = '.' + id unless n.parent == @node n.id = id end end
load(on_parse: nil, on_error: nil)
click to toggle source
# File lib/clerq/repositories/node_repository.rb, line 40 def load(on_parse: nil, on_error: nil) inside do [].tap do |ary| glob.each do |file| on_parse.call(file) if on_parse tmp = ReadNode.(file, on_error) tmp.each{|node| ary << node } end end end end
markup(n)
click to toggle source
# File lib/clerq/repositories/node_repository.rb, line 83 def markup(n) head = "# [#{n.id}] #{n.title}" meta = n.meta.empty? ? '' : n.meta .map{|k,v| "#{k}: #{v}"} .unshift("{{") .push("}}") .join("\n") [head].tap do |txt| txt << "\n#{meta}" unless meta.empty? txt << "\n\n#{n.body}" unless n.body.empty? end.join + "\n" end
subo!()
click to toggle source
# File lib/clerq/repositories/node_repository.rb, line 52 def subo! @node.items .select{|n| n[:parent] && n[:parent] != n.parent.id} .each{|n| parent = @node.node(n[:parent]) next unless parent parent << n @node.items.delete(n) n.meta.delete(:parent) } end