abcjs-rails 1.1.1 → 1.3
Sign up to get free protection for your applications and to get access to all the features.
@@ -53,15 +53,43 @@ ABCJS.TuneBook = function(book) {
|
|
53
53
|
directives += line + '\n';
|
54
54
|
});
|
55
55
|
}
|
56
|
+
This.header = directives;
|
57
|
+
|
56
58
|
// Now, the tune ends at a blank line, so truncate it if needed. There may be "intertune" stuff.
|
57
59
|
window.ABCJS.parse.each(This.tunes, function(tune) {
|
58
60
|
var end = tune.abc.indexOf('\n\n');
|
59
61
|
if (end > 0)
|
60
62
|
tune.abc = tune.abc.substring(0, end);
|
63
|
+
tune.pure = tune.abc;
|
61
64
|
tune.abc = directives + tune.abc;
|
65
|
+
|
66
|
+
// for the user's convenience, parse and store the title separately. The title is between the first T: and the next \n
|
67
|
+
var title = tune.pure.split("T:");
|
68
|
+
title = title[1].split("\n");
|
69
|
+
tune.title = title[0].replace(/^\s+|\s+$/g, '');;
|
70
|
+
|
71
|
+
// for the user's convenience, parse and store the id separately. The id is between the first X: and the next \n
|
72
|
+
var id = tune.pure.substring(2,tune.pure.indexOf("\n"));
|
73
|
+
tune.id = id.replace(/^\s+|\s+$/g, '');
|
62
74
|
});
|
63
75
|
};
|
64
76
|
|
77
|
+
ABCJS.TuneBook.prototype.getTuneById = function (id) {
|
78
|
+
for (var i = 0; i < this.tunes.length; i++) {
|
79
|
+
if (this.tunes[i].id === id)
|
80
|
+
return this.tunes[i];
|
81
|
+
}
|
82
|
+
return null;
|
83
|
+
};
|
84
|
+
|
85
|
+
ABCJS.TuneBook.prototype.getTuneByTitle = function (title) {
|
86
|
+
for (var i = 0; i < this.tunes.length; i++) {
|
87
|
+
if (this.tunes[i].title === title)
|
88
|
+
return this.tunes[i];
|
89
|
+
}
|
90
|
+
return null;
|
91
|
+
};
|
92
|
+
|
65
93
|
function renderEngine(callback, output, abc, parserParams, renderParams) {
|
66
94
|
var isArray = function(testObject) {
|
67
95
|
return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
|
@@ -168,6 +168,14 @@ window.ABCJS.data.Tune = function() {
|
|
168
168
|
}
|
169
169
|
}
|
170
170
|
|
171
|
+
// Remove the temporary working variables
|
172
|
+
for (i = 0; i < this.lines.length; i++) {
|
173
|
+
if (this.lines[i].staff) {
|
174
|
+
for (s = 0; s < this.lines[i].staff.length; s++)
|
175
|
+
delete this.lines[i].staff[s].workingClef;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
|
171
179
|
function cleanUpSlursInLine(line) {
|
172
180
|
var currSlur = [];
|
173
181
|
var x;
|
@@ -403,11 +411,11 @@ window.ABCJS.data.Tune = function() {
|
|
403
411
|
var This = this;
|
404
412
|
var pushNote = function(hp) {
|
405
413
|
if (hp.pitches !== undefined) {
|
406
|
-
var mid = This.lines[This.lineNum].staff[This.staffNum].
|
414
|
+
var mid = This.lines[This.lineNum].staff[This.staffNum].workingClef.verticalPos;
|
407
415
|
window.ABCJS.parse.each(hp.pitches, function(p) { p.verticalPos = p.pitch - mid; });
|
408
416
|
}
|
409
417
|
if (hp.gracenotes !== undefined) {
|
410
|
-
var mid2 = This.lines[This.lineNum].staff[This.staffNum].
|
418
|
+
var mid2 = This.lines[This.lineNum].staff[This.staffNum].workingClef.verticalPos;
|
411
419
|
window.ABCJS.parse.each(hp.gracenotes, function(p) { p.verticalPos = p.pitch - mid2; });
|
412
420
|
}
|
413
421
|
This.lines[This.lineNum].staff[This.staffNum].voices[This.voiceNum].push(hp);
|
@@ -477,6 +485,9 @@ window.ABCJS.data.Tune = function() {
|
|
477
485
|
|
478
486
|
this.appendStartingElement = function(type, startChar, endChar, hashParams2)
|
479
487
|
{
|
488
|
+
// If we're in the middle of beaming, then end the beam.
|
489
|
+
this.closeLine();
|
490
|
+
|
480
491
|
// We only ever want implied naturals the first time.
|
481
492
|
var impliedNaturals;
|
482
493
|
if (type === 'key') {
|
@@ -487,6 +498,12 @@ window.ABCJS.data.Tune = function() {
|
|
487
498
|
// Clone the object because it will be sticking around for the next line and we don't want the extra fields in it.
|
488
499
|
var hashParams = window.ABCJS.parse.clone(hashParams2);
|
489
500
|
|
501
|
+
// If this is a clef type, then we replace the working clef on the line. This is kept separate from
|
502
|
+
// the clef in case there is an inline clef field. We need to know what the current position for
|
503
|
+
// the note is.
|
504
|
+
if (type === 'clef')
|
505
|
+
this.lines[this.lineNum].staff[this.staffNum].workingClef = hashParams;
|
506
|
+
|
490
507
|
// These elements should not be added twice, so if the element exists on this line without a note or bar before it, just replace the staff version.
|
491
508
|
var voice = this.lines[this.lineNum].staff[this.staffNum].voices[this.voiceNum];
|
492
509
|
for (var i = 0; i < voice.length; i++) {
|
@@ -607,7 +624,7 @@ window.ABCJS.data.Tune = function() {
|
|
607
624
|
This.appendElement('scale', null, null, { size: params.scale} );
|
608
625
|
};
|
609
626
|
var createStaff = function(params) {
|
610
|
-
This.lines[This.lineNum].staff[This.staffNum] = {voices: [ ], clef: params.clef, key: params.key};
|
627
|
+
This.lines[This.lineNum].staff[This.staffNum] = {voices: [ ], clef: params.clef, key: params.key, workingClef: params.clef };
|
611
628
|
if (params.vocalfont) This.lines[This.lineNum].staff[This.staffNum].vocalfont = params.vocalfont;
|
612
629
|
if (params.bracket) This.lines[This.lineNum].staff[This.staffNum].bracket = params.bracket;
|
613
630
|
if (params.brace) This.lines[This.lineNum].staff[This.staffNum].brace = params.brace;
|
@@ -683,4 +700,4 @@ window.ABCJS.data.Tune = function() {
|
|
683
700
|
this.addMetaTextObj = function(key, value) {
|
684
701
|
this.metaText[key] = value;
|
685
702
|
};
|
686
|
-
}
|
703
|
+
};
|
data/lib/abcjs-rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abcjs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: '1.3'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|