Class: Clef::Engraving::GlyphTable

Inherits:
Object
  • Object
show all
Defined in:
lib/clef/engraving/glyph_table.rb

Constant Summary collapse

GLYPHS =
{
  notehead_black: "\uE0A4",
  notehead_half: "\uE0A3",
  notehead_whole: "\uE0A2",
  stem: "\uE210",
  flag_8th_up: "\uE240",
  flag_8th_down: "\uE241",
  flag_16th_up: "\uE242",
  flag_16th_down: "\uE243",
  rest_whole: "\uE4E3",
  rest_half: "\uE4E4",
  rest_quarter: "\uE4E5",
  rest_8th: "\uE4E6",
  rest_16th: "\uE4E7",
  clef_treble: "\uE050",
  clef_bass: "\uE062",
  clef_alto: "\uE05C",
  accidental_sharp: "\uE262",
  accidental_flat: "\uE260",
  accidental_double_sharp: "\uE263",
  accidental_double_flat: "\uE264",
  accidental_natural: "\uE261",
  dynamic_p: "\uE520",
  dynamic_f: "\uE522",
  fermata: "\uE4C0"
}.merge((0..9).to_h { |n| [:"time_#{n}", (0xE080 + n).chr(Encoding::UTF_8)] }).freeze

Instance Method Summary collapse

Constructor Details

#initialize(glyphs: GLYPHS) ⇒ GlyphTable

Returns a new instance of GlyphTable.

Parameters:

  • glyphs (Hash) (defaults to: GLYPHS)


34
35
36
# File 'lib/clef/engraving/glyph_table.rb', line 34

def initialize(glyphs: GLYPHS)
  @glyphs = glyphs.dup
end

Instance Method Details

#[](name) ⇒ String?

Parameters:

  • name (Symbol)

Returns:

  • (String, nil)


46
47
48
# File 'lib/clef/engraving/glyph_table.rb', line 46

def [](name)
  @glyphs[name]
end

#fetch(name) ⇒ String

Parameters:

  • name (Symbol)

Returns:

  • (String)


40
41
42
# File 'lib/clef/engraving/glyph_table.rb', line 40

def fetch(name)
  @glyphs.fetch(name)
end

#key?(name) ⇒ Boolean

Parameters:

  • name (Symbol)

Returns:

  • (Boolean)


52
53
54
# File 'lib/clef/engraving/glyph_table.rb', line 52

def key?(name)
  @glyphs.key?(name)
end

#register(name, glyph) ⇒ String

Parameters:

  • name (Symbol)
  • glyph (String)

Returns:

  • (String)

Raises:

  • (ArgumentError)


59
60
61
62
63
64
# File 'lib/clef/engraving/glyph_table.rb', line 59

def register(name, glyph)
  raise ArgumentError, "glyph name must be a Symbol" unless name.is_a?(Symbol)
  raise ArgumentError, "glyph must be a String" unless glyph.is_a?(String)

  @glyphs[name] = glyph
end