Class: Xxx2json::Core

Inherits:
Object
  • Object
show all
Defined in:
lib/xxx2json/core.rb

Instance Method Summary collapse

Constructor Details

#initializeCore

Returns a new instance of Core.



11
12
# File 'lib/xxx2json/core.rb', line 11

def initialize
end

Instance Method Details

#convert_csv(buffer, col_sep, headers) ⇒ Object



14
15
16
17
18
# File 'lib/xxx2json/core.rb', line 14

def convert_csv(buffer, col_sep, headers)
  CSV.parse(buffer, col_sep: col_sep, headers: headers.nil?).map do |row|
    headers.nil? ? row.to_hash : Hash[*headers.zip(row).flatten]
  end
end

#convert_regexp(buffer, format) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/xxx2json/core.rb', line 20

def convert_regexp(buffer, format)
  format = format.gsub(/^\/(.+)\/$/, '\1')
  parser = Fluent::TextParser::RegexpParser.new(Regexp.new(format))
  results = []
  begin
    buffer.lines.each_with_index do |line, i|
      line = line.strip
      time, parsed = parser.call(line)
      if parsed.nil?
        STDERR.puts "format error! line #{i + 1} [#{line}]"
      end
      results << parsed unless parsed.nil? 
    end
  rescue ArgumentError, RegexpError => e
    STDERR.puts "\n#{e.message}\n#{e.backtrace.join("\n")}"
    parsed_time = parsed = nil
  end
  results
end

#convert_rss(buffer) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/xxx2json/core.rb', line 40

def convert_rss(buffer)
	rss = Crack::XML.parse(buffer)
  if rss.key?('rss')
    display = rss['rss']['channel']['item']
  elsif rss.key?('rdf:RDF')
    display = rss['rdf:RDF']['item']
  elsif rss.key?('root')
    display = rss['root']['articles']['article']
  elsif rss.key?('feed')
    display = rss['feed']['entry']
  end
  display
end