view release on metacpan or search on metacpan
lib/ChordPro/lib/JSON/Relaxed.pm view on Meta::CPAN
Setting to a false value is the same as
$parser->booleans = [ 0, 1 ]
With option C<prp>, unquoted C<on> is the same as C<true>, and C<off>
is the same as C<false>.
=head1 ERROR HANDLING
If the document cannot be parsed, JSON::Relaxed will throw an
exception.
In legacy mode, JSON::Relaxed returns an undefined
value and sets error indicators in $JSON::Relaxed::err_id and
$JSON::Relaxed::err_msg.
If parser property C<croak_on_error> is set to a false
value, it will behave as if in legacy mode.
For a full list of error codes, see L<JSON::Relaxed::ErrorCodes>.
lib/ChordPro/lib/JSON/Relaxed/ErrorCodes.pm view on Meta::CPAN
use v5.26;
use utf8;
package JSON::Relaxed::ErrorCodes;
use JSON::Relaxed::Parser; our $VERSION = $JSON::Relaxed::Parser::VERSION;
=head1 JSON::Relaxed::ErrorCodes -- Error messages
If the document cannot be parsed, JSON::Relaxed will normally throw an
exception.
In legacy mode, JSON::Relaxed returns an undefined
value instead and sets the following error indicators:
=over 4
=item * $JSON::Relaxed::err_id
A unique code for a specific error.
lib/ChordPro/lib/JSON/Relaxed/Parser.pm view on Meta::CPAN
# Anything else is an error.
unless ( $next->token =~ /^[,\]]$/
|| $next->is_string
|| $next->is_list_opener ) {
return $self->error( 'missing_comma-between-array-elements',
$next );
}
}
}
# Else unkown object or character, so throw error.
else {
return $self->error( 'unknown-array-token', $this );
}
}
# If we get this far then unclosed brace.
return $self->error('unclosed-array-brace');
}
method is_comment_opener( $pretok ) {
lib/ChordPro/lib/SVGPDF/Parser.pm view on Meta::CPAN
croak( "SVG Parser: No elements" ) if !defined($data) || $data !~ /\S/;
# Illegal low-ASCII chars.
croak( "SVG Parser: Not well-formed (illegal low-ASCII chars)" )
if $data =~ /[\x00-\x08\x0b\x0c\x0e-\x1f]/;
# Turn CDATA into PCDATA.
$data =~ s{<!\[CDATA\[(.*?)]]>}{
$_ = $1.chr(0); # this makes sure that empty CDATAs become
s/([&<>'"])/ # the empty string and aren't just thrown away.
$1 eq '&' ? '&' :
$1 eq '<' ? '<' :
$1 eq '"' ? '"' :
$1 eq "'" ? ''' :
'>'
/eg;
$_;
}egs;
croak( "SVG Parser: Not well-formed (CDATA not delimited or bad comment)" )
lib/ChordPro/res/abc/abc2svg/abc2svg-1.js view on Meta::CPAN
}
if ((u.type != C.NOTE && u.type != C.REST)
|| u.invis)
continue
st = u.st;
/*fixme:test*/
if (st > nst) {
var msg = "*** fatal set_stem_dir(): bad staff number " + st +
" max " + nst;
error(2, null, msg);
throw new Error(msg)
}
v = u.v;
v_st = v_st_tb[v]
if (!v_st) {
v_st = {
st1: -1,
st2: -1
}
v_st_tb[v] = v_st
}
lib/ChordPro/res/abc/abc2svg/abc2svg-1.js view on Meta::CPAN
// mark a glyph as used and add it in <defs>
function def_use(gl) {
var i, j, g
if (defined_glyph[gl])
return
defined_glyph[gl] = true;
g = glyphs[gl]
if (!g) {
//throw new Error("unknown glyph: " + gl)
error(1, null, "Unknown glyph: '$1'", gl)
return // fixme: the xlink is set
}
j = 0
while (1) {
i = g.indexOf('xlink:href="#', j)
if (i < 0)
break
i += 13;
j = g.indexOf('"', i);
lib/ChordPro/res/abc/abc2svg/mdnn-1.js view on Meta::CPAN
//fixme:nsk
// - Non Standard Key signature - other way to display the accidentals on key change
// polyfill
if (typeof Object.assign !== 'function') {
// Must be writable: true, enumerable: false, configurable: true
Object.defineProperty(Object, "assign", {
value: function assign(target, varArgs) { // .length of function is 2
'use strict';
if (target === null || target === undefined) {
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(target);
for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource !== null && nextSource !== undefined) {
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
lib/ChordPro/res/abc/abc2svg/psvg-1.js view on Meta::CPAN
break;
}
if(C !== false) L.push(C);
}
return L.join("");
}
function symbol() {
// TODO 1e10 1E-5 real numbers
// TODO radix numbers 8#1777 16#FFFE 2#1000
var C = xchar();
if(member(C, "()<>/% \t\n")) throw new Error("Symbol expected, got " + C);
var N = member(C, "+-0123456789.");
var F = "." == C;
var L = [C];
while(peek() && !member(peek(), "()<>[]{}/% \t\n")) {
C = xchar();
L.push(C);
if(N && !member(C, "0123456789")) {
if(!F && "." == C) F = true;
else N = false;
}
lib/ChordPro/res/abc/abc2svg/psvg-1.js view on Meta::CPAN
case false: return undefined;
case "%": return comment();
case "[": return new Symbol(xchar());
case "]": return new Symbol(xchar());
case "{": Self.D++; return new Symbol(xchar());
case "}": Self.D--; return new Symbol(xchar());
case "/": xchar(); var X = symbol(); return quote(X);
case "(": return text();
case "<":
xchar();
if("<" != peek()) throw new Error("Encoded strings not implemented yet");
xchar();
return new Symbol("<<");
case ">":
xchar();
if(">" != peek()) throw new Error("Unexpected >");
xchar();
return new Symbol(">>");
default: return symbol();
}
}
PsParser.prototype.init = init;
PsParser.prototype.peek = peek;
PsParser.prototype.token = token;
return this;
}
function Ps0(Os, Ds, Es) {
function run(X, Z) {
if(isSymbol(X) && !isQuoted(X)) { // executable name
var K = symbolName(X);
var D = inDs(Ds, K);
if(!D)
throw new Error("bind error '" + K + "'");
Es.push([false, D[K]]);
} else if(Z && isArray(X) && isQuoted(X)) { // proc from Es
if(0 < X.length) {
var F = X[0];
var R = quote(X.slice(1));
if(0 < R.length) Es.push([false, R]);
run(F, false);
}
} else if("function" == typeof X) X(); // operator
else Os.push(X);
lib/ChordPro/res/abc/abc2svg/psvg-1.js view on Meta::CPAN
Sd["div"] = function() {var X = Os.pop(); Os.push(Os.pop() / X);};
Sd["mod"] = function() {var X = Os.pop(); Os.push(Os.pop() % X);};
// stack
var M = {};
Sd["mark"] = function() {Os.push(M);};
Sd["counttomark"] = function() {
var N = 0;
for(var I = Os.length - 1; 0 <= I; I--)
if(M === Os[I]) return Os.push(N);
else N++;
throw new Error("Mark not found");
};
Sd["<<"] = Sd["mark"]; // TODO doc
Sd[">>"] = function() { // TODO doc
var D = {};
while(0 < Os.length) {
var V = Os.pop();
if(M === V) return Os.push(D);
D[Os.pop()] = V;
}
throw new Error("Mark not found");
};
Sd["exch"] = function() {
var Y = Os.pop();
var X = Os.pop();
Os.push(Y);
Os.push(X);
};
Sd["clear"] = function() {Os.length = 0;};
Sd["pop"] = function() {Os.pop();};
Sd["index"] = function() {
lib/ChordPro/res/abc/abc2svg/psvg-1.js view on Meta::CPAN
var X;
if(null === A) X = "nulltype";
else if(true === A || false === A) X = "booleantype";
else if(M === A) X = "marktype";
else if("string" == typeof A) X = "stringtype";
else if(isSymbol(A)) X = isQuoted(A) ? "nametype" : "operatortype";
else if("function" == typeof A) X = "operatortype";
else if(isArray(A)) X = "arraytype";
else if("object" == typeof A) X = "dicttype";
else if(1 * A == A) X = A % 1 == 0 ? "integertype" : "realtype";
else throw new Error("Undefined type '" + A + "'");
Os.push(X);
// filetype
// packedarraytype (LanguageLevel 2)
// fonttype
// gstatetype (LanguageLevel 2)
// savetype
};
var Sb = true;
Sd[".strictBind"] = function() {Sb = true === Os.pop();};
Sd["bind"] = function() {Os.push(bind(Os.pop()));};
function bind(X) {
if(isSymbol(X) && !isQuoted(X)) {
//jfm++
// var K = symbolName(X);
// var D = inDs(Ds, K);
// if(Sb) {
// if(!D)
// throw new Error("bind error '" + K + "'");
// return bind(D[K]);
// } else return !D ? X : bind(D[K]);
return X
//jfm--
} else if(isArray(X) && isQuoted(X)) {
var N = X.length;
var A = [];
for(var I = 0; I < N; I++) {
var Xi = X[I];
var Xb = bind(Xi);
lib/ChordPro/res/abc/abc2svg/psvg-1.js view on Meta::CPAN
Sd["=="] = function() {alert(Os.pop());}; // TODO
Sd["stack"] = function() {alert(Os);}; // TODO
Sd["pstack"] = function() {alert(Os);}; // TODO
// js ffi
Sd[".call"] = function() {
var N = Os.pop();
var K = Os.pop();
var D = Os.pop();
var X = [];
for(var I = 0; I < N; I++) X.unshift(Os.pop());
if (!D[K]) throw new Error(".call: " + K + " undef")
Os.push(D[K].apply(D, X));
};
//jfm++
Sd[".call0"] = function() {
var N = Os.pop(),
K = Os.pop(),
D = Os.pop(),
X = []
for(var I = 0; I < N; I++) X.unshift(Os.pop());
if (!D[K]) throw new Error(".call0: " + K + " undef")
D[K].apply(D, X);
};
Sd[".svg"] = function() {Os.push(psvg)};
//jfm--
Sd[".math"] = function() {Os.push(Math);};
Sd[".date"] = function() {Os.push(new Date());}; // TODO split new and Date
Sd[".window"] = function() {Os.push(window);};
Sd[".callback"] = function() { // TODO event arg?
var X = Os.pop();
Os.push(function() {