Merge pull request #7534 from Snuffleupagus/isName-name-check
Add a parameter to the `isName` function that enables checking not just that something is a `Name`, but also that the actual `name` properties matches
This commit is contained in:
commit
b4c8814fc9
@ -93,7 +93,7 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ {
|
||||
|
||||
case 'Widget':
|
||||
var fieldType = Util.getInheritableProperty(dict, 'FT');
|
||||
if (isName(fieldType) && fieldType.name === 'Tx') {
|
||||
if (isName(fieldType, 'Tx')) {
|
||||
return new TextWidgetAnnotation(parameters);
|
||||
}
|
||||
return new WidgetAnnotation(parameters);
|
||||
@ -338,10 +338,9 @@ var Annotation = (function AnnotationClosure() {
|
||||
}
|
||||
if (borderStyle.has('BS')) {
|
||||
var dict = borderStyle.get('BS');
|
||||
var dictType;
|
||||
var dictType = dict.get('Type');
|
||||
|
||||
if (!dict.has('Type') || (isName(dictType = dict.get('Type')) &&
|
||||
dictType.name === 'Border')) {
|
||||
if (!dictType || isName(dictType, 'Border')) {
|
||||
this.borderStyle.setWidth(dict.get('W'));
|
||||
this.borderStyle.setStyle(dict.get('S'));
|
||||
this.borderStyle.setDashArray(dict.getArray('D'));
|
||||
|
@ -1909,7 +1909,7 @@ var CipherTransformFactory = (function CipherTransformFactoryClosure() {
|
||||
|
||||
function CipherTransformFactory(dict, fileId, password) {
|
||||
var filter = dict.get('Filter');
|
||||
if (!isName(filter) || filter.name !== 'Standard') {
|
||||
if (!isName(filter, 'Standard')) {
|
||||
error('unknown encryption method');
|
||||
}
|
||||
this.dict = dict;
|
||||
|
@ -287,7 +287,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
|
||||
var groupSubtype = group.get('S');
|
||||
var colorSpace;
|
||||
if (isName(groupSubtype) && groupSubtype.name === 'Transparency') {
|
||||
if (isName(groupSubtype, 'Transparency')) {
|
||||
groupOptions.isolated = (group.get('I') || false);
|
||||
groupOptions.knockout = (group.get('K') || false);
|
||||
colorSpace = (group.has('CS') ?
|
||||
@ -582,7 +582,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
gStateObj.push([key, value]);
|
||||
break;
|
||||
case 'SMask':
|
||||
if (isName(value) && value.name === 'None') {
|
||||
if (isName(value, 'None')) {
|
||||
gStateObj.push([key, false]);
|
||||
break;
|
||||
}
|
||||
@ -890,8 +890,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
assert(isStream(xobj), 'XObject should be a stream');
|
||||
|
||||
var type = xobj.dict.get('Subtype');
|
||||
assert(isName(type),
|
||||
'XObject should have a Name subtype');
|
||||
assert(isName(type), 'XObject should have a Name subtype');
|
||||
|
||||
if (type.name === 'Form') {
|
||||
stateManager.save();
|
||||
@ -1602,8 +1601,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
assert(isStream(xobj), 'XObject should be a stream');
|
||||
|
||||
var type = xobj.dict.get('Subtype');
|
||||
assert(isName(type),
|
||||
'XObject should have a Name subtype');
|
||||
assert(isName(type), 'XObject should have a Name subtype');
|
||||
|
||||
if ('Form' !== type.name) {
|
||||
xobjsCache.key = name;
|
||||
|
@ -94,8 +94,7 @@ var Catalog = (function CatalogClosure() {
|
||||
var type = stream.dict.get('Type');
|
||||
var subtype = stream.dict.get('Subtype');
|
||||
|
||||
if (isName(type) && isName(subtype) &&
|
||||
type.name === 'Metadata' && subtype.name === 'XML') {
|
||||
if (isName(type, 'Metadata') && isName(subtype, 'XML')) {
|
||||
// XXX: This should examine the charset the XML document defines,
|
||||
// however since there are currently no real means to decode
|
||||
// arbitrary charsets, let's just hope that the author of the PDF
|
||||
@ -304,7 +303,7 @@ var Catalog = (function CatalogClosure() {
|
||||
assert(isDict(labelDict), 'The PageLabel is not a dictionary.');
|
||||
|
||||
var type = labelDict.get('Type');
|
||||
assert(!type || (isName(type) && type.name === 'PageLabel'),
|
||||
assert(!type || isName(type, 'PageLabel'),
|
||||
'Invalid type in PageLabel dictionary.');
|
||||
|
||||
var s = labelDict.get('S');
|
||||
@ -382,7 +381,7 @@ var Catalog = (function CatalogClosure() {
|
||||
var javaScript = [];
|
||||
function appendIfJavaScriptDict(jsDict) {
|
||||
var type = jsDict.get('S');
|
||||
if (!isName(type) || type.name !== 'JavaScript') {
|
||||
if (!isName(type, 'JavaScript')) {
|
||||
return;
|
||||
}
|
||||
var js = jsDict.get('JS');
|
||||
@ -410,11 +409,11 @@ var Catalog = (function CatalogClosure() {
|
||||
var openactionDict = this.catDict.get('OpenAction');
|
||||
if (isDict(openactionDict, 'Action')) {
|
||||
var actionType = openactionDict.get('S');
|
||||
if (isName(actionType) && actionType.name === 'Named') {
|
||||
if (isName(actionType, 'Named')) {
|
||||
// The named Print action is not a part of the PDF 1.7 specification,
|
||||
// but is supported by many PDF readers/writers (including Adobe's).
|
||||
var action = openactionDict.get('N');
|
||||
if (isName(action) && action.name === 'Print') {
|
||||
if (isName(action, 'Print')) {
|
||||
javaScript.push('print({});');
|
||||
}
|
||||
} else {
|
||||
|
@ -267,8 +267,8 @@ var RefSetCache = (function RefSetCacheClosure() {
|
||||
return RefSetCache;
|
||||
})();
|
||||
|
||||
function isName(v) {
|
||||
return v instanceof Name;
|
||||
function isName(v, name) {
|
||||
return v instanceof Name && (name === undefined || v.name === name);
|
||||
}
|
||||
|
||||
function isCmd(v, cmd) {
|
||||
@ -276,14 +276,8 @@ function isCmd(v, cmd) {
|
||||
}
|
||||
|
||||
function isDict(v, type) {
|
||||
if (!(v instanceof Dict)) {
|
||||
return false;
|
||||
}
|
||||
if (!type) {
|
||||
return true;
|
||||
}
|
||||
var dictType = v.get('Type');
|
||||
return isName(dictType) && dictType.name === type;
|
||||
return v instanceof Dict &&
|
||||
(type === undefined || isName(v.get('Type'), type));
|
||||
}
|
||||
|
||||
function isRef(v) {
|
||||
|
@ -244,6 +244,12 @@ describe('primitives', function() {
|
||||
var name = Name.get('Font');
|
||||
expect(isName(name)).toEqual(true);
|
||||
});
|
||||
|
||||
it('handles names with name check', function () {
|
||||
var name = Name.get('Font');
|
||||
expect(isName(name, 'Font')).toEqual(true);
|
||||
expect(isName(name, 'Subtype')).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('isCmd', function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user