ramekin 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71e89ff9027d3342649de107de02ed46c622a95a9940fe94bb0ece781ac18790
4
- data.tar.gz: 1d3b3a89ab873ab15e55a000912791ee7c232a53d462377803fdd8f9ef80e4e8
3
+ metadata.gz: 05452ce105a35c32216d5236506aaddbe28564e7645a8f3aa53c517eaedc44db
4
+ data.tar.gz: a65a65ac28b44078bf626a141ec6ecc9b3a725b65d562f957d6c67fee2a57d0d
5
5
  SHA512:
6
- metadata.gz: e716543bbac8f7ae0fa72e5504fd3fad883b283b4adc3085f0de7bb5220bf1533dac433af06527d949a8acdb46a25beffa20334cf72bbb208ff2d2408a225fd1
7
- data.tar.gz: 1cc81d357db65d9be8e5f54677ff3117c336656e1ee40ee53183b49f7ceee9c483d05cafdd190bc783dcc65d687af098f80ee7e54378c6c48eb2d62ebbbc64b7
6
+ metadata.gz: 050f82c12f9f39d82b224cbab93244913b21cde8f08cdfe4ecd389dd6c1a97348fc9066978cce076935bcaa44f027263070461f6dd9ac12df1a8030047f888c5
7
+ data.tar.gz: a9cad79a5b20128fa0d2d8a3838af346a9c01d43635a984c2ae25ce907f0a74e1907a5ba0fe057e724e7eb7aea34ba1c6e04ee521ceb03f31898ce8d015b0477
data/lib/ramekin/meta.rb CHANGED
@@ -78,9 +78,13 @@ module Ramekin
78
78
  end
79
79
  end
80
80
 
81
+ def done?
82
+ @elements.empty? && @peek.nil?
83
+ end
84
+
81
85
  def parse
82
86
  loop do
83
- break if @elements.empty?
87
+ break if done?
84
88
  next!
85
89
 
86
90
  case @current.type
@@ -88,7 +92,8 @@ module Ramekin
88
92
  when :amk then @amk = @current
89
93
  when :option then @options[@current.value] = true
90
94
  when :w then @volume = @current
91
- when :t, :bpm then @tempo = @current; @t_with_divisor = nil
95
+ when :t, :bpm then
96
+ @tempo = @current; @t_with_divisor = nil
92
97
  else
93
98
  error! 'invalid token in header'
94
99
  end
@@ -57,19 +57,15 @@ module Ramekin
57
57
  end
58
58
  end
59
59
 
60
- def check_length!(t, div)
61
- if t % div != 0
60
+ def length_amk(div)
61
+ if ticks % div != 0
62
62
  divisible = div == 2 ? 'even' : "divisible by #{div}"
63
63
  error!("too fast! tick count must be #{divisible} at this tempo", el: self)
64
64
  end
65
- end
66
-
67
- def length_amk(div)
68
- check_length!(ticks, div)
69
65
 
70
66
  t = ticks / div
71
67
  # we use l16
72
- # return '' if t == 12
68
+ return '' if t == 12
73
69
  KNOWN_LENGTHS.fetch(t) { "=#{t}" }
74
70
  end
75
71
 
@@ -103,15 +99,13 @@ module Ramekin
103
99
  end
104
100
 
105
101
  def ticks
106
- if @extensions.empty? && default_length.nil?
107
- return 192 / 16
108
- end
109
-
110
102
  exts = @extensions
111
- exts = [default_length] if exts.empty?
103
+ default = default_length&.value || '16'
104
+ exts = [default] if exts.empty?
112
105
 
113
106
  base = exts.map do |ext|
114
107
  ext = ext.value if Token === ext
108
+ ext ||= default
115
109
 
116
110
  case ext
117
111
  when /\A=(\d+)\z/ then $1.to_i
@@ -297,7 +297,13 @@ module Ramekin
297
297
 
298
298
  ticks = sprintf("%02x", note.ticks)
299
299
  yield "$dd$#{ticks}$#{ticks}#{note.octave_amk}#{note.note.value}"
300
- yield "^=#{note.ticks}"
300
+
301
+ case peek
302
+ when NoteEvent
303
+ peek.extensions.concat(note.extensions)
304
+ else
305
+ yield "^=#{note.ticks}"
306
+ end
301
307
 
302
308
  @octave = note.octave
303
309
  when 'legato'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ramekin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - jneen
8
8
  autorequire:
9
9
  bindir: gembin
10
10
  cert_chain: []
11
- date: 2025-03-04 00:00:00.000000000 Z
11
+ date: 2025-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: strscan