Class: Clerq::Services::ReadNode

Inherits:
Service
  • Object
show all
Defined in:
lib/clerq/services/read_node.rb

Overview

The service reads nodes from file and returns array of nodes It returns array because the file can have a few root nodes

Instance Method Summary collapse

Methods inherited from Service

call

Constructor Details

#initialize(filename, on_error = nil) ⇒ ReadNode

Returns a new instance of ReadNode.

Parameters:

  • filename (String)

    input file for reading

  • on_error (Proc) (defaults to: nil)

    proc object {|error| …}



31
32
33
34
35
# File 'lib/clerq/services/read_node.rb', line 31

def initialize(filename, on_error = nil)
  @filename = filename
  @on_error = on_error
  @node = Node.new(id: filename)
end

Instance Method Details

#callObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/clerq/services/read_node.rb', line 13

def call
  # FIXME: something wrong here when foreach!
  #
  text = File.read(@filename)
  read_nodes(text) do |node_text|
    level, node = parse_node(node_text)
    next unless node
    node[:filename] = @filename
    insert_node(node, level)
  end

  ary = Array.new(@node.items)
  ary.each(&:orphan!)
  ary
end