Module: Lydown::Rendering::Movement

Defined in:
lib/lydown/rendering/movement.rb

Constant Summary collapse

PAGE_BREAKS =
{
  'before' => {before: true},
  'after'  => {after: true},
  'before and after' => {before: true, after: true},
  'blank page before' => {blank_page_before: true},
  'bookpart before' => {bookpart_before: true}
}

Class Method Summary collapse

Class Method Details

.bookparts(context, opts) ⇒ Object

Groups movements by bookparts. Whenever a movement requires a page break before, a new group is created



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/lydown/rendering/movement.rb', line 51

def self.bookparts(context, opts)
  groups = []; current_group = []
  context[:movements].keys.each do |movement|
    breaks = page_breaks(context, opts.merge(movement: movement))
    if breaks[:before] || breaks[:blank_page_before]
      groups << current_group unless current_group.empty?
      current_group = []
    end
    current_group << movement
  end
  groups << current_group unless current_group.empty?
  
  groups
end

.hide_bar_numbers?(context, opts) ⇒ Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/lydown/rendering/movement.rb', line 66

def self.hide_bar_numbers?(context, opts)
  context.get_setting(:bar_numbers, opts) == 'hide'
end

.movement_title(context, name) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/lydown/rendering/movement.rb', line 3

def self.movement_title(context, name)
  return nil if name.nil? || name.empty?
  
  if t = context.get_setting('movement_title', movement: name)
    title = t
  elsif name =~ /^(?:([0-9]+)([a-z]*))\-(.+)$/
    title = "#{$1.to_i}#{$2}. #{$3.capitalize}"
  else
    title = name
  end
  
  if context["movements/#{name}/parts"].empty?
    title += " - tacet"
  end
  
  title
end

.page_breaks(context, opts) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/lydown/rendering/movement.rb', line 33

def self.page_breaks(context, opts)
  setting = case context.render_mode
  when :score
    context.get_setting('score/page_break', opts)
  when :part
    part = opts[:part] || context[:part] || context['render_opts/parts']
    
    context.get_setting(:page_break, opts.merge(part: part)) ||
      context.get_setting('parts/page_break', opts)
  else
    {}
  end
  
  PAGE_BREAKS[setting] || {}
end

.tacet?(context, name) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/lydown/rendering/movement.rb', line 21

def self.tacet?(context, name)
  context["movements/#{name}/parts"].empty?      
end