Class: Writexlsx::Package::Comments

Inherits:
Object
  • Object
show all
Includes:
Utility
Defined in:
lib/write_xlsx/package/comments.rb

Constant Summary

Constants included from Utility

Utility::CHAR_WIDTHS, Utility::COL_MAX, Utility::DEFAULT_COL_PIXELS, Utility::MAX_DIGIT_WIDTH, Utility::PADDING, Utility::PERL_TRUE_VALUES, Utility::ROW_MAX, Utility::SHEETNAME_MAX, Utility::STR_MAX

Instance Method Summary collapse

Methods included from Utility

#absolute_char, #check_dimensions, #check_dimensions_and_update_max_min_values, #check_parameter, #color, #convert_date_time, #convert_font_args, #dash_types, delete_files, #escape_url, #fill_properties, #float_to_str, #get_font_latin_attributes, #get_font_style_attributes, #layout_properties, #legend_properties, #line_fill_properties, #line_properties, #palette_color_from_index, #params_to_font, #pattern_properties, #pixels_to_points, #ptrue?, #put_deprecate_message, #quote_sheetname, #r_id_attributes, #row_col_notation, #shape_style_base, #store_col_max_min_values, #store_row_max_min_values, #substitute_cellref, #underline_attributes, #v_shape_attributes_base, #v_shape_style_base, #value_or_raise, #write_a_body_pr, #write_a_def_rpr, #write_a_end_para_rpr, #write_a_lst_style, #write_a_p_formula, #write_a_p_pr_formula, #write_a_solid_fill, #write_a_srgb_clr, #write_anchor, #write_auto_fill, #write_comment_path, #write_def_rpr_r_pr_common, #write_div, #write_fill, #write_font, #write_stroke, #write_tx_pr, #write_xml_declaration, #xl_cell_to_rowcol, #xl_col_to_name, #xl_range, #xl_range_formula, #xl_rowcol_to_cell, #xl_string_pixel_width, #xml_str

Constructor Details

#initialize(worksheet) ⇒ Comments

Returns a new instance of Comments.



248
249
250
251
252
253
# File 'lib/write_xlsx/package/comments.rb', line 248

def initialize(worksheet)
  @worksheet = worksheet
  @writer = Package::XMLWriterSimple.new
  @author_ids = {}
  @comments = {}
end

Instance Method Details

#[](row) ⇒ Object



255
256
257
# File 'lib/write_xlsx/package/comments.rb', line 255

def [](row)
  @comments[row]
end

#add(workbook, worksheet, row, col, string, options) ⇒ Object



259
260
261
262
# File 'lib/write_xlsx/package/comments.rb', line 259

def add(workbook, worksheet, row, col, string, options)
  @comments[row] ||= {}
  @comments[row][col] = [workbook, worksheet, row, col, string, options]
end

#assemble_xml_fileObject



276
277
278
279
280
281
282
283
# File 'lib/write_xlsx/package/comments.rb', line 276

def assemble_xml_file
  write_xml_declaration do
    write_comments do
      write_authors(sorted_comments)
      write_comment_list(sorted_comments)
    end
  end
end

#empty?Boolean

Returns:

  • (Boolean)


264
265
266
# File 'lib/write_xlsx/package/comments.rb', line 264

def empty?
  @comments.empty?
end

#has_comment_in_row?(row) ⇒ Boolean

Returns:

  • (Boolean)


308
309
310
# File 'lib/write_xlsx/package/comments.rb', line 308

def has_comment_in_row?(row)
  !!@comments[row]
end

#set_xml_writer(filename) ⇒ Object



272
273
274
# File 'lib/write_xlsx/package/comments.rb', line 272

def set_xml_writer(filename)
  @writer.set_xml_writer(filename)
end

#sizeObject



268
269
270
# File 'lib/write_xlsx/package/comments.rb', line 268

def size
  sorted_comments.size
end

#sorted_commentsObject



285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/write_xlsx/package/comments.rb', line 285

def sorted_comments
  unless @sorted_comments
    @sorted_comments = []
    # We sort the comments by row and column but that isn't strictly required.
    @comments.keys.sort.each do |row|
      @comments[row].keys.sort.each do |col|
        user_options = @comments[row][col]
        comment = Comment.new(*user_options)
        @comments[row][col] = comment

        # Set comment visibility if required and not already user defined.
        @comments[row][col].visible ||= 1 if comments_visible?

        # Set comment author if not already user defined.
        @comments[row][col].author ||= @worksheet.comments_author
        @sorted_comments << @comments[row][col]
      end
    end
  end

  @sorted_comments
end