Class: Apipie::Extractor::Writer

Inherits:
Object
  • Object
show all
Defined in:
lib/apipie/extractor/writer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(collector) ⇒ Writer

Returns a new instance of Writer.



7
8
9
# File 'lib/apipie/extractor/writer.rb', line 7

def initialize(collector)
  @collector = collector
end

Class Method Details

.examples_fileObject



55
56
57
# File 'lib/apipie/extractor/writer.rb', line 55

def self.examples_file
  File.join(Rails.root,Apipie.configuration.doc_path,"apipie_examples.json")
end

.load_recorded_examplesObject



47
48
49
50
51
52
53
# File 'lib/apipie/extractor/writer.rb', line 47

def self.load_recorded_examples
  examples_file = self.examples_file
  if File.exists?(examples_file)
    return load_json_examples
  end
  return {}
end

.update_action_description(controller, action) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/apipie/extractor/writer.rb', line 29

def self.update_action_description(controller, action)
  updater = ActionDescriptionUpdater.new(controller, action)
  yield updater
  updater.write!
rescue ActionDescriptionUpdater::ControllerNotFound
  logger.warn("REST_API: Couldn't find controller file for #{controller}")
rescue ActionDescriptionUpdater::ActionNotFound
  logger.warn("REST_API: Couldn't find action #{action} in #{controller}")
end

.write_recorded_examples(examples) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/apipie/extractor/writer.rb', line 39

def self.write_recorded_examples(examples)
  examples_file = self.examples_file
  FileUtils.mkdir_p(File.dirname(examples_file))
  File.open(examples_file, "w") do |f|
    f << JSON.pretty_generate(OrderedHash[*examples.sort_by(&:first).flatten(1)])
  end
end

Instance Method Details

#write_docsObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/apipie/extractor/writer.rb', line 16

def write_docs
  descriptions = @collector.finalize_descriptions
  descriptions.each do |_, desc|
    if desc[:api].empty?
      logger.warn("REST_API: Couldn't find any path for #{desc_to_s(desc)}")
      next
    end
    self.class.update_action_description(desc[:controller], desc[:action]) do |u|
      u.update_generated_description desc
    end
  end
end

#write_examplesObject



11
12
13
14
# File 'lib/apipie/extractor/writer.rb', line 11

def write_examples
  merged_examples = merge_old_new_examples
  self.class.write_recorded_examples(merged_examples)
end