Class: Apipie::Extractor::ActionDescriptionUpdater

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

Defined Under Namespace

Classes: ActionNotFound, ControllerNotFound

Instance Method Summary collapse

Constructor Details

#initialize(controller, action) ⇒ ActionDescriptionUpdater

Returns a new instance of ActionDescriptionUpdater.



147
148
149
150
# File 'lib/apipie/extractor/writer.rb', line 147

def initialize(controller, action)
  @controller = controller
  @action = action
end

Instance Method Details

#generated?Boolean

Returns:

  • (Boolean)


152
153
154
# File 'lib/apipie/extractor/writer.rb', line 152

def generated?
  old_header.include?(Apipie.configuration.generated_doc_disclaimer)
end

#old_headerObject



178
179
180
181
182
183
184
185
# File 'lib/apipie/extractor/writer.rb', line 178

def old_header
  return @old_header if defined? @old_header
  @old_header = lines_above_method[/^\s*?#{Regexp.escape(Apipie.configuration.generated_doc_disclaimer)}.*/m]
  @old_header ||= lines_above_method[/^\s*?\b(api|params|error|example)\b.*/m]
  @old_header ||= ""
  @old_header.sub!(/\A\s*\n/,"")
  @old_header = align_indented(@old_header)
end

#update(new_header) ⇒ Object



174
175
176
# File 'lib/apipie/extractor/writer.rb', line 174

def update(new_header)
  overwrite_header(new_header)
end

#update_apis(apis) ⇒ Object



156
157
158
159
160
161
162
163
164
165
# File 'lib/apipie/extractor/writer.rb', line 156

def update_apis(apis)
  new_header = ""
  new_header << Apipie.configuration.generated_doc_disclaimer << "\n" if generated?
  new_header << generate_apis_code(apis)
  new_header << ensure_line_breaks(old_header.lines).reject do |line|
    line.include?(Apipie.configuration.generated_doc_disclaimer) ||
      line =~ /^api/
  end.join
  overwrite_header(new_header)
end

#update_generated_description(desc) ⇒ Object



167
168
169
170
171
172
# File 'lib/apipie/extractor/writer.rb', line 167

def update_generated_description(desc)
  if generated? || old_header.empty?
    new_header = generate_code(desc)
    overwrite_header(new_header)
  end
end

#write!Object



187
188
189
190
# File 'lib/apipie/extractor/writer.rb', line 187

def write!
  File.open(controller_path, "w") { |f| f << @controller_content }
  @changed=false
end