docx4js
Version:
javascript docx parser
46 lines (45 loc) • 1.43 kB
JavaScript
var FOUND_MODELS={}
define(['../parser','require'],function(Parser,require){
return Parser.extend(function(wXml,wDoc,mParent){
Parser.apply(this,arguments)
this.mParent=mParent
this.content=[]
if(mParent)
mParent.content.push(this)
},{
parse: function(visitFactories){
var visitors=[]
var paramizedVisitFactories=[];
$.map(visitFactories, function(visitFactory){
var visitor=visitFactory(this)
if(visitor){
visitors.push(visitor)
visitor.visit()
paramizedVisitFactories.push(visitFactory.with(visitor))
}
}.bind(this));
var factory=require('./factory')
this._iterate(function(wXml){
factory(wXml,this.wDoc,this).parse(paramizedVisitFactories)
}.bind(this),paramizedVisitFactories, visitors)
return visitors
},
_iterate: function(f,paramizedVisitFactories){
for(var i=0,children=this._getValidChildren(),l=children?children.length:0; i<l; i++)
(!this._shouldIgnore(children[i])) && f(children[i])
},
_getValidChildren:function(){
return this.wXml.childNodes
},
_shouldIgnore: function(wXml){
return false
},
_attr: function(selector, key){
var n=arguments.length==1 ? (key=selector, this.wXml) : this.wXml.$1(selector)
return n ? n.attr(key) : null
},
_val: function(selector){
return this._attr(selector,'w:val')
}
})
})