Socket
Socket
Sign inDemoInstall

moddle-xml

Package Overview
Dependencies
Maintainers
2
Versions
75
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moddle-xml - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

7

index.js
'use strict';
var Reader = require('./lib/Reader'),
Writer = require('./lib/Writer');
module.exports.Reader = Reader;
module.exports.Writer = Writer;
module.exports.Reader = require('./lib/Reader');
module.exports.Writer = require('./lib/Writer');
'use strict';
function capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
function lower(string) {
return string.charAt(0).toLowerCase() + string.slice(1);
}
function hasLowerCaseAlias(pkg) {

@@ -8,7 +16,4 @@ return pkg.xml && pkg.xml.alias === 'lowerCase';

function capitalize(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
function aliasToName(alias, pkg) {
module.exports.aliasToName = function(alias, pkg) {
if (hasLowerCaseAlias(pkg)) {

@@ -19,10 +24,5 @@ return capitalize(alias);

}
}
};
function lower(string) {
return string.charAt(0).toLowerCase() + string.slice(1);
}
function nameToAlias(name, pkg) {
module.exports.nameToAlias = function(name, pkg) {
if (hasLowerCaseAlias(pkg)) {

@@ -33,14 +33,6 @@ return lower(name);

}
}
};
module.exports.aliasToName = aliasToName;
module.exports.nameToAlias = nameToAlias;
var DEFAULT_NS_MAP = {
module.exports.DEFAULT_NS_MAP = {
'xsi': 'http://www.w3.org/2001/XMLSchema-instance'
};
module.exports.DEFAULT_NS_MAP = DEFAULT_NS_MAP;
};

@@ -7,10 +7,5 @@ 'use strict';

var common = require('./common'),
util = require('moddle/lib/util'),
Types = require('moddle').types,
Stack = require('tiny-stack'),
logger = util.logger,
parseNameNs = util.parseNameNs,
coerceType = util.coerceType,
isSimpleType = util.isSimpleType,
parseNameNs = require('moddle').ns.parseName,
aliasToName = common.aliasToName;

@@ -96,3 +91,2 @@

this.addWarning = function (w) {
logger.debug('[warning]', w.message, w);
warnings.push(w);

@@ -169,3 +163,3 @@ };

value = coerceType(propertyDesc.type, value);
value = Types.coerceType(propertyDesc.type, value);

@@ -180,6 +174,4 @@ if (propertyDesc.isMany) {

function BaseElementHandler(model, type, context) {
function BaseElementHandler() {}
}
BaseElementHandler.prototype = Object.create(BodyHandler.prototype);

@@ -228,3 +220,3 @@

if (bodyProperty && value !== undefined) {
value = coerceType(bodyProperty.type, value);
value = Types.coerceType(bodyProperty.type, value);
element.set(bodyProperty.name, value);

@@ -258,3 +250,3 @@ }

if (prop) {
value = coerceType(prop.type, value);
value = Types.coerceType(prop.type, value);
}

@@ -295,3 +287,3 @@

property = _.find(descriptor.properties, function(p) {
return !p.isVirtual && !p.isReference && !p.isAttribute && elementType.isA(p.type);
return !p.isVirtual && !p.isReference && !p.isAttribute && elementType.hasType(p.type);
});

@@ -344,10 +336,11 @@

var propertyDesc, type, childHandler;
var propertyDesc, type, element, childHandler;
propertyDesc = this.getPropertyForElement(nameNs);
element = this.element;
type = propertyDesc.effectiveType || propertyDesc.type;
if (isSimpleType(propertyDesc.type)) {
return this.valueHandler(propertyDesc, this.element);
if (Types.isSimple(propertyDesc.type)) {
return this.valueHandler(propertyDesc, element);
}

@@ -364,9 +357,9 @@

// child handles may decide to skip elements
// by not returning anythign
// by not returning anything
if (newElement !== undefined) {
if (propertyDesc.isMany) {
this.element.get(propertyDesc.name).push(newElement);
element.get(propertyDesc.name).push(newElement);
} else {
this.element.set(propertyDesc.name, newElement);
element.set(propertyDesc.name, newElement);
}

@@ -376,6 +369,9 @@

_.extend(newElement, {
element: this.element
element: element
});
this.context.addReference(newElement);
} else {
// establish child -> parent relationship
newElement.$parent = element;
}

@@ -407,14 +403,14 @@ }

var handler = new GenericElementHandler(this.model, 'Element', this.context).handleNode(node);
var handler = new GenericElementHandler(this.model, 'Element', this.context).handleNode(node),
element = this.element;
var child = handler.getElement();
var newElement = handler.getElement(),
children;
if (child !== undefined) {
if (newElement !== undefined) {
children = element.$children = element.$children || [];
children.push(newElement);
var children = this.element.$children;
if (!children) {
children = this.element.$children = [];
}
children.push(child);
// establish child -> parent relationship
newElement.$parent = element;
}

@@ -421,0 +417,0 @@

@@ -5,7 +5,5 @@ 'use strict';

var util = require('moddle').util,
var Types = require('moddle').types,
common = require('./common'),
parseNameNs = util.parseNameNs,
isSimpleType = util.isSimpleType,
parseNameNs = require('moddle').ns.parseName,
nameToAlias = common.nameToAlias;

@@ -308,3 +306,3 @@

} else
if (isSimpleType(p.type)) {
if (Types.isSimple(p.type)) {
_.forEach(value, function(v) {

@@ -311,0 +309,0 @@ body.push(new ValueSerializer(ns).build(p, v));

{
"name": "moddle-xml",
"version": "0.1.0",
"version": "0.2.0",
"description": "XML import/export for documents described with moddle",

@@ -52,3 +52,3 @@ "directories": {

"dependencies": {
"moddle": "~0.1.0",
"moddle": "~0.2.0",
"lodash": "~2.4.0",

@@ -55,0 +55,0 @@ "sax": "~0.6.0",

@@ -0,1 +1,3 @@

'use strict';
var fs = require('fs');

@@ -6,4 +8,3 @@ var util = require('util');

var logger = require('moddle').util.Logger;
var Model = require('moddle');
var Moddle = require('moddle');

@@ -45,3 +46,3 @@ var jsondiffpatch = require('jsondiffpatch').create({

if (!result.pass) {
logger.error('[to-deep-equal] elements do not equal. diff: ', util.inspect(jsondiffpatch.diff(actualClone, expectedClone), false, 4));
console.warn('[to-deep-equal] elements do not equal. diff: ', util.inspect(jsondiffpatch.diff(actualClone, expectedClone), false, 4));
}

@@ -60,5 +61,5 @@

if (!base) {
throw new Error("[test-util] must specify a base directory");
throw new Error('[test-util] must specify a base directory');
}
function createModel(packageNames) {

@@ -81,3 +82,3 @@

return new Model(packages);
return new Moddle(packages);
}

@@ -88,15 +89,2 @@

/** log during execution of a test callback */
function log(level, fn) {
logger.setLevel(level);
return function(done) {
fn(function() {
logger.setLevel(null);
done();
});
};
}
module.exports.log = log;
module.exports.readFile = readFile;

@@ -103,0 +91,0 @@ module.exports.ensureDirExists = ensureDirExists;

@@ -0,10 +1,9 @@

'use strict';
var _ = require('lodash');
var Reader = require('../../lib/Reader'),
logger = require('moddle').util.Logger;
var Helper = require('./Helper'),
Helper = require('./Helper'),
readFile = Helper.readFile,
createModelBuilder = Helper.createModelBuilder,
log = Helper.log;
createModelBuilder = Helper.createModelBuilder;

@@ -1026,2 +1025,115 @@

describe('parent -> child relationship', function() {
var model = createModel([ 'properties' ]);
var extensionModel = createModel([ 'extensions' ]);
it('should expose $parent on model elements', function(done) {
// given
var reader = new Reader(model);
var rootHandler = reader.handler('props:ComplexAttrs');
// when
reader.fromXML('<props:complexAttrs xmlns:props="http://properties" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><props:attrs xsi:type="props:Attributes" integerValue="10" /></props:complexAttrs>', rootHandler, function(err, result) {
if (err) {
return done(err);
}
// then
expect(result.$parent).not.toBeDefined();
expect(result.attrs.$parent).toBe(result);
done();
});
});
it('should expose $parent on references', function(done) {
// given
var reader = new Reader(extendedModel);
var rootHandler = reader.handler('props:Root');
var xml =
'<props:root xmlns:props="http://properties">' +
'<props:containedCollection id="C_5">' +
'<props:complex id="C_1" />' +
'<props:complex id="C_2" />' +
'</props:containedCollection>' +
'<props:referencingSingle id="C_4" referencedComplex="C_1" />' +
'</props:root>';
// when
reader.fromXML(xml, rootHandler, function(err, result) {
if (err) {
return done(err);
}
var containedCollection = result.any[0];
var referencedComplex = result.any[1].referencedComplex;
// then
expect(referencedComplex.$parent).toBe(containedCollection);
done();
});
});
it('should expose $parent on extension elements', function(done) {
// given
var reader = new Reader(extensionModel);
var rootHandler = reader.handler('e:Root');
var xml =
'<e:root xmlns:e="http://extensions" xmlns:other="http://other">' +
'<e:id>FOO</e:id>' +
'<other:nestedMeta>' +
'<other:meta key="k1" value="v1" />' +
'<other:meta key="k2" value="v2" />' +
'<other:additionalNote>' +
'this is some text' +
'</other:additionalNote>' +
'</other:nestedMeta>' +
'</e:root>';
// when
reader.fromXML(xml, rootHandler, function(err, result) {
if (err) {
return done(err);
}
var child = result.extensions[0];
var nested = child.$children[0];
expect(child.$parent).toBe(result);
expect(nested.$parent).toBe(child);
expect(result).toDeepEqual({
$type: 'e:Root',
id: 'FOO',
extensions: [
{
$type: 'other:nestedMeta',
$children: [
{ $type: 'other:meta', key: 'k1', value: 'v1' },
{ $type: 'other:meta', key: 'k2', value: 'v2' },
{ $type: 'other:additionalNote', $body: 'this is some text' }
]
}
]
});
done();
});
})
});
});

@@ -0,10 +1,9 @@

'use strict';
var _ = require('lodash');
var Writer = require('../../lib/Writer'),
logger = require('moddle').util.Logger;
Helper = require('./Helper');
var Helper = require('./Helper'),
log = Helper.log;
describe('Writer', function() {

@@ -50,3 +49,3 @@

it('via xsi:type', function() {
// given

@@ -61,3 +60,3 @@ var writer = createWriter(datatypesModel);

var xml = writer.toXML(root);
// then

@@ -111,3 +110,3 @@ expect(xml).toEqual('<dt:root xmlns:dt="http://datatypes"><dt:bounds y="100" /></dt:root>');

});
});

@@ -117,5 +116,5 @@

describe('simple properties', function() {
it('attribute', function() {
// given

@@ -185,8 +184,8 @@ var writer = createWriter(model);

});
describe('embedded properties', function() {
it('single', function() {
// given

@@ -207,3 +206,3 @@ var writer = createWriter(model);

it('collection', function() {
// given

@@ -219,3 +218,3 @@ var writer = createWriter(model);

var any = root.get('any');
any.push(attributes);

@@ -234,3 +233,3 @@ any.push(simpleBody);

it('collection / different ns', function() {
// given

@@ -246,3 +245,3 @@ var writer = createWriter(extendedModel);

var any = root.get('any');
any.push(attributes1);

@@ -445,3 +444,3 @@ any.push(attributes2);

it('single', function() {
// given

@@ -462,3 +461,3 @@ var writer = createWriter(model);

it('collection', function() {
// given

@@ -493,3 +492,3 @@ var writer = createWriter(model);

describe('attributes', function() {
it('should write xsi:schemaLocation', function() {

@@ -513,3 +512,3 @@

it('should write extension attributes', function() {
// given

@@ -543,3 +542,3 @@ var writer = createWriter(extensionModel);

// then
// then
expect(xml).toEqual('<e:root xmlns:e="http://extensions" />');

@@ -587,3 +586,3 @@ });

it('should write extension element body', function() {
// given

@@ -590,0 +589,0 @@ var writer = createWriter(extensionModel);

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc