Class: Kiba::Extend::Destinations::JsonArray

Inherits:
Object
  • Object
show all
Includes:
Destinationable
Defined in:
lib/kiba/extend/destinations/json_array.rb

Overview

Writes each row as a valid JSON object that is an element in a JSON array

This is simliar to the idea of, but not technically compliant with, JSON Lines

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Destinationable

#ensure_dir, included, is_destination?

Constructor Details

#initialize(filename:) ⇒ JsonArray

Returns a new instance of JsonArray.

Parameters:

  • filename (String)

    path for writing JSON file



31
32
33
34
35
# File 'lib/kiba/extend/destinations/json_array.rb', line 31

def initialize(filename:)
  @filename = filename
  ensure_dir
  @json = []
end

Class Method Details

.as_source_classObject



17
# File 'lib/kiba/extend/destinations/json_array.rb', line 17

def as_source_class = nil

.default_file_optionsObject



19
# File 'lib/kiba/extend/destinations/json_array.rb', line 19

def default_file_options = nil

.options_keyObject



21
# File 'lib/kiba/extend/destinations/json_array.rb', line 21

def options_key = nil

.path_keyObject



23
# File 'lib/kiba/extend/destinations/json_array.rb', line 23

def path_key = :filename

.requires_path?Boolean

Returns:

  • (Boolean)


25
# File 'lib/kiba/extend/destinations/json_array.rb', line 25

def requires_path? = true

.special_optionsObject



27
# File 'lib/kiba/extend/destinations/json_array.rb', line 27

def special_options = []

Instance Method Details

#closeObject



53
54
55
# File 'lib/kiba/extend/destinations/json_array.rb', line 53

def close
  File.open(filename, "w") { |f| f << json.to_json }
end

#fieldsArray<Symbol>

Returns:

  • (Array<Symbol>)


38
39
40
41
42
43
44
45
# File 'lib/kiba/extend/destinations/json_array.rb', line 38

def fields
  return [] unless File.exist?(filename)

  JSON.parse(File.read(filename))
    .map(&:keys)
    .flatten
    .uniq
end

#write(row) ⇒ Object



48
49
50
# File 'lib/kiba/extend/destinations/json_array.rb', line 48

def write(row)
  json << row
end