Module: Prawn::Extras::DynamicRepeater
- Defined in:
- lib/prawn/extras/dynamic_repeater.rb
Overview
Exemplo de utilização: Deseja-se agrupar alunos por curso, e cada vez que o curso muda há uma quebra de página, de forma que o nome do curso deve ser impresso no cabeçalho do relatório, sempre o curso do grupo atual de alunos.
Nesse caso, no cabeçalho terá algo do tipo: ‘text(valor_na_pagina(:nome_curso, page_number))’
E, dentro do ‘.each’ que itera sobre os cursos, algo do tipo: cursos.each do |curso|
start_new_line
set_valor_na_pagina(:nome_curso, curso, page_number)
/* Tabela de alunos */
end
Instance Method Summary collapse
-
#store_value_in_page(key, value, page = page_number) ⇒ Object
Saves a named value for a specific page of the generated PDF.
-
#value_in_page(key, page, default_value = '') ⇒ Object
Returns the value for a key at a specific page.
Instance Method Details
#store_value_in_page(key, value, page = page_number) ⇒ Object
Saves a named value for a specific page of the generated PDF. This will save the value for the specified page and also fill any page gaps with the latest previous value submitted.
Example:
store_value_in_page(:name, ‘John’, 3)
This will save the value “John” at the :name key for the pages 1, 2 and 3. Any subsequent calls to this method (for the same key) will not override these values.
44 45 46 47 48 49 50 |
# File 'lib/prawn/extras/dynamic_repeater.rb', line 44 def store_value_in_page(key, value, page = page_number) latest_value = value_in_page(key, page) # Gets the last value submitted (page - 1).downto(max_index(key)).each do |page_index| repeater_values(key)[page_index] = latest_value end repeater_values(key)[page] = value end |
#value_in_page(key, page, default_value = '') ⇒ Object
Returns the value for a key at a specific page. If the page is greater than the highest saved page, the highest value is returned.
Examples:
save_repeater_value(:name, ‘John’, 3) save_repeater_value(:name, ‘Jane’, 5)
value_in_page(:name, 1) => “John” value_in_page(:name, 2) => “John” value_in_page(:name, 3) => “John” value_in_page(:name, 4) => “Jane” value_in_page(:name, 5) => “Jane” value_in_page(:name, 6) => “Jane” value_in_page(:name, -1) => “”
68 69 70 |
# File 'lib/prawn/extras/dynamic_repeater.rb', line 68 def value_in_page(key, page, default_value = '') repeater_values(key)[[page, max_index(key)].min] || default_value end |