vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
477 lines (476 loc) • 9.67 kB
JavaScript
var g, v;
function h() {
if (v) return g;
v = 1;
function E(e) {
const n = e.regex, _ = [
"abs",
"accept",
"alarm",
"and",
"atan2",
"bind",
"binmode",
"bless",
"break",
"caller",
"chdir",
"chmod",
"chomp",
"chop",
"chown",
"chr",
"chroot",
"class",
"close",
"closedir",
"connect",
"continue",
"cos",
"crypt",
"dbmclose",
"dbmopen",
"defined",
"delete",
"die",
"do",
"dump",
"each",
"else",
"elsif",
"endgrent",
"endhostent",
"endnetent",
"endprotoent",
"endpwent",
"endservent",
"eof",
"eval",
"exec",
"exists",
"exit",
"exp",
"fcntl",
"field",
"fileno",
"flock",
"for",
"foreach",
"fork",
"format",
"formline",
"getc",
"getgrent",
"getgrgid",
"getgrnam",
"gethostbyaddr",
"gethostbyname",
"gethostent",
"getlogin",
"getnetbyaddr",
"getnetbyname",
"getnetent",
"getpeername",
"getpgrp",
"getpriority",
"getprotobyname",
"getprotobynumber",
"getprotoent",
"getpwent",
"getpwnam",
"getpwuid",
"getservbyname",
"getservbyport",
"getservent",
"getsockname",
"getsockopt",
"given",
"glob",
"gmtime",
"goto",
"grep",
"gt",
"hex",
"if",
"index",
"int",
"ioctl",
"join",
"keys",
"kill",
"last",
"lc",
"lcfirst",
"length",
"link",
"listen",
"local",
"localtime",
"log",
"lstat",
"lt",
"ma",
"map",
"method",
"mkdir",
"msgctl",
"msgget",
"msgrcv",
"msgsnd",
"my",
"ne",
"next",
"no",
"not",
"oct",
"open",
"opendir",
"or",
"ord",
"our",
"pack",
"package",
"pipe",
"pop",
"pos",
"print",
"printf",
"prototype",
"push",
"q|0",
"qq",
"quotemeta",
"qw",
"qx",
"rand",
"read",
"readdir",
"readline",
"readlink",
"readpipe",
"recv",
"redo",
"ref",
"rename",
"require",
"reset",
"return",
"reverse",
"rewinddir",
"rindex",
"rmdir",
"say",
"scalar",
"seek",
"seekdir",
"select",
"semctl",
"semget",
"semop",
"send",
"setgrent",
"sethostent",
"setnetent",
"setpgrp",
"setpriority",
"setprotoent",
"setpwent",
"setservent",
"setsockopt",
"shift",
"shmctl",
"shmget",
"shmread",
"shmwrite",
"shutdown",
"sin",
"sleep",
"socket",
"socketpair",
"sort",
"splice",
"split",
"sprintf",
"sqrt",
"srand",
"stat",
"state",
"study",
"sub",
"substr",
"symlink",
"syscall",
"sysopen",
"sysread",
"sysseek",
"system",
"syswrite",
"tell",
"telldir",
"tie",
"tied",
"time",
"times",
"tr",
"truncate",
"uc",
"ucfirst",
"umask",
"undef",
"unless",
"unlink",
"unpack",
"unshift",
"untie",
"until",
"use",
"utime",
"values",
"vec",
"wait",
"waitpid",
"wantarray",
"warn",
"when",
"while",
"write",
"x|0",
"xor",
"y|0"
], d = /[dualxmsipngr]{0,12}/, l = {
$pattern: /[\w.]+/,
keyword: _.join(" ")
}, m = {
className: "subst",
begin: "[$@]\\{",
end: "\\}",
keywords: l
}, p = {
begin: /->\{/,
end: /\}/
// contains defined later
}, i = {
scope: "attr",
match: /\s+:\s*\w+(\s*\(.*?\))?/
}, b = {
scope: "variable",
variants: [
{ begin: /\$\d/ },
{
begin: n.concat(
/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,
// negative look-ahead tries to avoid matching patterns that are not
// Perl at all like $ident$, @ident@, etc.
"(?![A-Za-z])(?![@$%])"
)
},
{
// Only $= is a special Perl variable and one can't declare @= or %=.
begin: /[$%@](?!")[^\s\w{=]|\$=/,
relevance: 0
}
],
contains: [i]
}, u = {
className: "number",
variants: [
// decimal numbers:
// include the case where a number starts with a dot (eg. .9), and
// the leading 0? avoids mixing the first and second match on 0.x cases
{ match: /0?\.[0-9][0-9_]+\b/ },
// include the special versioned number (eg. v5.38)
{ match: /\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/ },
// non-decimal numbers:
{ match: /\b0[0-7][0-7_]*\b/ },
{ match: /\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/ },
{ match: /\b0b[0-1][0-1_]*\b/ }
],
relevance: 0
}, y = [
e.BACKSLASH_ESCAPE,
m,
b
], w = [
/!/,
/\//,
/\|/,
/\?/,
/'/,
/"/,
// valid but infrequent and weird
/#/
// valid but infrequent and weird
], s = (o, a, t = "\\1") => {
const q = t === "\\1" ? t : n.concat(t, a);
return n.concat(
n.concat("(?:", o, ")"),
a,
/(?:\\.|[^\\\/])*?/,
q,
/(?:\\.|[^\\\/])*?/,
t,
d
);
}, r = (o, a, t) => n.concat(
n.concat("(?:", o, ")"),
a,
/(?:\\.|[^\\\/])*?/,
t,
d
), c = [
b,
e.HASH_COMMENT_MODE,
e.COMMENT(
/^=\w/,
/=cut/,
{ endsWithParent: !0 }
),
p,
{
className: "string",
contains: y,
variants: [
{
begin: "q[qwxr]?\\s*\\(",
end: "\\)",
relevance: 5
},
{
begin: "q[qwxr]?\\s*\\[",
end: "\\]",
relevance: 5
},
{
begin: "q[qwxr]?\\s*\\{",
end: "\\}",
relevance: 5
},
{
begin: "q[qwxr]?\\s*\\|",
end: "\\|",
relevance: 5
},
{
begin: "q[qwxr]?\\s*<",
end: ">",
relevance: 5
},
{
begin: "qw\\s+q",
end: "q",
relevance: 5
},
{
begin: "'",
end: "'",
contains: [e.BACKSLASH_ESCAPE]
},
{
begin: '"',
end: '"'
},
{
begin: "`",
end: "`",
contains: [e.BACKSLASH_ESCAPE]
},
{
begin: /\{\w+\}/,
relevance: 0
},
{
begin: "-?\\w+\\s*=>",
relevance: 0
}
]
},
u,
{
// regexp container
begin: "(\\/\\/|" + e.RE_STARTERS_RE + "|\\b(split|return|print|reverse|grep)\\b)\\s*",
keywords: "split return print reverse grep",
relevance: 0,
contains: [
e.HASH_COMMENT_MODE,
{
className: "regexp",
variants: [
// allow matching common delimiters
{ begin: s("s|tr|y", n.either(...w, { capture: !0 })) },
// and then paired delmis
{ begin: s("s|tr|y", "\\(", "\\)") },
{ begin: s("s|tr|y", "\\[", "\\]") },
{ begin: s("s|tr|y", "\\{", "\\}") }
],
relevance: 2
},
{
className: "regexp",
variants: [
{
// could be a comment in many languages so do not count
// as relevant
begin: /(m|qr)\/\//,
relevance: 0
},
// prefix is optional with /regex/
{ begin: r("(?:m|qr)?", /\//, /\//) },
// allow matching common delimiters
{ begin: r("m|qr", n.either(...w, { capture: !0 }), /\1/) },
// allow common paired delmins
{ begin: r("m|qr", /\(/, /\)/) },
{ begin: r("m|qr", /\[/, /\]/) },
{ begin: r("m|qr", /\{/, /\}/) }
]
}
]
},
{
className: "function",
beginKeywords: "sub method",
end: "(\\s*\\(.*?\\))?[;{]",
excludeEnd: !0,
relevance: 5,
contains: [e.TITLE_MODE, i]
},
{
className: "class",
beginKeywords: "class",
end: "[;{]",
excludeEnd: !0,
relevance: 5,
contains: [e.TITLE_MODE, i, u]
},
{
begin: "-\\w\\b",
relevance: 0
},
{
begin: "^__DATA__$",
end: "^__END__$",
subLanguage: "mojolicious",
contains: [
{
begin: "^@@.*",
end: "$",
className: "comment"
}
]
}
];
return m.contains = c, p.contains = c, {
name: "Perl",
aliases: [
"pl",
"pm"
],
keywords: l,
contains: c
};
}
return g = E, g;
}
export {
h as __require
};
//# sourceMappingURL=perl.mjs.map