Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F97646626
index.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Jan 6, 01:11
Size
7 KB
Mime Type
text/x-Algol68
Expires
Wed, Jan 8, 01:11 (2 d)
Engine
blob
Format
Raw Data
Handle
23441024
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
index.js
View Options
"use strict"
;
Object
.
defineProperty
(
exports
,
"__esModule"
,
{
value
:
true
});
exports
.
readCodePoint
=
readCodePoint
;
exports
.
readInt
=
readInt
;
exports
.
readStringContents
=
readStringContents
;
var
_isDigit
=
function
isDigit
(
code
)
{
return
code
>=
48
&&
code
<=
57
;
};
const
forbiddenNumericSeparatorSiblings
=
{
decBinOct
:
new
Set
([
46
,
66
,
69
,
79
,
95
,
98
,
101
,
111
]),
hex
:
new
Set
([
46
,
88
,
95
,
120
])
};
const
isAllowedNumericSeparatorSibling
=
{
bin
:
ch
=>
ch
===
48
||
ch
===
49
,
oct
:
ch
=>
ch
>=
48
&&
ch
<=
55
,
dec
:
ch
=>
ch
>=
48
&&
ch
<=
57
,
hex
:
ch
=>
ch
>=
48
&&
ch
<=
57
||
ch
>=
65
&&
ch
<=
70
||
ch
>=
97
&&
ch
<=
102
};
function
readStringContents
(
type
,
input
,
pos
,
lineStart
,
curLine
,
errors
)
{
const
initialPos
=
pos
;
const
initialLineStart
=
lineStart
;
const
initialCurLine
=
curLine
;
let
out
=
""
;
let
firstInvalidLoc
=
null
;
let
chunkStart
=
pos
;
const
{
length
}
=
input
;
for
(;;)
{
if
(
pos
>=
length
)
{
errors
.
unterminated
(
initialPos
,
initialLineStart
,
initialCurLine
);
out
+=
input
.
slice
(
chunkStart
,
pos
);
break
;
}
const
ch
=
input
.
charCodeAt
(
pos
);
if
(
isStringEnd
(
type
,
ch
,
input
,
pos
))
{
out
+=
input
.
slice
(
chunkStart
,
pos
);
break
;
}
if
(
ch
===
92
)
{
out
+=
input
.
slice
(
chunkStart
,
pos
);
const
res
=
readEscapedChar
(
input
,
pos
,
lineStart
,
curLine
,
type
===
"template"
,
errors
);
if
(
res
.
ch
===
null
&&
!
firstInvalidLoc
)
{
firstInvalidLoc
=
{
pos
,
lineStart
,
curLine
};
}
else
{
out
+=
res
.
ch
;
}
({
pos
,
lineStart
,
curLine
}
=
res
);
chunkStart
=
pos
;
}
else
if
(
ch
===
8232
||
ch
===
8233
)
{
++
pos
;
++
curLine
;
lineStart
=
pos
;
}
else
if
(
ch
===
10
||
ch
===
13
)
{
if
(
type
===
"template"
)
{
out
+=
input
.
slice
(
chunkStart
,
pos
)
+
"\n"
;
++
pos
;
if
(
ch
===
13
&&
input
.
charCodeAt
(
pos
)
===
10
)
{
++
pos
;
}
++
curLine
;
chunkStart
=
lineStart
=
pos
;
}
else
{
errors
.
unterminated
(
initialPos
,
initialLineStart
,
initialCurLine
);
}
}
else
{
++
pos
;
}
}
return
{
pos
,
str
:
out
,
firstInvalidLoc
,
lineStart
,
curLine
,
containsInvalid
:
!!
firstInvalidLoc
};
}
function
isStringEnd
(
type
,
ch
,
input
,
pos
)
{
if
(
type
===
"template"
)
{
return
ch
===
96
||
ch
===
36
&&
input
.
charCodeAt
(
pos
+
1
)
===
123
;
}
return
ch
===
(
type
===
"double"
?
34
:
39
);
}
function
readEscapedChar
(
input
,
pos
,
lineStart
,
curLine
,
inTemplate
,
errors
)
{
const
throwOnInvalid
=
!
inTemplate
;
pos
++
;
const
res
=
ch
=>
({
pos
,
ch
,
lineStart
,
curLine
});
const
ch
=
input
.
charCodeAt
(
pos
++
);
switch
(
ch
)
{
case
110
:
return
res
(
"\n"
);
case
114
:
return
res
(
"\r"
);
case
120
:
{
let
code
;
({
code
,
pos
}
=
readHexChar
(
input
,
pos
,
lineStart
,
curLine
,
2
,
false
,
throwOnInvalid
,
errors
));
return
res
(
code
===
null
?
null
:
String
.
fromCharCode
(
code
));
}
case
117
:
{
let
code
;
({
code
,
pos
}
=
readCodePoint
(
input
,
pos
,
lineStart
,
curLine
,
throwOnInvalid
,
errors
));
return
res
(
code
===
null
?
null
:
String
.
fromCodePoint
(
code
));
}
case
116
:
return
res
(
"\t"
);
case
98
:
return
res
(
"\b"
);
case
118
:
return
res
(
"\u000b"
);
case
102
:
return
res
(
"\f"
);
case
13
:
if
(
input
.
charCodeAt
(
pos
)
===
10
)
{
++
pos
;
}
case
10
:
lineStart
=
pos
;
++
curLine
;
case
8232
:
case
8233
:
return
res
(
""
);
case
56
:
case
57
:
if
(
inTemplate
)
{
return
res
(
null
);
}
else
{
errors
.
strictNumericEscape
(
pos
-
1
,
lineStart
,
curLine
);
}
default
:
if
(
ch
>=
48
&&
ch
<=
55
)
{
const
startPos
=
pos
-
1
;
const
match
=
input
.
slice
(
startPos
,
pos
+
2
).
match
(
/^[0-7]+/
);
let
octalStr
=
match
[
0
];
let
octal
=
parseInt
(
octalStr
,
8
);
if
(
octal
>
255
)
{
octalStr
=
octalStr
.
slice
(
0
,
-
1
);
octal
=
parseInt
(
octalStr
,
8
);
}
pos
+=
octalStr
.
length
-
1
;
const
next
=
input
.
charCodeAt
(
pos
);
if
(
octalStr
!==
"0"
||
next
===
56
||
next
===
57
)
{
if
(
inTemplate
)
{
return
res
(
null
);
}
else
{
errors
.
strictNumericEscape
(
startPos
,
lineStart
,
curLine
);
}
}
return
res
(
String
.
fromCharCode
(
octal
));
}
return
res
(
String
.
fromCharCode
(
ch
));
}
}
function
readHexChar
(
input
,
pos
,
lineStart
,
curLine
,
len
,
forceLen
,
throwOnInvalid
,
errors
)
{
const
initialPos
=
pos
;
let
n
;
({
n
,
pos
}
=
readInt
(
input
,
pos
,
lineStart
,
curLine
,
16
,
len
,
forceLen
,
false
,
errors
,
!
throwOnInvalid
));
if
(
n
===
null
)
{
if
(
throwOnInvalid
)
{
errors
.
invalidEscapeSequence
(
initialPos
,
lineStart
,
curLine
);
}
else
{
pos
=
initialPos
-
1
;
}
}
return
{
code
:
n
,
pos
};
}
function
readInt
(
input
,
pos
,
lineStart
,
curLine
,
radix
,
len
,
forceLen
,
allowNumSeparator
,
errors
,
bailOnError
)
{
const
start
=
pos
;
const
forbiddenSiblings
=
radix
===
16
?
forbiddenNumericSeparatorSiblings
.
hex
:
forbiddenNumericSeparatorSiblings
.
decBinOct
;
const
isAllowedSibling
=
radix
===
16
?
isAllowedNumericSeparatorSibling
.
hex
:
radix
===
10
?
isAllowedNumericSeparatorSibling
.
dec
:
radix
===
8
?
isAllowedNumericSeparatorSibling
.
oct
:
isAllowedNumericSeparatorSibling
.
bin
;
let
invalid
=
false
;
let
total
=
0
;
for
(
let
i
=
0
,
e
=
len
==
null
?
Infinity
:
len
;
i
<
e
;
++
i
)
{
const
code
=
input
.
charCodeAt
(
pos
);
let
val
;
if
(
code
===
95
&&
allowNumSeparator
!==
"bail"
)
{
const
prev
=
input
.
charCodeAt
(
pos
-
1
);
const
next
=
input
.
charCodeAt
(
pos
+
1
);
if
(
!
allowNumSeparator
)
{
if
(
bailOnError
)
return
{
n
:
null
,
pos
};
errors
.
numericSeparatorInEscapeSequence
(
pos
,
lineStart
,
curLine
);
}
else
if
(
Number
.
isNaN
(
next
)
||
!
isAllowedSibling
(
next
)
||
forbiddenSiblings
.
has
(
prev
)
||
forbiddenSiblings
.
has
(
next
))
{
if
(
bailOnError
)
return
{
n
:
null
,
pos
};
errors
.
unexpectedNumericSeparator
(
pos
,
lineStart
,
curLine
);
}
++
pos
;
continue
;
}
if
(
code
>=
97
)
{
val
=
code
-
97
+
10
;
}
else
if
(
code
>=
65
)
{
val
=
code
-
65
+
10
;
}
else
if
(
_isDigit
(
code
))
{
val
=
code
-
48
;
}
else
{
val
=
Infinity
;
}
if
(
val
>=
radix
)
{
if
(
val
<=
9
&&
bailOnError
)
{
return
{
n
:
null
,
pos
};
}
else
if
(
val
<=
9
&&
errors
.
invalidDigit
(
pos
,
lineStart
,
curLine
,
radix
))
{
val
=
0
;
}
else
if
(
forceLen
)
{
val
=
0
;
invalid
=
true
;
}
else
{
break
;
}
}
++
pos
;
total
=
total
*
radix
+
val
;
}
if
(
pos
===
start
||
len
!=
null
&&
pos
-
start
!==
len
||
invalid
)
{
return
{
n
:
null
,
pos
};
}
return
{
n
:
total
,
pos
};
}
function
readCodePoint
(
input
,
pos
,
lineStart
,
curLine
,
throwOnInvalid
,
errors
)
{
const
ch
=
input
.
charCodeAt
(
pos
);
let
code
;
if
(
ch
===
123
)
{
++
pos
;
({
code
,
pos
}
=
readHexChar
(
input
,
pos
,
lineStart
,
curLine
,
input
.
indexOf
(
"}"
,
pos
)
-
pos
,
true
,
throwOnInvalid
,
errors
));
++
pos
;
if
(
code
!==
null
&&
code
>
0x10ffff
)
{
if
(
throwOnInvalid
)
{
errors
.
invalidCodePoint
(
pos
,
lineStart
,
curLine
);
}
else
{
return
{
code
:
null
,
pos
};
}
}
}
else
{
({
code
,
pos
}
=
readHexChar
(
input
,
pos
,
lineStart
,
curLine
,
4
,
false
,
throwOnInvalid
,
errors
));
}
return
{
code
,
pos
};
}
//# sourceMappingURL=index.js.map
Event Timeline
Log In to Comment