1- define ( [ 'jquery' , 'jxpath' ] , function ( $ , JXPath ) {
2- var resolver = function ( prefix ) {
1+ define ( [ 'jath' ] , function ( Jath ) {
2+ Jath . resolver = function ( prefix ) {
33 var mappings = {
44 def : "http://www.idpf.org/2007/opf" ,
55 dc : "http://purl.org/dc/elements/1.1/"
66 } ;
77 return mappings [ prefix ] ;
8- } ;
8+ }
99
10- PackageParser = {
11- parsePackageDom : function ( data ) {
12-
13- var jsonObj = {
10+ var jathTemplate = {
1411
15- metadata : {
16- id : $ . xpath ( data , "//def:metadata/dc:identifier" , resolver ) . text ( ) ,
17- epub_version : $ . xpath ( data , "//def:package/@version" , resolver ) . val ( ) ,
18- title : $ . xpath ( data , "//def:metadata/dc:title" , resolver ) . text ( ) ,
19- author : $ . xpath ( data , "//def:metadata/dc:creator" , resolver ) . text ( ) ,
20- publisher : $ . xpath ( data , "//def:metadata/dc:publisher" , resolver ) . text ( ) ,
21- description : $ . xpath ( data , "//def:metadata/dc:description" , resolver ) . text ( ) ,
22- rights : $ . xpath ( data , "//def:metadata/dc:rights" , resolver ) . text ( ) ,
23- language : $ . xpath ( data , "//def:metadata/dc:language" , resolver ) . text ( ) ,
24- pubdate : $ . xpath ( data , "//def:metadata/dc:date" , resolver ) . text ( ) ,
25- modified_date : $ . xpath ( data , "//def:metadata/def:meta[@property='dcterms:modified']" , resolver ) . text ( ) ,
26- layout : $ . xpath ( data , "//def:metadata/def:meta[@property='rendition:layout']" , resolver ) . text ( ) ,
27- spread : $ . xpath ( data , "//def:metadata/def:meta[@property='rendition:spread']" , resolver ) . text ( ) ,
28- orientation : $ . xpath ( data , "//def:metadata/def:meta[@property='rendition:orientation']" , resolver ) . text ( ) ,
29- ncx : $ . xpath ( data , "//def:spine/@toc" , resolver ) . val ( ) ,
30- page_prog_dir : $ . xpath ( data , "//def:spine/@page-progression-direction" , resolver ) . val ( ) ,
31- active_class : $ . xpath ( data , "//def:metadata/def:meta[@property='media:active-class']" , resolver ) . text ( )
32- }
33- /* UNUSED
34- manifest:
35- (function() {
36- var array = [];
37- $.xpath(data, "//def:item", resolver).each(function(item) {
38- array.push({
39- id: $.xpath(item, "@id ", resolver).val(),
40- href: $.xpath(item, "@href", resolver).val(),
41- media_type: $.xpath(item, "@media-type", resolver).val(),
42- properties: $.xpath(item, "@properties", resolver).val(),
43- media_overlay: $.xpath(item, "@media-overlay", resolver).val()
44- });
45- });
46- return array;
47- })(),
48-
49- spine:
50- (function() {
51- var array = [];
52- $.xpath(data, "//def:itemref", resolver).each(function(item) {
53- array.push({
54- idref: $.xpath(item, "@idref ", resolver).val(),
55- properties: $.xpath(item, "@properties", resolver).val(),
56- linear: $.xpath(item, "@linear", resolver).val()
57- });
58- });
59- return array;
60- })(),
61-
62- bindings:
63- (function() {
64- var array = [];
65- $.xpath(data, "//def:bindings/def:mediaType", resolver).each(function(item) {
66- array.push({
67- handler: $.xpath(item, "@handler ", resolver).val(),
68- media_type: $.xpath(item, "@media-type", resolver).val()
69- });
70- });
71- return array;
72- })()
73- */
74- } ;
75-
76- jsonObj = jsonObj . metadata ;
12+ metadata : {
13+ id : "//def:metadata/dc:identifier" ,
14+ epub_version : "//def:package/@version" ,
15+ title : "//def:metadata/dc:title" ,
16+ author : "//def:metadata/dc:creator" ,
17+ publisher : "//def:metadata/dc:publisher" ,
18+ description : "//def:metadata/dc:description" ,
19+ rights : "//def:metadata/dc:rights" ,
20+ language : "//def:metadata/dc:language" ,
21+ pubdate : "//def:metadata/dc:date" ,
22+ modified_date : "//def:metadata/def:meta[@property='dcterms:modified']" ,
23+ layout : "//def:metadata/def:meta[@property='rendition:layout']" ,
24+ spread : "//def:metadata/def:meta[@property='rendition:spread']" ,
25+ orientation : "//def:metadata/def:meta[@property='rendition:orientation']" ,
26+ ncx : "//def:spine/@toc" ,
27+ page_prog_dir : "//def:spine/@page-progression-direction" ,
28+ active_class : "//def:metadata/def:meta[@property='media:active-class']"
29+ } ,
30+
31+ manifest : [ "//def:item" , {
32+ id : "@id" ,
33+ href : "@href" ,
34+ media_type : "@media-type" ,
35+ properties : "@properties" ,
36+ media_overlay : "@media-overlay"
37+ } ] ,
38+
39+ spine : [ "//def:itemref" , { idref : "@idref" , properties : "@properties" , linear : "@linear" } ] ,
7740
78- //console.debug(JSON.stringify(jsonObj));
79-
41+ bindings : [ "//def:bindings/def:mediaType" , {
42+ handler : "@handler" ,
43+ media_type : "@media-type"
44+ } ]
45+
46+ } ;
47+
48+ PackageParser = {
49+ parsePackageDom : function ( data ) {
50+ var jsonObj = Jath . parse ( jathTemplate , data ) ;
51+ jsonObj = jsonObj . metadata ;
8052 jsonObj . coverHref = PackageParser . getCoverHref ( data ) ;
8153 return jsonObj ;
8254 } ,
@@ -114,6 +86,6 @@ define(['jquery', 'jxpath'], function($, JXPath){
11486 // seems like there isn't one, thats ok...
11587 return null ;
11688 } ,
117- }
118- return PackageParser ;
119- } )
89+ }
90+ return PackageParser ;
91+ } )
0 commit comments