1
- define ( [ 'jquery' , 'jxpath' ] , function ( $ , JXPath ) {
2
- var resolver = function ( prefix ) {
1
+ define ( [ 'jath' ] , function ( Jath ) {
2
+ Jath . resolver = function ( prefix ) {
3
3
var mappings = {
4
4
def : "http://www.idpf.org/2007/opf" ,
5
5
dc : "http://purl.org/dc/elements/1.1/"
6
6
} ;
7
7
return mappings [ prefix ] ;
8
- } ;
8
+ }
9
9
10
- PackageParser = {
11
- parsePackageDom : function ( data ) {
12
-
13
- var jsonObj = {
10
+ var jathTemplate = {
14
11
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" } ] ,
77
40
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 ;
80
52
jsonObj . coverHref = PackageParser . getCoverHref ( data ) ;
81
53
return jsonObj ;
82
54
} ,
@@ -114,6 +86,6 @@ define(['jquery', 'jxpath'], function($, JXPath){
114
86
// seems like there isn't one, thats ok...
115
87
return null ;
116
88
} ,
117
- }
118
- return PackageParser ;
119
- } )
89
+ }
90
+ return PackageParser ;
91
+ } )
0 commit comments