Class FileBackend::Parser
In: lib/nukumi2/filebackend.rb
Parent: Object

Methods

parse  

Public Class methods

[Source]

    # File lib/nukumi2/filebackend.rb, line 7
 7:     def self.parse(io)
 8:       entry = Nukumi2::Entry.new
 9: 
10:       fields = {}
11: 
12:       while line = io.gets
13:         line.chomp!
14:         break  if line.empty?
15: 
16:         if line =~ /^(\w\S+?):\s*(.*)/
17:           field = $1.downcase
18:           fields[field] = $2
19:         elsif field
20:           fields[field] << " " << line.lstrip
21:         end
22:       end
23:       
24:       fields.each { |field, value|
25:         case field
26:         when "category"
27:           entry.categories.concat value.split.map { |c| c.strip }
28:         when "date"
29:           entry.time = Time.parse value
30:         when "subject"
31:           entry.title = value
32:         else
33:           if entry.respond_to? field + "="
34:             entry.send field + "=", value
35:           else
36:             entry.fields[field] = value
37:           end
38:         end
39:       }
40: 
41:       entry.content = io.read
42: 
43:       entry
44:     end

[Validate]