xspf 0.4.1 → 0.4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/coverage/index.html +25 -23
- data/coverage/lib-xspf_rb.html +473 -461
- data/lib/xspf.rb +11 -1
- metadata +3 -3
data/ChangeLog
CHANGED
data/coverage/index.html
CHANGED
@@ -110,7 +110,9 @@ table.report td.heading:hover {
|
|
110
110
|
table.report td.text {
|
111
111
|
border: #d0d0d0 1px solid;
|
112
112
|
}
|
113
|
-
table.report td.value
|
113
|
+
table.report td.value,
|
114
|
+
table.report td.lines_total,
|
115
|
+
table.report td.lines_code {
|
114
116
|
text-align: right;
|
115
117
|
border: #d0d0d0 1px solid;
|
116
118
|
}
|
@@ -149,7 +151,7 @@ table.report tr.dark {
|
|
149
151
|
</head>
|
150
152
|
<body>
|
151
153
|
<h3>C0 code coverage information</h3>
|
152
|
-
<p>Generated on
|
154
|
+
<p>Generated on Tue Apr 10 20:52:45 +0200 2007 with <a href='http://eigenclass.org/hiki.rb?rcov'>rcov 0.8.0</a>
|
153
155
|
</p>
|
154
156
|
<hr /> <table class='report'>
|
155
157
|
<thead>
|
@@ -164,22 +166,22 @@ table.report tr.dark {
|
|
164
166
|
<tbody>
|
165
167
|
<tr class='light'>
|
166
168
|
<td>TOTAL</td>
|
167
|
-
<td class='
|
168
|
-
<tt>
|
169
|
+
<td class='lines_total'>
|
170
|
+
<tt>491</tt>
|
169
171
|
</td>
|
170
|
-
<td class='
|
171
|
-
<tt>
|
172
|
+
<td class='lines_code'>
|
173
|
+
<tt>331</tt>
|
172
174
|
</td>
|
173
175
|
<td>
|
174
176
|
<table cellspacing='0' cellpadding='0' align='right'>
|
175
177
|
<tr>
|
176
178
|
<td>
|
177
|
-
<tt>
|
179
|
+
<tt class='coverage_total'>98.4%</tt> </td>
|
178
180
|
<td>
|
179
181
|
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
180
182
|
<tr>
|
181
|
-
<td class='covered' width='
|
182
|
-
<td class='uncovered' width='
|
183
|
+
<td class='covered' width='98' />
|
184
|
+
<td class='uncovered' width='2' />
|
183
185
|
</tr>
|
184
186
|
</table>
|
185
187
|
</td>
|
@@ -190,12 +192,12 @@ table.report tr.dark {
|
|
190
192
|
<table cellspacing='0' cellpadding='0' align='right'>
|
191
193
|
<tr>
|
192
194
|
<td>
|
193
|
-
<tt>
|
195
|
+
<tt class='coverage_code'>97.6%</tt> </td>
|
194
196
|
<td>
|
195
197
|
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
196
198
|
<tr>
|
197
|
-
<td class='covered' width='
|
198
|
-
<td class='uncovered' width='
|
199
|
+
<td class='covered' width='98' />
|
200
|
+
<td class='uncovered' width='2' />
|
199
201
|
</tr>
|
200
202
|
</table>
|
201
203
|
</td>
|
@@ -207,22 +209,22 @@ table.report tr.dark {
|
|
207
209
|
<td>
|
208
210
|
<a href='lib-xspf_rb.html'>lib/xspf.rb</a>
|
209
211
|
</td>
|
210
|
-
<td class='
|
211
|
-
<tt>
|
212
|
+
<td class='lines_total'>
|
213
|
+
<tt>491</tt>
|
212
214
|
</td>
|
213
|
-
<td class='
|
214
|
-
<tt>
|
215
|
+
<td class='lines_code'>
|
216
|
+
<tt>331</tt>
|
215
217
|
</td>
|
216
218
|
<td>
|
217
219
|
<table cellspacing='0' cellpadding='0' align='right'>
|
218
220
|
<tr>
|
219
221
|
<td>
|
220
|
-
<tt>
|
222
|
+
<tt class='coverage_total'>98.4%</tt> </td>
|
221
223
|
<td>
|
222
224
|
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
223
225
|
<tr>
|
224
|
-
<td class='covered' width='
|
225
|
-
<td class='uncovered' width='
|
226
|
+
<td class='covered' width='98' />
|
227
|
+
<td class='uncovered' width='2' />
|
226
228
|
</tr>
|
227
229
|
</table>
|
228
230
|
</td>
|
@@ -233,12 +235,12 @@ table.report tr.dark {
|
|
233
235
|
<table cellspacing='0' cellpadding='0' align='right'>
|
234
236
|
<tr>
|
235
237
|
<td>
|
236
|
-
<tt>
|
238
|
+
<tt class='coverage_code'>97.6%</tt> </td>
|
237
239
|
<td>
|
238
240
|
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
239
241
|
<tr>
|
240
|
-
<td class='covered' width='
|
241
|
-
<td class='uncovered' width='
|
242
|
+
<td class='covered' width='98' />
|
243
|
+
<td class='uncovered' width='2' />
|
242
244
|
</tr>
|
243
245
|
</table>
|
244
246
|
</td>
|
@@ -247,7 +249,7 @@ table.report tr.dark {
|
|
247
249
|
</td>
|
248
250
|
</tr>
|
249
251
|
</tbody>
|
250
|
-
</table><hr /> <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a> version 0.
|
252
|
+
</table><hr /> <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a> version 0.8.0.</p><p>
|
251
253
|
<a href='http://validator.w3.org/check/referer'>
|
252
254
|
<img src='http://www.w3.org/Icons/valid-xhtml11' height='31' alt='Valid XHTML 1.1!' width='88' />
|
253
255
|
</a>
|
data/coverage/lib-xspf_rb.html
CHANGED
@@ -110,7 +110,9 @@ table.report td.heading:hover {
|
|
110
110
|
table.report td.text {
|
111
111
|
border: #d0d0d0 1px solid;
|
112
112
|
}
|
113
|
-
table.report td.value
|
113
|
+
table.report td.value,
|
114
|
+
table.report td.lines_total,
|
115
|
+
table.report td.lines_code {
|
114
116
|
text-align: right;
|
115
117
|
border: #d0d0d0 1px solid;
|
116
118
|
}
|
@@ -554,7 +556,7 @@ span.run100 {
|
|
554
556
|
</head>
|
555
557
|
<body>
|
556
558
|
<h3>C0 code coverage information</h3>
|
557
|
-
<p>Generated on
|
559
|
+
<p>Generated on Tue Apr 10 20:52:45 +0200 2007 with <a href='http://eigenclass.org/hiki.rb?rcov'>rcov 0.8.0</a>
|
558
560
|
</p>
|
559
561
|
<hr /><pre><span class='marked0'>Code reported as executed by Ruby looks like this...
|
560
562
|
</span><span class='marked1'>and this: this line is also marked as covered.
|
@@ -577,22 +579,22 @@ span.run100 {
|
|
577
579
|
<td>
|
578
580
|
<a href='lib-xspf_rb.html'>lib/xspf.rb</a>
|
579
581
|
</td>
|
580
|
-
<td class='
|
581
|
-
<tt>
|
582
|
+
<td class='lines_total'>
|
583
|
+
<tt>491</tt>
|
582
584
|
</td>
|
583
|
-
<td class='
|
584
|
-
<tt>
|
585
|
+
<td class='lines_code'>
|
586
|
+
<tt>331</tt>
|
585
587
|
</td>
|
586
588
|
<td>
|
587
589
|
<table cellspacing='0' cellpadding='0' align='right'>
|
588
590
|
<tr>
|
589
591
|
<td>
|
590
|
-
<tt>
|
592
|
+
<tt class='coverage_total'>98.4%</tt> </td>
|
591
593
|
<td>
|
592
594
|
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
593
595
|
<tr>
|
594
|
-
<td class='covered' width='
|
595
|
-
<td class='uncovered' width='
|
596
|
+
<td class='covered' width='98' />
|
597
|
+
<td class='uncovered' width='2' />
|
596
598
|
</tr>
|
597
599
|
</table>
|
598
600
|
</td>
|
@@ -603,12 +605,12 @@ span.run100 {
|
|
603
605
|
<table cellspacing='0' cellpadding='0' align='right'>
|
604
606
|
<tr>
|
605
607
|
<td>
|
606
|
-
<tt>
|
608
|
+
<tt class='coverage_code'>97.6%</tt> </td>
|
607
609
|
<td>
|
608
610
|
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
609
611
|
<tr>
|
610
|
-
<td class='covered' width='
|
611
|
-
<td class='uncovered' width='
|
612
|
+
<td class='covered' width='98' />
|
613
|
+
<td class='uncovered' width='2' />
|
612
614
|
</tr>
|
613
615
|
</table>
|
614
616
|
</td>
|
@@ -631,474 +633,484 @@ span.run100 {
|
|
631
633
|
</span><span class="inferred0"><a name="line12" /> 12 #++
|
632
634
|
</span><span class="inferred1"><a name="line13" /> 13
|
633
635
|
</span><span class="marked0"><a name="line14" /> 14 require 'rexml/document'
|
634
|
-
</span><span class="
|
635
|
-
</span><span class="
|
636
|
-
</span><span class="
|
637
|
-
</span><span class="
|
638
|
-
</span><span class="
|
639
|
-
</span><span class="
|
640
|
-
</span><span class="
|
641
|
-
</span><span class="
|
642
|
-
</span><span class="
|
643
|
-
</span><span class="
|
644
|
-
</span><span class="
|
645
|
-
</span><span class="inferred0"><a name="line26" /> 26
|
646
|
-
</span><span class="inferred1"><a name="line27" /> 27
|
647
|
-
</span><span class="inferred0"><a name="line28" /> 28
|
648
|
-
</span><span class="inferred1"><a name="line29" /> 29
|
649
|
-
</span><span class="
|
650
|
-
</span><span class="inferred1"><a name="line31" /> 31
|
651
|
-
</span><span class="inferred0"><a name="line32" /> 32
|
652
|
-
</span><span class="
|
653
|
-
</span><span class="
|
654
|
-
</span><span class="inferred1"><a name="line35" /> 35
|
655
|
-
</span><span class="inferred0"><a name="line36" /> 36
|
656
|
-
</span><span class="inferred1"><a name="line37" /> 37
|
657
|
-
</span><span class="inferred0"><a name="line38" /> 38
|
658
|
-
</span><span class="inferred1"><a name="line39" /> 39
|
659
|
-
</span><span class="inferred0"><a name="line40" /> 40
|
660
|
-
</span><span class="inferred1"><a name="line41" /> 41
|
661
|
-
</span><span class="inferred0"><a name="line42" /> 42
|
662
|
-
</span><span class="inferred1"><a name="line43" /> 43
|
663
|
-
</span><span class="
|
664
|
-
</span><span class="inferred1"><a name="line45" /> 45
|
665
|
-
</span><span class="inferred0"><a name="line46" /> 46
|
666
|
-
</span><span class="
|
667
|
-
</span><span class="
|
668
|
-
</span><span class="
|
636
|
+
</span><span class="inferred1"><a name="line15" /> 15
|
637
|
+
</span><span class="marked0"><a name="line16" /> 16 begin
|
638
|
+
</span><span class="marked1"><a name="line17" /> 17 require 'xml/xslt_lib' # For ruby-xslt 0.9.3 or newer
|
639
|
+
</span><span class="uncovered0"><a name="line18" /> 18 rescue LoadError => e
|
640
|
+
</span><span class="uncovered1"><a name="line19" /> 19 begin
|
641
|
+
</span><span class="uncovered0"><a name="line20" /> 20 require 'xml/xslt' # For ruby-xslt 0.9.2 or older
|
642
|
+
</span><span class="uncovered1"><a name="line21" /> 21 rescue LoadError => e
|
643
|
+
</span><span class="uncovered0"><a name="line22" /> 22 puts "You need to install ruby-xslt to use ruby-xspf"
|
644
|
+
</span><span class="uncovered1"><a name="line23" /> 23 exit
|
645
|
+
</span><span class="uncovered0"><a name="line24" /> 24 end
|
646
|
+
</span><span class="uncovered1"><a name="line25" /> 25 end
|
647
|
+
</span><span class="inferred0"><a name="line26" /> 26
|
648
|
+
</span><span class="inferred1"><a name="line27" /> 27 # :include: USAGE
|
649
|
+
</span><span class="inferred0"><a name="line28" /> 28 # :main: USAGE
|
650
|
+
</span><span class="inferred1"><a name="line29" /> 29
|
651
|
+
</span><span class="marked0"><a name="line30" /> 30 module MetaGen #:nodoc:
|
652
|
+
</span><span class="inferred1"><a name="line31" /> 31
|
653
|
+
</span><span class="inferred0"><a name="line32" /> 32 # define the method
|
654
|
+
</span><span class="marked1"><a name="line33" /> 33 def self.add_method(klass, meth_name, body, meth_rdoc)
|
655
|
+
</span><span class="marked0"><a name="line34" /> 34 code = <<-CODE
|
656
|
+
</span><span class="inferred1"><a name="line35" /> 35 # #{meth_rdoc}
|
657
|
+
</span><span class="inferred0"><a name="line36" /> 36 def #{meth_name.downcase}
|
658
|
+
</span><span class="inferred1"><a name="line37" /> 37 @#{meth_name}
|
659
|
+
</span><span class="inferred0"><a name="line38" /> 38 end
|
660
|
+
</span><span class="inferred1"><a name="line39" /> 39
|
661
|
+
</span><span class="inferred0"><a name="line40" /> 40 def #{meth_name.downcase}=(value)
|
662
|
+
</span><span class="inferred1"><a name="line41" /> 41 @#{meth_name.downcase} = value
|
663
|
+
</span><span class="inferred0"><a name="line42" /> 42 end
|
664
|
+
</span><span class="inferred1"><a name="line43" /> 43
|
665
|
+
</span><span class="inferred0"><a name="line44" /> 44 private
|
666
|
+
</span><span class="inferred1"><a name="line45" /> 45 def parse_#{meth_name.downcase}
|
667
|
+
</span><span class="inferred0"><a name="line46" /> 46 begin
|
668
|
+
</span><span class="inferred1"><a name="line47" /> 47 #{body}
|
669
|
+
</span><span class="inferred0"><a name="line48" /> 48 rescue NoMethodError
|
670
|
+
</span><span class="inferred1"><a name="line49" /> 49 return nil
|
669
671
|
</span><span class="inferred0"><a name="line50" /> 50 end
|
670
672
|
</span><span class="inferred1"><a name="line51" /> 51 end
|
671
|
-
</span><span class="inferred0"><a name="line52" /> 52
|
672
|
-
</span><span class="inferred1"><a name="line53" /> 53
|
673
|
-
</span><span class="
|
674
|
-
</span><span class="inferred1"><a name="line55" /> 55
|
675
|
-
</span><span class="inferred0"><a name="line56" /> 56
|
676
|
-
</span><span class="marked1"><a name="line57" /> 57
|
677
|
-
</span><span class="marked0"><a name="line58" /> 58
|
678
|
-
</span><span class="marked1"><a name="line59" /> 59
|
679
|
-
</span><span class="inferred0"><a name="line60" /> 60
|
680
|
-
</span><span class="inferred1"><a name="line61" /> 61
|
681
|
-
</span><span class="inferred0"><a name="line62" /> 62
|
682
|
-
</span><span class="inferred1"><a name="line63" /> 63
|
683
|
-
</span><span class="inferred0"><a name="line64" /> 64
|
684
|
-
</span><span class="inferred1"><a name="line65" /> 65
|
685
|
-
</span><span class="inferred0"><a name="line66" /> 66
|
686
|
-
</span><span class="
|
687
|
-
</span><span class="
|
688
|
-
</span><span class="marked1"><a name="line69" /> 69
|
689
|
-
</span><span class="inferred0"><a name="line70" /> 70
|
690
|
-
</span><span class="
|
691
|
-
</span><span class="
|
692
|
-
</span><span class="
|
693
|
-
</span><span class="inferred0"><a name="line74" /> 74
|
694
|
-
</span><span class="inferred1"><a name="line75" /> 75
|
695
|
-
</span><span class="inferred0"><a name="line76" /> 76
|
696
|
-
</span><span class="inferred1"><a name="line77" /> 77
|
697
|
-
</span><span class="inferred0"><a name="line78" /> 78
|
698
|
-
</span><span class="
|
699
|
-
</span><span class="inferred0"><a name="line80" /> 80
|
700
|
-
</span><span class="marked1"><a name="line81" /> 81
|
701
|
-
</span><span class="
|
702
|
-
</span><span class="marked1"><a name="line83" /> 83
|
703
|
-
</span><span class="inferred0"><a name="line84" /> 84
|
704
|
-
</span><span class="inferred1"><a name="line85" /> 85
|
705
|
-
</span><span class="
|
706
|
-
</span><span class="
|
707
|
-
</span><span class="
|
708
|
-
</span><span class="inferred1"><a name="line89" /> 89
|
709
|
-
</span><span class="
|
710
|
-
</span><span class="marked1"><a name="line91" /> 91
|
711
|
-
</span><span class="
|
712
|
-
</span><span class="marked1"><a name="line93" /> 93
|
713
|
-
</span><span class="
|
714
|
-
</span><span class="
|
715
|
-
</span><span class="
|
716
|
-
</span><span class="marked1"><a name="line97" /> 97
|
717
|
-
</span><span class="marked0"><a name="line98" /> 98
|
718
|
-
</span><span class="inferred1"><a name="line99" /> 99
|
719
|
-
</span><span class="
|
720
|
-
</span><span class="marked1"><a name="line101" />101
|
721
|
-
</span><span class="marked0"><a name="line102" />102
|
722
|
-
</span><span class="
|
723
|
-
</span><span class="
|
724
|
-
</span><span class="
|
725
|
-
</span><span class="inferred0"><a name="line106" />106
|
726
|
-
</span><span class="
|
727
|
-
</span><span class="
|
728
|
-
</span><span class="inferred1"><a name="line109" />109
|
729
|
-
</span><span class="
|
730
|
-
</span><span class="marked1"><a name="line111" />111
|
731
|
-
</span><span class="marked0"><a name="line112" />112
|
732
|
-
</span><span class="
|
733
|
-
</span><span class="inferred0"><a name="line114" />114
|
734
|
-
</span><span class="
|
735
|
-
</span><span class="inferred0"><a name="line116" />116
|
736
|
-
</span><span class="
|
737
|
-
</span><span class="
|
738
|
-
</span><span class="inferred1"><a name="line119" />119
|
739
|
-
</span><span class="marked0"><a name="line120" />120
|
740
|
-
</span><span class="
|
741
|
-
</span><span class="marked0"><a name="line122" />122 @
|
742
|
-
</span><span class="marked1"><a name="line123" />123
|
743
|
-
</span><span class="
|
744
|
-
</span><span class="marked1"><a name="line125" />125
|
745
|
-
</span><span class="inferred0"><a name="line126" />126
|
746
|
-
</span><span class="marked1"><a name="line127" />127
|
747
|
-
</span><span class="
|
748
|
-
</span><span class="inferred1"><a name="line129" />129
|
749
|
-
</span><span class="
|
750
|
-
</span><span class="
|
751
|
-
</span><span class="marked0"><a name="line132" />132 @
|
752
|
-
</span><span class="marked1"><a name="line133" />133
|
753
|
-
</span><span class="marked0"><a name="line134" />134
|
754
|
-
</span><span class="
|
755
|
-
</span><span class="inferred0"><a name="line136" />136
|
756
|
-
</span><span class="marked1"><a name="line137" />137
|
757
|
-
</span><span class="inferred0"><a name="line138" />138
|
758
|
-
</span><span class="inferred1"><a name="line139" />139
|
759
|
-
</span><span class="
|
760
|
-
</span><span class="
|
761
|
-
</span><span class="marked0"><a name="line142" />142
|
762
|
-
</span><span class="
|
763
|
-
</span><span class="
|
764
|
-
</span><span class="
|
765
|
-
</span><span class="
|
766
|
-
</span><span class="marked1"><a name="line147" />147
|
767
|
-
</span><span class="inferred0"><a name="line148" />148
|
768
|
-
</span><span class="
|
769
|
-
</span><span class="marked0"><a name="line150" />150
|
770
|
-
</span><span class="
|
771
|
-
</span><span class="
|
673
|
+
</span><span class="inferred0"><a name="line52" /> 52 CODE
|
674
|
+
</span><span class="inferred1"><a name="line53" /> 53
|
675
|
+
</span><span class="marked0"><a name="line54" /> 54 klass.module_eval(code)
|
676
|
+
</span><span class="inferred1"><a name="line55" /> 55
|
677
|
+
</span><span class="inferred0"><a name="line56" /> 56 # hook to write klass + name attrib to a file
|
678
|
+
</span><span class="marked1"><a name="line57" /> 57 if $META_RDOC
|
679
|
+
</span><span class="marked0"><a name="line58" /> 58 open($META_RDOC, 'a+') do |f|
|
680
|
+
</span><span class="marked1"><a name="line59" /> 59 f.puts("class #{klass}\n #{code}\n end")
|
681
|
+
</span><span class="inferred0"><a name="line60" /> 60 end
|
682
|
+
</span><span class="inferred1"><a name="line61" /> 61 end
|
683
|
+
</span><span class="inferred0"><a name="line62" /> 62
|
684
|
+
</span><span class="inferred1"><a name="line63" /> 63 end
|
685
|
+
</span><span class="inferred0"><a name="line64" /> 64
|
686
|
+
</span><span class="inferred1"><a name="line65" /> 65 # output in different formats
|
687
|
+
</span><span class="inferred0"><a name="line66" /> 66 # FIXME Only works in parse mode, not in generation mode.
|
688
|
+
</span><span class="marked1"><a name="line67" /> 67 def self.add_output_format(klass, format, meth_rdoc)
|
689
|
+
</span><span class="marked0"><a name="line68" /> 68 xslt_path = "'#{File.join( File.dirname(__FILE__), %Q{xspf2#{format}.xsl} )}'"
|
690
|
+
</span><span class="marked1"><a name="line69" /> 69 code = <<-CODE
|
691
|
+
</span><span class="inferred0"><a name="line70" /> 70 # #{meth_rdoc}
|
692
|
+
</span><span class="inferred1"><a name="line71" /> 71 def to_#{format}
|
693
|
+
</span><span class="inferred0"><a name="line72" /> 72 xslt = XML::XSLT.new
|
694
|
+
</span><span class="inferred1"><a name="line73" /> 73 xslt.xml = self.to_xml
|
695
|
+
</span><span class="inferred0"><a name="line74" /> 74 xslt.xsl = REXML::Document.new( File.new( #{xslt_path} ) )
|
696
|
+
</span><span class="inferred1"><a name="line75" /> 75 xslt.serve
|
697
|
+
</span><span class="inferred0"><a name="line76" /> 76 end
|
698
|
+
</span><span class="inferred1"><a name="line77" /> 77 CODE
|
699
|
+
</span><span class="inferred0"><a name="line78" /> 78
|
700
|
+
</span><span class="marked1"><a name="line79" /> 79 klass.module_eval(code)
|
701
|
+
</span><span class="inferred0"><a name="line80" /> 80
|
702
|
+
</span><span class="marked1"><a name="line81" /> 81 if $META_RDOC
|
703
|
+
</span><span class="marked0"><a name="line82" /> 82 open($META_RDOC, 'a+') do |f|
|
704
|
+
</span><span class="marked1"><a name="line83" /> 83 f.puts("class #{klass}\n #{code}\n end")
|
705
|
+
</span><span class="inferred0"><a name="line84" /> 84 end
|
706
|
+
</span><span class="inferred1"><a name="line85" /> 85 end
|
707
|
+
</span><span class="inferred0"><a name="line86" /> 86
|
708
|
+
</span><span class="inferred1"><a name="line87" /> 87 end
|
709
|
+
</span><span class="inferred0"><a name="line88" /> 88
|
710
|
+
</span><span class="inferred1"><a name="line89" /> 89 end
|
711
|
+
</span><span class="inferred0"><a name="line90" /> 90
|
712
|
+
</span><span class="marked1"><a name="line91" /> 91 class XSPF
|
713
|
+
</span><span class="inferred0"><a name="line92" /> 92
|
714
|
+
</span><span class="marked1"><a name="line93" /> 93 attr_reader :xspf
|
715
|
+
</span><span class="inferred0"><a name="line94" /> 94
|
716
|
+
</span><span class="inferred1"><a name="line95" /> 95 #:stopdoc:
|
717
|
+
</span><span class="marked0"><a name="line96" /> 96 ATTRIBUTES = %w{ version encoding }
|
718
|
+
</span><span class="marked1"><a name="line97" /> 97 VERSION_RDOC = 'Version for the XML document or _nil_ if not defined'
|
719
|
+
</span><span class="marked0"><a name="line98" /> 98 ENCODING_RDOC = 'Encoding of the XML document or _nil_ if not defined'
|
720
|
+
</span><span class="inferred1"><a name="line99" /> 99
|
721
|
+
</span><span class="marked0"><a name="line100" />100 OUTPUT_FORMATS = %w{ m3u html smil rdf soundblox }
|
722
|
+
</span><span class="marked1"><a name="line101" />101 M3U_RDOC = 'Creates a .m3u playlist from the XSPF document. This method makes use of the official XSPF to M3U XSLT transformation by Lucas Gonze.'
|
723
|
+
</span><span class="marked0"><a name="line102" />102 HTML_RDOC = 'Outputs the playlist as an HTML page. This method makes use of the official XSPF to HTML XSLT transformation by Lucas Gonze.'
|
724
|
+
</span><span class="marked1"><a name="line103" />103 SMIL_RDOC = 'Creates a .smil playlist from the XSPF document. This method makes use of the official XSPF to SMIL XSLT transformation by Lucas Gonze.'
|
725
|
+
</span><span class="marked0"><a name="line104" />104 SOUNDBLOX_RDOC = 'Creates a SoundBlox playlist from the XSPF document. This method makes use of the official XSPF to SoundBlox XSLT tranformation by Lucas Gonze.'
|
726
|
+
</span><span class="marked1"><a name="line105" />105 RDF_RDOC = 'Creates a RDF feed from the XSPF document. This method makes use of the XSPF to RDF XSLT transformation by Libby Miller.'
|
727
|
+
</span><span class="inferred0"><a name="line106" />106
|
728
|
+
</span><span class="marked1"><a name="line107" />107 ATTRIBUTES.each do |attrib|
|
729
|
+
</span><span class="marked0"><a name="line108" />108 MetaGen.add_method(self, attrib, "@xspf.#{attrib}", eval(attrib.upcase + '_RDOC').to_s )
|
730
|
+
</span><span class="inferred1"><a name="line109" />109 end
|
731
|
+
</span><span class="inferred0"><a name="line110" />110
|
732
|
+
</span><span class="marked1"><a name="line111" />111 OUTPUT_FORMATS.each do |format|
|
733
|
+
</span><span class="marked0"><a name="line112" />112 MetaGen.add_output_format(self, format, eval(format.upcase + '_RDOC').to_s )
|
734
|
+
</span><span class="inferred1"><a name="line113" />113 end
|
735
|
+
</span><span class="inferred0"><a name="line114" />114
|
736
|
+
</span><span class="inferred1"><a name="line115" />115 #:startdoc:
|
737
|
+
</span><span class="inferred0"><a name="line116" />116
|
738
|
+
</span><span class="inferred1"><a name="line117" />117 # Creates a XSPF object from a file or string (parse mode) or from a hash or nil (generation mode).
|
739
|
+
</span><span class="inferred0"><a name="line118" />118 #
|
740
|
+
</span><span class="inferred1"><a name="line119" />119 # Possible keys in the hash: :version, :encoding
|
741
|
+
</span><span class="marked0"><a name="line120" />120 def initialize(source = nil)
|
742
|
+
</span><span class="marked1"><a name="line121" />121 if ( source.nil? || source.instance_of?(Hash) ) then
|
743
|
+
</span><span class="marked0"><a name="line122" />122 @version = if source.nil? || !source.has_key?(:version)
|
744
|
+
</span><span class="marked1"><a name="line123" />123 '1.0'
|
745
|
+
</span><span class="inferred0"><a name="line124" />124 else
|
746
|
+
</span><span class="marked1"><a name="line125" />125 source[:version]
|
747
|
+
</span><span class="inferred0"><a name="line126" />126 end
|
748
|
+
</span><span class="marked1"><a name="line127" />127 @encoding = if source.nil? || !source.has_key?(:encoding)
|
749
|
+
</span><span class="marked0"><a name="line128" />128 'UTF-8'
|
750
|
+
</span><span class="inferred1"><a name="line129" />129 else
|
751
|
+
</span><span class="marked0"><a name="line130" />130 source[:encoding]
|
752
|
+
</span><span class="inferred1"><a name="line131" />131 end
|
753
|
+
</span><span class="marked0"><a name="line132" />132 @playlist = nil
|
754
|
+
</span><span class="marked1"><a name="line133" />133 @playlist = if !source.nil? && source.has_key?(:playlist) then
|
755
|
+
</span><span class="marked0"><a name="line134" />134 if source[:playlist].instance_of?(XSPF::Playlist)
|
756
|
+
</span><span class="marked1"><a name="line135" />135 source[:playlist]
|
757
|
+
</span><span class="inferred0"><a name="line136" />136 else
|
758
|
+
</span><span class="marked1"><a name="line137" />137 raise(TypeError, 'You must pass a file/string (parsing mode) or a hash/nothing (generator mode) as argument to XSPF#new')
|
759
|
+
</span><span class="inferred0"><a name="line138" />138 end
|
760
|
+
</span><span class="inferred1"><a name="line139" />139 end
|
761
|
+
</span><span class="inferred0"><a name="line140" />140
|
762
|
+
</span><span class="marked1"><a name="line141" />141 elsif ( source.instance_of?(File) || source.instance_of?(String) ) then
|
763
|
+
</span><span class="marked0"><a name="line142" />142 @xspf = REXML::Document.new(source)
|
764
|
+
</span><span class="marked1"><a name="line143" />143 ATTRIBUTES.each do |attrib|
|
765
|
+
</span><span class="marked0"><a name="line144" />144 eval('@' + attrib + '= parse_' + attrib)
|
766
|
+
</span><span class="inferred1"><a name="line145" />145 end
|
767
|
+
</span><span class="inferred0"><a name="line146" />146
|
768
|
+
</span><span class="marked1"><a name="line147" />147 @playlist = XSPF::Playlist.new(self)
|
769
|
+
</span><span class="inferred0"><a name="line148" />148
|
770
|
+
</span><span class="inferred1"><a name="line149" />149 else
|
771
|
+
</span><span class="marked0"><a name="line150" />150 raise(TypeError, 'You must pass a file/string (parsing mode) or a hash/nothing (generator mode) as argument to XSPF#new')
|
772
|
+
</span><span class="inferred1"><a name="line151" />151 end
|
773
|
+
</span><span class="marked0"><a name="line152" />152 end
|
772
774
|
</span><span class="inferred1"><a name="line153" />153
|
773
|
-
</span><span class="inferred0"><a name="line154" />154 #
|
774
|
-
</span><span class="marked1"><a name="line155" />155 def
|
775
|
-
</span><span class="marked0"><a name="line156" />156
|
776
|
-
</span><span class="marked1"><a name="line157" />157
|
777
|
-
</span><span class="
|
778
|
-
</span><span class="marked1"><a name="line159" />159
|
779
|
-
</span><span class="
|
780
|
-
</span><span class="
|
781
|
-
</span><span class="inferred0"><a name="line162" />162
|
782
|
-
</span><span class="
|
783
|
-
</span><span class="
|
784
|
-
</span><span class="marked1"><a name="line165" />165
|
785
|
-
</span><span class="marked0"><a name="line166" />166
|
786
|
-
</span><span class="
|
787
|
-
</span><span class="
|
788
|
-
</span><span class="
|
789
|
-
</span><span class="
|
775
|
+
</span><span class="inferred0"><a name="line154" />154 # A XSPF::Playlist object
|
776
|
+
</span><span class="marked1"><a name="line155" />155 def playlist
|
777
|
+
</span><span class="marked0"><a name="line156" />156 @playlist
|
778
|
+
</span><span class="marked1"><a name="line157" />157 end
|
779
|
+
</span><span class="inferred0"><a name="line158" />158
|
780
|
+
</span><span class="marked1"><a name="line159" />159 def playlist=(value)
|
781
|
+
</span><span class="marked0"><a name="line160" />160 raise(TypeError, 'The playlist must be an instance of XSPF::Playlist') unless value.instance_of?(XSPF::Playlist)
|
782
|
+
</span><span class="marked1"><a name="line161" />161 @playlist = value
|
783
|
+
</span><span class="inferred0"><a name="line162" />162 end
|
784
|
+
</span><span class="inferred1"><a name="line163" />163
|
785
|
+
</span><span class="inferred0"><a name="line164" />164 # Exports the XSPF object to XML
|
786
|
+
</span><span class="marked1"><a name="line165" />165 def to_xml
|
787
|
+
</span><span class="marked0"><a name="line166" />166 xml = REXML::Document.new
|
788
|
+
</span><span class="marked1"><a name="line167" />167 xml << REXML::XMLDecl.new(@version, @encoding)
|
789
|
+
</span><span class="marked0"><a name="line168" />168 xml << REXML::Document.new(@playlist.to_xml) unless @playlist.nil?
|
790
|
+
</span><span class="marked1"><a name="line169" />169 xml.to_s
|
791
|
+
</span><span class="inferred0"><a name="line170" />170 end
|
790
792
|
</span><span class="inferred1"><a name="line171" />171
|
791
|
-
</span><span class="
|
792
|
-
</span><span class="
|
793
|
-
</span><span class="
|
794
|
-
</span><span class="marked1"><a name="line175" />175
|
795
|
-
</span><span class="marked0"><a name="line176" />176
|
796
|
-
</span><span class="
|
797
|
-
</span><span class="
|
798
|
-
</span><span class="
|
799
|
-
</span><span class="
|
800
|
-
</span><span class="
|
801
|
-
</span><span class="marked0"><a name="line182" />182
|
802
|
-
</span><span class="
|
803
|
-
</span><span class="
|
804
|
-
</span><span class="marked1"><a name="line185" />185
|
805
|
-
</span><span class="marked0"><a name="line186" />186
|
806
|
-
</span><span class="marked1"><a name="line187" />187
|
807
|
-
</span><span class="marked0"><a name="line188" />188
|
808
|
-
</span><span class="marked1"><a name="line189" />189
|
809
|
-
</span><span class="
|
810
|
-
</span><span class="marked1"><a name="line191" />191
|
811
|
-
</span><span class="marked0"><a name="line192" />192
|
812
|
-
</span><span class="marked1"><a name="line193" />193
|
813
|
-
</span><span class="marked0"><a name="line194" />194
|
814
|
-
</span><span class="marked1"><a name="line195" />195
|
815
|
-
</span><span class="marked0"><a name="line196" />196
|
816
|
-
</span><span class="marked1"><a name="line197" />197
|
817
|
-
</span><span class="marked0"><a name="line198" />198
|
818
|
-
</span><span class="marked1"><a name="line199" />199
|
819
|
-
</span><span class="
|
820
|
-
</span><span class="
|
821
|
-
</span><span class="
|
822
|
-
</span><span class="
|
823
|
-
</span><span class="
|
824
|
-
</span><span class="
|
825
|
-
</span><span class="
|
826
|
-
</span><span class="
|
827
|
-
</span><span class="marked0"><a name="line208" />208
|
828
|
-
</span><span class="marked1"><a name="line209" />209
|
829
|
-
</span><span class="inferred0"><a name="line210" />210
|
830
|
-
</span><span class="inferred1"><a name="line211" />211
|
831
|
-
</span><span class="
|
832
|
-
</span><span class="
|
833
|
-
</span><span class="inferred0"><a name="line214" />214
|
834
|
-
</span><span class="inferred1"><a name="line215" />215
|
835
|
-
</span><span class="
|
836
|
-
</span><span class="
|
837
|
-
</span><span class="marked0"><a name="line218" />218
|
838
|
-
</span><span class="
|
839
|
-
</span><span class="inferred0"><a name="line220" />220
|
840
|
-
</span><span class="inferred1"><a name="line221" />221
|
841
|
-
</span><span class="
|
842
|
-
</span><span class="
|
843
|
-
</span><span class="inferred0"><a name="line224" />224
|
844
|
-
</span><span class="inferred1"><a name="line225" />225
|
845
|
-
</span><span class="marked0"><a name="line226" />226
|
846
|
-
</span><span class="
|
847
|
-
</span><span class="marked0"><a name="line228" />228
|
848
|
-
</span><span class="inferred1"><a name="line229" />229
|
849
|
-
</span><span class="
|
850
|
-
</span><span class="
|
851
|
-
</span><span class="inferred0"><a name="line232" />232
|
852
|
-
</span><span class="inferred1"><a name="line233" />233
|
853
|
-
</span><span class="
|
854
|
-
</span><span class="
|
855
|
-
</span><span class="
|
793
|
+
</span><span class="inferred0"><a name="line172" />172 # The <playlist> section of the XSPF document (outputs XML code). This method is only used while parsing.
|
794
|
+
</span><span class="marked1"><a name="line173" />173 protected
|
795
|
+
</span><span class="marked0"><a name="line174" />174 def playlist_xml
|
796
|
+
</span><span class="marked1"><a name="line175" />175 @xspf.root
|
797
|
+
</span><span class="marked0"><a name="line176" />176 end
|
798
|
+
</span><span class="inferred1"><a name="line177" />177
|
799
|
+
</span><span class="inferred0"><a name="line178" />178 end
|
800
|
+
</span><span class="inferred1"><a name="line179" />179
|
801
|
+
</span><span class="marked0"><a name="line180" />180 class XSPF::Playlist < XSPF
|
802
|
+
</span><span class="inferred1"><a name="line181" />181
|
803
|
+
</span><span class="marked0"><a name="line182" />182 attr_reader :playlist
|
804
|
+
</span><span class="inferred1"><a name="line183" />183
|
805
|
+
</span><span class="inferred0"><a name="line184" />184 #:stopdoc:
|
806
|
+
</span><span class="marked1"><a name="line185" />185 ATTRIBUTES = %w{ xmlns version }
|
807
|
+
</span><span class="marked0"><a name="line186" />186 ELEMENTS = %w{ title creator annotation info location identifier image date license attribution extension }
|
808
|
+
</span><span class="marked1"><a name="line187" />187 ATTRIBUTE_AND_ELEMENT = %w{ link meta }
|
809
|
+
</span><span class="marked0"><a name="line188" />188 ATTRIBUTION_CHILD_ELEMENTS = %w{ location identifier }
|
810
|
+
</span><span class="marked1"><a name="line189" />189 EXTENSION_CHILD_ELEMENTS = %w{ application content }
|
811
|
+
</span><span class="inferred0"><a name="line190" />190
|
812
|
+
</span><span class="marked1"><a name="line191" />191 XMLNS_RDOC = 'The XML namespace. It must be http://xspf.org/ns/0/ for a valid XSPF document.'
|
813
|
+
</span><span class="marked0"><a name="line192" />192 XMLNS_DEFAULT = 'http://xspf.org/ns/0/'
|
814
|
+
</span><span class="marked1"><a name="line193" />193 VERSION_RDOC = 'The XSPF version. It may be 0 or 1, although 1 is strongly advised.'
|
815
|
+
</span><span class="marked0"><a name="line194" />194 VERSION_DEFAULT = '1'
|
816
|
+
</span><span class="marked1"><a name="line195" />195 TITLE_RDOC = 'A human-readable title for the playlist. xspf:playlist elements MAY contain exactly one.'
|
817
|
+
</span><span class="marked0"><a name="line196" />196 CREATOR_RDOC = 'Human-readable name of the entity (author, authors, group, company, etc) that authored the playlist. XSPF::Playlist objects MAY contain exactly one.'
|
818
|
+
</span><span class="marked1"><a name="line197" />197 ANNOTATION_RDOC = 'A human-readable comment on the playlist. This is character data, not HTML, and it may not contain markup. XSPF::Playlist objects elements MAY contain exactly one.'
|
819
|
+
</span><span class="marked0"><a name="line198" />198 INFO_RDOC = 'URL of a web page to find out more about this playlist. Likely to be homepage of the author, and would be used to find out more about the author and to find more playlists by the author. XSPF::Playlist objects MAY contain exactly one.'
|
820
|
+
</span><span class="marked1"><a name="line199" />199 LOCATION_RDOC = 'Source URL for this playlist. XSPF::Playlist objects MAY contain exactly one.'
|
821
|
+
</span><span class="marked0"><a name="line200" />200 IDENTIFIER_RDOC = 'Canonical ID for this playlist. Likely to be a hash or other location-independent name. MUST be a legal URN. XSPF::Playlist objects MAY contain exactly one.'
|
822
|
+
</span><span class="marked1"><a name="line201" />201 IMAGE_RDOC = 'URL of an image to display if XSPF::Playlist#image return nil. XSPF::Playlist objects MAY contain exactly one.'
|
823
|
+
</span><span class="marked0"><a name="line202" />202 DATE_RDOC = 'Creation date (not last-modified date) of the playlist, formatted as a XML schema dateTime. XSPF::Playlist objects MAY contain exactly one.'
|
824
|
+
</span><span class="marked1"><a name="line203" />203 LICENSE_RDOC = 'URL of a resource that describes the license under which this playlist was released. XSPF::Playlist objects MAY contain zero or one license element.'
|
825
|
+
</span><span class="marked0"><a name="line204" />204 ATTRIBUTION_RDOC = 'An ordered list of URIs. The purpose is to satisfy licenses allowing modification but requiring attribution. If you modify such a playlist, move its XSPF::Playlist#location or XSPF::Playlist#identifier element to the top of the items in the XSPF::Playlist#attribution element. XSPF::Playlist objects MAY contain exactly one attribution element. Please note that currently XSPF for Ruby does not parse the contents of XSPF::Playlist#attribution.'
|
826
|
+
</span><span class="marked1"><a name="line205" />205 EXTENSION_RDOC = 'The extension element allows non-XSPF XML to be included in XSPF documents without breaking XSPF validation. The purpose is to allow nested XML, which the meta and link elements do not. XSPF::Playlist objects MAY contain zero or more extension elements but currently XSPF for Ruby returns only the first one.'
|
827
|
+
</span><span class="marked0"><a name="line206" />206 LINK_REL_RDOC = 'The link element allows non-XSPF web resources to be included in XSPF documents without breaking XSPF validation. A valid _link_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Playlist#link_rel and XSPF::Playlist#link_content respectively. XSPF::Playlist objects MAY contain zero or more link elements, but currently XSPF for Ruby returns only the first one.'
|
828
|
+
</span><span class="marked1"><a name="line207" />207 LINK_CONTENT_RDOC = 'The link element allows non-XSPF web resources to be included in XSPF documents without breaking XSPF validation. A valid _link_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Playlist#link_rel and XSPF::Playlist#link_content respectively. XSPF::Playlist objects MAY contain zero or more meta elements, but currently XSPF for Ruby returns only the first one.'
|
829
|
+
</span><span class="marked0"><a name="line208" />208 META_REL_RDOC = 'The meta element allows non-XSPF metadata to be included in XSPF documents without breaking XSPF validation. A valid _meta_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Playlist#meta_rel and XSPF::Playlist#meta_content respectively. XSPF::Playlist objects MAY contain zero or more meta elements, but currently XSPF for Ruby returns only the first one.'
|
830
|
+
</span><span class="marked1"><a name="line209" />209 META_CONTENT_RDOC = 'The meta element allows non-XSPF metadata to be included in XSPF documents without breaking XSPF validation. A valid _meta_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Playlist#meta_rel and XSPF::Playlist#meta_content respectively. XSPF::Playlist objects MAY contain zero or more meta elements, but currently XSPF for Ruby returns only the first one.'
|
831
|
+
</span><span class="inferred0"><a name="line210" />210
|
832
|
+
</span><span class="inferred1"><a name="line211" />211 # FIXME Currently we only return the first "link"
|
833
|
+
</span><span class="inferred0"><a name="line212" />212 # FIXME Currently we only return the first "meta"
|
834
|
+
</span><span class="inferred1"><a name="line213" />213 # FIXME Currently we only return the first "extension"
|
835
|
+
</span><span class="inferred0"><a name="line214" />214 # TODO Parse "attribution"
|
836
|
+
</span><span class="inferred1"><a name="line215" />215 # TODO Parse "extension"
|
837
|
+
</span><span class="inferred0"><a name="line216" />216
|
838
|
+
</span><span class="inferred1"><a name="line217" />217 # Returns the value of the attribute or nil if the attribute is not present
|
839
|
+
</span><span class="marked0"><a name="line218" />218 ATTRIBUTES.each do |attrib|
|
840
|
+
</span><span class="marked1"><a name="line219" />219 MetaGen.add_method( self, attrib, "@playlist.root.attributes['#{attrib}']", eval(attrib.upcase + '_RDOC').to_s )
|
841
|
+
</span><span class="inferred0"><a name="line220" />220 end
|
842
|
+
</span><span class="inferred1"><a name="line221" />221
|
843
|
+
</span><span class="marked0"><a name="line222" />222 ELEMENTS.each do |element|
|
844
|
+
</span><span class="marked1"><a name="line223" />223 MetaGen.add_method( self, element, "@playlist.elements['#{element}'].text", eval(element.upcase + '_RDOC').to_s )
|
845
|
+
</span><span class="inferred0"><a name="line224" />224 end
|
846
|
+
</span><span class="inferred1"><a name="line225" />225
|
847
|
+
</span><span class="marked0"><a name="line226" />226 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
848
|
+
</span><span class="marked1"><a name="line227" />227 MetaGen.add_method( self, "#{ae}_content", "@playlist.elements['#{ae}'].text", eval(ae.upcase + '_CONTENT_RDOC').to_s )
|
849
|
+
</span><span class="marked0"><a name="line228" />228 MetaGen.add_method( self, "#{ae}_rel", "@playlist.elements['#{ae}'].attributes['rel']", eval(ae.upcase + '_REL_RDOC').to_s )
|
850
|
+
</span><span class="inferred1"><a name="line229" />229 end
|
851
|
+
</span><span class="inferred0"><a name="line230" />230
|
852
|
+
</span><span class="inferred1"><a name="line231" />231 #:startdoc:
|
853
|
+
</span><span class="inferred0"><a name="line232" />232
|
854
|
+
</span><span class="inferred1"><a name="line233" />233 # Creates a XSPF::Playlist from a XSPF document (parse mode) or from a hash of values (generation mode)
|
855
|
+
</span><span class="inferred0"><a name="line234" />234 #
|
856
|
+
</span><span class="inferred1"><a name="line235" />235 # Possible keys in the hash: :xmlns, :version, :title, :creator, :annotation, :info, :location, :identifier, :image, :date, :license, :attribution, :extension, :link_rel, :link_content, :meta_rel, :meta_content
|
857
|
+
</span><span class="marked0"><a name="line236" />236 def initialize(source = nil)
|
856
858
|
</span><span class="inferred1"><a name="line237" />237
|
857
|
-
</span><span class="marked0"><a name="line238" />238
|
858
|
-
</span><span class="
|
859
|
-
</span><span class="marked0"><a name="line240" />240
|
860
|
-
</span><span class="
|
861
|
-
</span><span class="inferred0"><a name="line242" />242
|
862
|
-
</span><span class="
|
863
|
-
</span><span class="marked0"><a name="line244" />244
|
864
|
-
</span><span class="
|
865
|
-
</span><span class="
|
866
|
-
</span><span class="inferred1"><a name="line247" />247
|
867
|
-
</span><span class="
|
868
|
-
</span><span class="marked1"><a name="line249" />249
|
869
|
-
</span><span class="
|
870
|
-
</span><span class="
|
859
|
+
</span><span class="marked0"><a name="line238" />238 if ( source.instance_of?(Hash) || source.nil? ) then
|
860
|
+
</span><span class="inferred1"><a name="line239" />239
|
861
|
+
</span><span class="marked0"><a name="line240" />240 ATTRIBUTES.each do |attrib|
|
862
|
+
</span><span class="marked1"><a name="line241" />241 add_instance_variable(source, attrib)
|
863
|
+
</span><span class="inferred0"><a name="line242" />242 end
|
864
|
+
</span><span class="inferred1"><a name="line243" />243
|
865
|
+
</span><span class="marked0"><a name="line244" />244 ELEMENTS.each do |element|
|
866
|
+
</span><span class="marked1"><a name="line245" />245 add_instance_variable(source, element)
|
867
|
+
</span><span class="inferred0"><a name="line246" />246 end
|
868
|
+
</span><span class="inferred1"><a name="line247" />247
|
869
|
+
</span><span class="marked0"><a name="line248" />248 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
870
|
+
</span><span class="marked1"><a name="line249" />249 add_instance_variable(source, "#{ae}_content" )
|
871
|
+
</span><span class="marked0"><a name="line250" />250 add_instance_variable(source, "#{ae}_rel" )
|
872
|
+
</span><span class="inferred1"><a name="line251" />251 end
|
871
873
|
</span><span class="inferred0"><a name="line252" />252
|
872
|
-
</span><span class="marked1"><a name="line253" />253
|
873
|
-
</span><span class="marked0"><a name="line254" />254
|
874
|
-
</span><span class="inferred1"><a name="line255" />255
|
875
|
-
</span><span class="
|
876
|
-
</span><span class="
|
877
|
-
</span><span class="
|
878
|
-
</span><span class="
|
874
|
+
</span><span class="marked1"><a name="line253" />253 @tracklist = if ( !source.nil? && source.has_key?(:tracklist) && source[:tracklist].instance_of?(XSPF::Tracklist) )
|
875
|
+
</span><span class="marked0"><a name="line254" />254 source[:tracklist]
|
876
|
+
</span><span class="inferred1"><a name="line255" />255 else
|
877
|
+
</span><span class="marked0"><a name="line256" />256 nil
|
878
|
+
</span><span class="inferred1"><a name="line257" />257 end
|
879
|
+
</span><span class="inferred0"><a name="line258" />258
|
880
|
+
</span><span class="marked1"><a name="line259" />259 elsif source.instance_of?(XSPF) then
|
879
881
|
</span><span class="inferred0"><a name="line260" />260
|
880
|
-
</span><span class="marked1"><a name="line261" />261
|
881
|
-
</span><span class="
|
882
|
-
</span><span class="marked1"><a name="line263" />263
|
883
|
-
</span><span class="
|
884
|
-
</span><span class="inferred1"><a name="line265" />265
|
885
|
-
</span><span class="
|
886
|
-
</span><span class="
|
887
|
-
</span><span class="
|
888
|
-
</span><span class="
|
889
|
-
</span><span class="inferred0"><a name="line270" />270
|
890
|
-
</span><span class="
|
891
|
-
</span><span class="marked0"><a name="line272" />272
|
892
|
-
</span><span class="
|
893
|
-
</span><span class="inferred0"><a name="line274" />274
|
894
|
-
</span><span class="
|
895
|
-
</span><span class="marked0"><a name="line276" />276
|
896
|
-
</span><span class="
|
897
|
-
</span><span class="inferred0"><a name="line278" />278
|
898
|
-
</span><span class="marked1"><a name="line279" />279
|
899
|
-
</span><span class="
|
900
|
-
</span><span class="
|
901
|
-
</span><span class="
|
882
|
+
</span><span class="marked1"><a name="line261" />261 @playlist = source.playlist_xml
|
883
|
+
</span><span class="inferred0"><a name="line262" />262
|
884
|
+
</span><span class="marked1"><a name="line263" />263 ATTRIBUTES.each do |attrib|
|
885
|
+
</span><span class="marked0"><a name="line264" />264 eval('@' + attrib.downcase + '= parse_' + attrib.downcase)
|
886
|
+
</span><span class="inferred1"><a name="line265" />265 end
|
887
|
+
</span><span class="inferred0"><a name="line266" />266
|
888
|
+
</span><span class="marked1"><a name="line267" />267 ELEMENTS.each do |element|
|
889
|
+
</span><span class="marked0"><a name="line268" />268 eval('@' + element.downcase + '= parse_' + element.downcase)
|
890
|
+
</span><span class="inferred1"><a name="line269" />269 end
|
891
|
+
</span><span class="inferred0"><a name="line270" />270
|
892
|
+
</span><span class="marked1"><a name="line271" />271 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
893
|
+
</span><span class="marked0"><a name="line272" />272 eval('@' + ae.downcase + '_content = parse_' + ae.downcase + '_content')
|
894
|
+
</span><span class="marked1"><a name="line273" />273 eval('@' + ae.downcase + '_rel = parse_' + ae.downcase + '_rel')
|
895
|
+
</span><span class="inferred0"><a name="line274" />274 end
|
896
|
+
</span><span class="inferred1"><a name="line275" />275
|
897
|
+
</span><span class="marked0"><a name="line276" />276 @tracklist = XSPF::Tracklist.new(self)
|
898
|
+
</span><span class="inferred1"><a name="line277" />277
|
899
|
+
</span><span class="inferred0"><a name="line278" />278 else
|
900
|
+
</span><span class="marked1"><a name="line279" />279 raise(TypeError, 'You must pass a XSPF object (parsing mode) or a hash (generator mode) as argument to XSPF::Playlist#new')
|
901
|
+
</span><span class="inferred0"><a name="line280" />280 end
|
902
|
+
</span><span class="inferred1"><a name="line281" />281
|
903
|
+
</span><span class="marked0"><a name="line282" />282 end
|
902
904
|
</span><span class="inferred1"><a name="line283" />283
|
903
|
-
</span><span class="
|
904
|
-
</span><span class="
|
905
|
-
</span><span class="
|
906
|
-
</span><span class="marked1"><a name="line287" />287
|
907
|
-
</span><span class="inferred0"><a name="line288" />288
|
908
|
-
</span><span class="marked1"><a name="line289" />289
|
909
|
-
</span><span class="
|
910
|
-
</span><span class="marked1"><a name="line291" />291
|
911
|
-
</span><span class="inferred0"><a name="line292" />292
|
912
|
-
</span><span class="
|
913
|
-
</span><span class="marked0"><a name="line294" />294
|
914
|
-
</span><span class="inferred1"><a name="line295" />295
|
915
|
-
</span><span class="inferred0"><a name="line296" />296
|
916
|
-
</span><span class="
|
917
|
-
</span><span class="
|
918
|
-
</span><span class="
|
919
|
-
</span><span class="
|
920
|
-
</span><span class="marked1"><a name="line301" />301
|
921
|
-
</span><span class="
|
922
|
-
</span><span class="marked1"><a name="line303" />303
|
923
|
-
</span><span class="
|
924
|
-
</span><span class="inferred1"><a name="line305" />305
|
925
|
-
</span><span class="inferred0"><a name="line306" />306
|
926
|
-
</span><span class="
|
927
|
-
</span><span class="
|
928
|
-
</span><span class="
|
929
|
-
</span><span class="marked0"><a name="line310" />310
|
930
|
-
</span><span class="marked1"><a name="line311" />311 el
|
931
|
-
</span><span class="marked0"><a name="line312" />312 el.add_text( eval('@' +
|
905
|
+
</span><span class="inferred0"><a name="line284" />284 # A XSPF::Tracklist object
|
906
|
+
</span><span class="marked1"><a name="line285" />285 def tracklist
|
907
|
+
</span><span class="marked0"><a name="line286" />286 @tracklist
|
908
|
+
</span><span class="marked1"><a name="line287" />287 end
|
909
|
+
</span><span class="inferred0"><a name="line288" />288
|
910
|
+
</span><span class="marked1"><a name="line289" />289 def tracklist=(value)
|
911
|
+
</span><span class="marked0"><a name="line290" />290 raise(TypeError, 'The tracklist must be an instance of XSPF::Tracklist') unless value.instance_of?(XSPF::Tracklist)
|
912
|
+
</span><span class="marked1"><a name="line291" />291 @tracklist = value
|
913
|
+
</span><span class="inferred0"><a name="line292" />292 end
|
914
|
+
</span><span class="inferred1"><a name="line293" />293
|
915
|
+
</span><span class="marked0"><a name="line294" />294 alias :<< :tracklist=
|
916
|
+
</span><span class="inferred1"><a name="line295" />295
|
917
|
+
</span><span class="inferred0"><a name="line296" />296 # Exports the XSPF::Playlist to XML (only the <playlist> section)
|
918
|
+
</span><span class="marked1"><a name="line297" />297 def to_xml
|
919
|
+
</span><span class="inferred0"><a name="line298" />298
|
920
|
+
</span><span class="marked1"><a name="line299" />299 xml = REXML::Element.new('playlist')
|
921
|
+
</span><span class="inferred0"><a name="line300" />300
|
922
|
+
</span><span class="marked1"><a name="line301" />301 ATTRIBUTES.each do |attrib|
|
923
|
+
</span><span class="inferred0"><a name="line302" />302 # TODO Sure there is a nicer way to do evaluate this condition...
|
924
|
+
</span><span class="marked1"><a name="line303" />303 unless eval('@' + attrib.downcase + '.nil?')
|
925
|
+
</span><span class="marked0"><a name="line304" />304 xml.attributes[attrib] = eval('@' + attrib.downcase)
|
926
|
+
</span><span class="inferred1"><a name="line305" />305 end
|
927
|
+
</span><span class="inferred0"><a name="line306" />306 end
|
928
|
+
</span><span class="inferred1"><a name="line307" />307
|
929
|
+
</span><span class="marked0"><a name="line308" />308 ELEMENTS.each do |element|
|
930
|
+
</span><span class="inferred1"><a name="line309" />309 # TODO Sure there is a nicer way to do evaluate this condition...
|
931
|
+
</span><span class="marked0"><a name="line310" />310 unless eval('@' + element.downcase + '.nil?')
|
932
|
+
</span><span class="marked1"><a name="line311" />311 el = REXML::Element.new(element)
|
933
|
+
</span><span class="marked0"><a name="line312" />312 el.add_text( eval('@' + element.downcase) )
|
932
934
|
</span><span class="marked1"><a name="line313" />313 xml.add_element(el)
|
933
935
|
</span><span class="inferred0"><a name="line314" />314 end
|
934
936
|
</span><span class="inferred1"><a name="line315" />315 end
|
935
937
|
</span><span class="inferred0"><a name="line316" />316
|
936
|
-
</span><span class="marked1"><a name="line317" />317
|
937
|
-
</span><span class="inferred0"><a name="line318" />318
|
938
|
-
</span><span class="marked1"><a name="line319" />319
|
939
|
-
</span><span class="
|
940
|
-
</span><span class="
|
941
|
-
</span><span class="
|
942
|
-
</span><span class="
|
943
|
-
</span><span class="
|
944
|
-
</span><span class="
|
945
|
-
</span><span class="
|
946
|
-
</span><span class="marked1"><a name="line327" />327
|
947
|
-
</span><span class="inferred0"><a name="line328" />328
|
948
|
-
</span><span class="marked1"><a name="line329" />329
|
949
|
-
</span><span class="
|
950
|
-
</span><span class="inferred1"><a name="line331" />331
|
951
|
-
</span><span class="
|
952
|
-
</span><span class="
|
953
|
-
</span><span class="
|
954
|
-
</span><span class="marked1"><a name="line335" />335
|
955
|
-
</span><span class="
|
956
|
-
</span><span class="
|
957
|
-
</span><span class="
|
958
|
-
</span><span class="
|
959
|
-
</span><span class="
|
938
|
+
</span><span class="marked1"><a name="line317" />317 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
939
|
+
</span><span class="inferred0"><a name="line318" />318 # TODO Sure there is a nicer way to do evaluate this condition...
|
940
|
+
</span><span class="marked1"><a name="line319" />319 unless eval('@' + ae.downcase + '_rel.nil? && @'+ ae.downcase + '_content.nil?')
|
941
|
+
</span><span class="marked0"><a name="line320" />320 el = REXML::Element.new(ae.downcase)
|
942
|
+
</span><span class="marked1"><a name="line321" />321 el.add_attribute('rel', eval('@' + ae.downcase + '_rel') )
|
943
|
+
</span><span class="marked0"><a name="line322" />322 el.add_text( eval('@' + ae.downcase + '_content') )
|
944
|
+
</span><span class="marked1"><a name="line323" />323 xml.add_element(el)
|
945
|
+
</span><span class="inferred0"><a name="line324" />324 end
|
946
|
+
</span><span class="inferred1"><a name="line325" />325 end
|
947
|
+
</span><span class="inferred0"><a name="line326" />326
|
948
|
+
</span><span class="marked1"><a name="line327" />327 xml << REXML::Document.new(@tracklist.to_xml)
|
949
|
+
</span><span class="inferred0"><a name="line328" />328
|
950
|
+
</span><span class="marked1"><a name="line329" />329 xml.to_s
|
951
|
+
</span><span class="inferred0"><a name="line330" />330
|
952
|
+
</span><span class="inferred1"><a name="line331" />331 end
|
953
|
+
</span><span class="inferred0"><a name="line332" />332
|
954
|
+
</span><span class="inferred1"><a name="line333" />333 # The <trackList> section of the XSPF document (outputs XML code). This method is only used while parsing.
|
955
|
+
</span><span class="marked0"><a name="line334" />334 protected
|
956
|
+
</span><span class="marked1"><a name="line335" />335 def tracklist_xml
|
957
|
+
</span><span class="marked0"><a name="line336" />336 @playlist.elements['trackList']
|
958
|
+
</span><span class="marked1"><a name="line337" />337 end
|
959
|
+
</span><span class="inferred0"><a name="line338" />338
|
960
|
+
</span><span class="marked1"><a name="line339" />339 private
|
961
|
+
</span><span class="marked0"><a name="line340" />340 def add_instance_variable(hash, var)
|
960
962
|
</span><span class="inferred1"><a name="line341" />341
|
961
|
-
</span><span class="marked0"><a name="line342" />342
|
962
|
-
</span><span class="
|
963
|
-
</span><span class="
|
964
|
-
</span><span class="
|
965
|
-
</span><span class="inferred0"><a name="line346" />346
|
966
|
-
</span><span class="
|
967
|
-
</span><span class="marked0"><a name="line348" />348
|
968
|
-
</span><span class="
|
969
|
-
</span><span class="
|
970
|
-
</span><span class="inferred1"><a name="line351" />351
|
971
|
-
</span><span class="marked0"><a name="line352" />352
|
972
|
-
</span><span class="
|
973
|
-
</span><span class="
|
974
|
-
</span><span class="
|
975
|
-
</span><span class="inferred0"><a name="line356" />356
|
976
|
-
</span><span class="
|
977
|
-
</span><span class="marked0"><a name="line358" />358
|
978
|
-
</span><span class="marked1"><a name="line359" />359
|
979
|
-
</span><span class="marked0"><a name="line360" />360
|
980
|
-
</span><span class="inferred1"><a name="line361" />361
|
981
|
-
</span><span class="
|
982
|
-
</span><span class="marked1"><a name="line363" />363
|
983
|
-
</span><span class="
|
963
|
+
</span><span class="marked0"><a name="line342" />342 if !hash.nil? && hash.has_key?(var.downcase.to_sym)
|
964
|
+
</span><span class="marked1"><a name="line343" />343 eval('@' + var.downcase + ' = \'' + hash[var.downcase.to_sym] + '\'')
|
965
|
+
</span><span class="inferred0"><a name="line344" />344 else
|
966
|
+
</span><span class="marked1"><a name="line345" />345 eval('@' + var.downcase + ' = defined?(' + var.upcase + '_DEFAULT) ? ' + var.upcase + '_DEFAULT : nil')
|
967
|
+
</span><span class="inferred0"><a name="line346" />346 end
|
968
|
+
</span><span class="inferred1"><a name="line347" />347
|
969
|
+
</span><span class="marked0"><a name="line348" />348 end
|
970
|
+
</span><span class="inferred1"><a name="line349" />349
|
971
|
+
</span><span class="inferred0"><a name="line350" />350 end
|
972
|
+
</span><span class="inferred1"><a name="line351" />351
|
973
|
+
</span><span class="marked0"><a name="line352" />352 class XSPF::Tracklist < XSPF::Playlist
|
974
|
+
</span><span class="inferred1"><a name="line353" />353
|
975
|
+
</span><span class="marked0"><a name="line354" />354 attr_reader :tracklist
|
976
|
+
</span><span class="inferred1"><a name="line355" />355
|
977
|
+
</span><span class="inferred0"><a name="line356" />356 # Creates a XSPF::Tracklist from a XSPF::Playlist (parse mode) or without parameters (generation mode)
|
978
|
+
</span><span class="marked1"><a name="line357" />357 def initialize(playlist=nil)
|
979
|
+
</span><span class="marked0"><a name="line358" />358 if (playlist.instance_of?(Hash) || playlist.nil?) then
|
980
|
+
</span><span class="marked1"><a name="line359" />359 @tracklist = ''
|
981
|
+
</span><span class="marked0"><a name="line360" />360 @tracks = []
|
982
|
+
</span><span class="inferred1"><a name="line361" />361 else
|
983
|
+
</span><span class="marked0"><a name="line362" />362 @tracklist = playlist.tracklist_xml
|
984
|
+
</span><span class="marked1"><a name="line363" />363 @tracks = @tracklist.elements.collect { |track| XSPF::Track.new(track) }
|
985
|
+
</span><span class="inferred0"><a name="line364" />364 end
|
984
986
|
</span><span class="marked1"><a name="line365" />365 end
|
985
987
|
</span><span class="inferred0"><a name="line366" />366
|
986
|
-
</span><span class="inferred1"><a name="line367" />367 #
|
987
|
-
</span><span class="marked0"><a name="line368" />368 def
|
988
|
-
</span><span class="marked1"><a name="line369" />369
|
989
|
-
</span><span class="marked0"><a name="line370" />370
|
990
|
-
</span><span class="
|
991
|
-
</span><span class="inferred0"><a name="line372" />372
|
992
|
-
</span><span class="
|
993
|
-
</span><span class="
|
994
|
-
</span><span class="
|
995
|
-
</span><span class="
|
996
|
-
</span><span class="inferred1"><a name="line377" />377
|
997
|
-
</span><span class="marked0"><a name="line378" />378
|
998
|
-
</span><span class="
|
999
|
-
</span><span class="
|
1000
|
-
</span><span class="marked1"><a name="line381" />381
|
1001
|
-
</span><span class="
|
1002
|
-
</span><span class="inferred1"><a name="line383" />383
|
1003
|
-
</span><span class="
|
1004
|
-
</span><span class="
|
1005
|
-
</span><span class="marked0"><a name="line386" />386
|
1006
|
-
</span><span class="
|
1007
|
-
</span><span class="marked0"><a name="line388" />388
|
1008
|
-
</span><span class="
|
1009
|
-
</span><span class="
|
1010
|
-
</span><span class="marked1"><a name="line391" />391
|
1011
|
-
</span><span class="marked0"><a name="line392" />392
|
1012
|
-
</span><span class="
|
1013
|
-
</span><span class="marked0"><a name="line394" />394
|
1014
|
-
</span><span class="marked1"><a name="line395" />395
|
1015
|
-
</span><span class="marked0"><a name="line396" />396
|
1016
|
-
</span><span class="marked1"><a name="line397" />397
|
1017
|
-
</span><span class="marked0"><a name="line398" />398
|
1018
|
-
</span><span class="
|
1019
|
-
</span><span class="marked0"><a name="line400" />400
|
1020
|
-
</span><span class="marked1"><a name="line401" />401
|
1021
|
-
</span><span class="
|
1022
|
-
</span><span class="
|
1023
|
-
</span><span class="marked0"><a name="line404" />404
|
1024
|
-
</span><span class="marked1"><a name="line405" />405
|
1025
|
-
</span><span class="marked0"><a name="line406" />406
|
1026
|
-
</span><span class="
|
1027
|
-
</span><span class="
|
1028
|
-
</span><span class="inferred1"><a name="line409" />409
|
1029
|
-
</span><span class="
|
1030
|
-
</span><span class="
|
1031
|
-
</span><span class="inferred0"><a name="line412" />412
|
1032
|
-
</span><span class="inferred1"><a name="line413" />413
|
1033
|
-
</span><span class="marked0"><a name="line414" />414
|
1034
|
-
</span><span class="
|
1035
|
-
</span><span class="marked0"><a name="line416" />416
|
1036
|
-
</span><span class="inferred1"><a name="line417" />417
|
1037
|
-
</span><span class="
|
1038
|
-
</span><span class="
|
1039
|
-
</span><span class="inferred0"><a name="line420" />420
|
1040
|
-
</span><span class="inferred1"><a name="line421" />421
|
1041
|
-
</span><span class="
|
1042
|
-
</span><span class="
|
1043
|
-
</span><span class="marked0"><a name="line424" />424
|
1044
|
-
</span><span class="inferred1"><a name="line425" />425
|
1045
|
-
</span><span class="
|
1046
|
-
</span><span class="inferred1"><a name="line427" />427
|
1047
|
-
</span><span class="marked0"><a name="line428" />428
|
1048
|
-
</span><span class="
|
1049
|
-
</span><span class="
|
1050
|
-
</span><span class="
|
1051
|
-
</span><span class="
|
1052
|
-
</span><span class="
|
1053
|
-
</span><span class="marked0"><a name="line434" />434
|
1054
|
-
</span><span class="
|
1055
|
-
</span><span class="
|
1056
|
-
</span><span class="inferred1"><a name="line437" />437
|
1057
|
-
</span><span class="
|
1058
|
-
</span><span class="inferred1"><a name="line439" />439
|
1059
|
-
</span><span class="marked0"><a name="line440" />440
|
1060
|
-
</span><span class="
|
1061
|
-
</span><span class="inferred0"><a name="line442" />442
|
1062
|
-
</span><span class="
|
1063
|
-
</span><span class="
|
1064
|
-
</span><span class="marked1"><a name="line445" />445
|
1065
|
-
</span><span class="
|
1066
|
-
</span><span class="
|
1067
|
-
</span><span class="inferred0"><a name="line448" />448
|
1068
|
-
</span><span class="
|
1069
|
-
</span><span class="marked0"><a name="line450" />450
|
1070
|
-
</span><span class="
|
1071
|
-
</span><span class="
|
1072
|
-
</span><span class="
|
1073
|
-
</span><span class="inferred0"><a name="line454" />454
|
1074
|
-
</span><span class="
|
1075
|
-
</span><span class="
|
1076
|
-
</span><span class="
|
1077
|
-
</span><span class="
|
1078
|
-
</span><span class="marked1"><a name="line459" />459
|
1079
|
-
</span><span class="marked0"><a name="line460" />460 el
|
1080
|
-
</span><span class="marked1"><a name="line461" />461 el.add_text( eval('@' +
|
988
|
+
</span><span class="inferred1"><a name="line367" />367 # Returns an array XSPF::Track objects
|
989
|
+
</span><span class="marked0"><a name="line368" />368 def tracks
|
990
|
+
</span><span class="marked1"><a name="line369" />369 @tracks
|
991
|
+
</span><span class="marked0"><a name="line370" />370 end
|
992
|
+
</span><span class="inferred1"><a name="line371" />371
|
993
|
+
</span><span class="inferred0"><a name="line372" />372 # Adds a new XSPF::Track to the XSPF::Tracklist
|
994
|
+
</span><span class="marked1"><a name="line373" />373 def <<(track)
|
995
|
+
</span><span class="marked0"><a name="line374" />374 @tracks << track
|
996
|
+
</span><span class="marked1"><a name="line375" />375 end
|
997
|
+
</span><span class="inferred0"><a name="line376" />376
|
998
|
+
</span><span class="inferred1"><a name="line377" />377 # Exports the XSPF::Tracklist to XML (only the <trackList> section)
|
999
|
+
</span><span class="marked0"><a name="line378" />378 def to_xml
|
1000
|
+
</span><span class="marked1"><a name="line379" />379 xml = REXML::Element.new('trackList')
|
1001
|
+
</span><span class="marked0"><a name="line380" />380 @tracks.each { |t| xml << REXML::Document.new(t.to_xml) }
|
1002
|
+
</span><span class="marked1"><a name="line381" />381 xml.to_s
|
1003
|
+
</span><span class="inferred0"><a name="line382" />382 end
|
1004
|
+
</span><span class="inferred1"><a name="line383" />383
|
1005
|
+
</span><span class="inferred0"><a name="line384" />384 end
|
1006
|
+
</span><span class="inferred1"><a name="line385" />385
|
1007
|
+
</span><span class="marked0"><a name="line386" />386 class XSPF::Track
|
1008
|
+
</span><span class="inferred1"><a name="line387" />387
|
1009
|
+
</span><span class="marked0"><a name="line388" />388 attr_reader :track
|
1010
|
+
</span><span class="inferred1"><a name="line389" />389
|
1011
|
+
</span><span class="inferred0"><a name="line390" />390 #:stopdoc:
|
1012
|
+
</span><span class="marked1"><a name="line391" />391 ELEMENTS = %w{ location identifier title creator annotation info image album trackNum duration extension }
|
1013
|
+
</span><span class="marked0"><a name="line392" />392 ATTRIBUTE_AND_ELEMENT = %w{ link meta }
|
1014
|
+
</span><span class="inferred1"><a name="line393" />393
|
1015
|
+
</span><span class="marked0"><a name="line394" />394 LOCATION_RDOC = 'URL of resource to be rendered. Probably an audio resource, but MAY be any type of resource with a well-known duration, such as video, a SMIL document, or an XSPF document. The duration of the resource defined in this element defines the duration of rendering. XSPF::Track objects MAY contain zero or more location elements, but a user-agent MUST NOT render more than one of the named resources. Currently, XSPF for Ruby returns only the first location.'
|
1016
|
+
</span><span class="marked1"><a name="line395" />395 IDENTIFIER_RDOC = 'Canonical ID for this resource. Likely to be a hash or other location-independent name, such as a MusicBrainz identifier or isbn URN (if there existed isbn numbers for audio). MUST be a legal URN. XSPF::Track objects elements MAY contain zero or more identifier elements, but currently XSPF for Ruby returns only the first one.'
|
1017
|
+
</span><span class="marked0"><a name="line396" />396 TITLE_RDOC = 'Human-readable name of the track that authored the resource which defines the duration of track rendering. This value is primarily for fuzzy lookups, though a user-agent may display it. XSPF::Track objects MAY contain exactly one.'
|
1018
|
+
</span><span class="marked1"><a name="line397" />397 CREATOR_RDOC = 'Human-readable name of the entity (author, authors, group, company, etc) that authored the resource which defines the duration of track rendering. This value is primarily for fuzzy lookups, though a user-agent may display it. XSPF::Track objects MAY contain exactly one.'
|
1019
|
+
</span><span class="marked0"><a name="line398" />398 ANNOTATION_RDOC = 'A human-readable comment on the track. This is character data, not HTML, and it may not contain markup. XSPF::Track objects MAY contain exactly one.'
|
1020
|
+
</span><span class="marked1"><a name="line399" />399 INFO_RDOC = 'URL of a place where this resource can be bought or more info can be found.'
|
1021
|
+
</span><span class="marked0"><a name="line400" />400 IMAGE_RDOC = 'URL of an image to display for the duration of the track. XSPF::Track objects MAY contain exactly one.'
|
1022
|
+
</span><span class="marked1"><a name="line401" />401 ALBUM_RDOC = 'Human-readable name of the collection from which the resource which defines the duration of track rendering comes. For a song originally published as a part of a CD or LP, this would be the title of the original release. This value is primarily for fuzzy lookups, though a user-agent may display it. XSPF::Track objects MAY contain exactly one.'
|
1023
|
+
</span><span class="marked0"><a name="line402" />402 TRACKNUM_RDOC = 'Integer with value greater than zero giving the ordinal position of the media on the XSPF::Track#album. This value is primarily for fuzzy lookups, though a user-agent may display it. XSPF::Track objects MAY contain exactly one. It MUST be a valid XML Schema nonNegativeInteger.'
|
1024
|
+
</span><span class="marked1"><a name="line403" />403 DURATION_RDOC = 'The time to render a resource, in milliseconds. It MUST be a valid XML Schema nonNegativeInteger. This value is only a hint -- different XSPF generators will generate slightly different values. A user-agent MUST NOT use this value to determine the rendering duration, since the data will likely be low quality. XSPF::Track objects MAY contain exactly one duration element.'
|
1025
|
+
</span><span class="marked0"><a name="line404" />404 EXTENSION_RDOC = 'The extension element allows non-XSPF XML to be included in XSPF documents without breaking XSPF validation. The purpose is to allow nested XML, which the meta and link elements do not. XSPF::Track objects MAY contain zero or more extension elements, but currently XSPF for Ruby returns only the first one.'
|
1026
|
+
</span><span class="marked1"><a name="line405" />405 LINK_REL_RDOC = 'The link element allows non-XSPF web resources to be included in XSPF documents without breaking XSPF validation. A valid _link_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Track#link_rel and XSPF::Track#link_content respectively. XSPF::Track objects MAY contain zero or more link elements, but currently XSPF for Ruby returns only the first one.'
|
1027
|
+
</span><span class="marked0"><a name="line406" />406 LINK_CONTENT_RDOC = 'The link element allows non-XSPF web resources to be included in XSPF documents without breaking XSPF validation. A valid _link_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Track#link_rel and XSPF::Track#link_content respectively. XSPF::Track objects MAY contain zero or more meta elements, but currently XSPF for Ruby returns only the first one.'
|
1028
|
+
</span><span class="marked1"><a name="line407" />407 META_REL_RDOC = 'The meta element allows non-XSPF metadata to be included in XSPF documents without breaking XSPF validation. A valid _meta_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Track#meta_rel and XSPF::Track#meta_content respectively. XSPF::Track objects MAY contain zero or more meta elements, but currently XSPF for Ruby returns only the first one.'
|
1029
|
+
</span><span class="marked0"><a name="line408" />408 META_CONTENT_RDOC = 'The meta element allows non-XSPF metadata to be included in XSPF documents without breaking XSPF validation. A valid _meta_ element has a _rel_ attribute and a _content_ element, obtained with XSPF::Track#meta_rel and XSPF::Track#meta_content respectively. XSPF::Track objects MAY contain zero or more meta elements, but currently XSPF for Ruby returns only the first one.'
|
1030
|
+
</span><span class="inferred1"><a name="line409" />409
|
1031
|
+
</span><span class="marked0"><a name="line410" />410 ELEMENTS.each do |element|
|
1032
|
+
</span><span class="marked1"><a name="line411" />411 MetaGen.add_method( self, element, "@track.elements['#{element}'].text", eval(element.upcase + '_RDOC').to_s )
|
1033
|
+
</span><span class="inferred0"><a name="line412" />412 end
|
1034
|
+
</span><span class="inferred1"><a name="line413" />413
|
1035
|
+
</span><span class="marked0"><a name="line414" />414 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
1036
|
+
</span><span class="marked1"><a name="line415" />415 MetaGen.add_method( self, "#{ae}_content", "@track.elements['#{ae}'].text", eval(ae.upcase + '_CONTENT_RDOC').to_s )
|
1037
|
+
</span><span class="marked0"><a name="line416" />416 MetaGen.add_method( self, "#{ae}_rel", "@track.elements['#{ae}'].attributes['rel']", eval(ae.upcase + '_REL_RDOC').to_s )
|
1038
|
+
</span><span class="inferred1"><a name="line417" />417 end
|
1039
|
+
</span><span class="inferred0"><a name="line418" />418
|
1040
|
+
</span><span class="inferred1"><a name="line419" />419 # :startdoc:
|
1041
|
+
</span><span class="inferred0"><a name="line420" />420
|
1042
|
+
</span><span class="inferred1"><a name="line421" />421 # Creates a XSPF::Track object from a <track> section of the XSPF document or from a hash of values
|
1043
|
+
</span><span class="inferred0"><a name="line422" />422 #
|
1044
|
+
</span><span class="inferred1"><a name="line423" />423 # Possible keys in the hash in generation mode: :location, :identifier, :title, :creator, :annotation, :info, :image, :album, :tracknum, :duration, :extension, :link_rel, :link_content, :meta_rel, :meta_content)
|
1045
|
+
</span><span class="marked0"><a name="line424" />424 def initialize(tr)
|
1046
|
+
</span><span class="inferred1"><a name="line425" />425
|
1047
|
+
</span><span class="marked0"><a name="line426" />426 if tr.instance_of?(Hash)
|
1048
|
+
</span><span class="inferred1"><a name="line427" />427
|
1049
|
+
</span><span class="marked0"><a name="line428" />428 ELEMENTS.each do |element|
|
1050
|
+
</span><span class="marked1"><a name="line429" />429 add_instance_variable(tr, element.downcase)
|
1051
|
+
</span><span class="inferred0"><a name="line430" />430 end
|
1052
|
+
</span><span class="inferred1"><a name="line431" />431
|
1053
|
+
</span><span class="marked0"><a name="line432" />432 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
1054
|
+
</span><span class="marked1"><a name="line433" />433 add_instance_variable(tr, "#{ae.downcase}_content" )
|
1055
|
+
</span><span class="marked0"><a name="line434" />434 add_instance_variable(tr, "#{ae.downcase}_rel" )
|
1056
|
+
</span><span class="inferred1"><a name="line435" />435 end
|
1057
|
+
</span><span class="inferred0"><a name="line436" />436
|
1058
|
+
</span><span class="inferred1"><a name="line437" />437 else
|
1059
|
+
</span><span class="marked0"><a name="line438" />438 @track = tr
|
1060
|
+
</span><span class="inferred1"><a name="line439" />439
|
1061
|
+
</span><span class="marked0"><a name="line440" />440 ELEMENTS.each do |element|
|
1062
|
+
</span><span class="marked1"><a name="line441" />441 eval('@' + element.downcase + '= parse_' + element.downcase)
|
1063
|
+
</span><span class="inferred0"><a name="line442" />442 end
|
1064
|
+
</span><span class="inferred1"><a name="line443" />443
|
1065
|
+
</span><span class="marked0"><a name="line444" />444 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
1066
|
+
</span><span class="marked1"><a name="line445" />445 eval('@' + ae.downcase + '_content = parse_' + ae.downcase + '_content')
|
1067
|
+
</span><span class="marked0"><a name="line446" />446 eval('@' + ae.downcase + '_rel = parse_' + ae.downcase + '_rel')
|
1068
|
+
</span><span class="inferred1"><a name="line447" />447 end
|
1069
|
+
</span><span class="inferred0"><a name="line448" />448 end
|
1070
|
+
</span><span class="inferred1"><a name="line449" />449
|
1071
|
+
</span><span class="marked0"><a name="line450" />450 end
|
1072
|
+
</span><span class="inferred1"><a name="line451" />451
|
1073
|
+
</span><span class="inferred0"><a name="line452" />452 # Exports the XSPF::Track to XML (only the <track> section)
|
1074
|
+
</span><span class="marked1"><a name="line453" />453 def to_xml
|
1075
|
+
</span><span class="inferred0"><a name="line454" />454
|
1076
|
+
</span><span class="marked1"><a name="line455" />455 xml = REXML::Element.new('track')
|
1077
|
+
</span><span class="inferred0"><a name="line456" />456
|
1078
|
+
</span><span class="marked1"><a name="line457" />457 ELEMENTS.each do |element|
|
1079
|
+
</span><span class="inferred0"><a name="line458" />458 # TODO Sure there is a nicer way to do evaluate this condition...
|
1080
|
+
</span><span class="marked1"><a name="line459" />459 unless eval('@' + element.downcase + '.nil?')
|
1081
|
+
</span><span class="marked0"><a name="line460" />460 el = REXML::Element.new(element)
|
1082
|
+
</span><span class="marked1"><a name="line461" />461 el.add_text( eval('@' + element.downcase) )
|
1081
1083
|
</span><span class="marked0"><a name="line462" />462 xml.add_element(el)
|
1082
1084
|
</span><span class="inferred1"><a name="line463" />463 end
|
1083
1085
|
</span><span class="inferred0"><a name="line464" />464 end
|
1084
1086
|
</span><span class="inferred1"><a name="line465" />465
|
1085
|
-
</span><span class="marked0"><a name="line466" />466
|
1086
|
-
</span><span class="inferred1"><a name="line467" />467
|
1087
|
-
</span><span class="
|
1088
|
-
</span><span class="
|
1089
|
-
</span><span class="marked0"><a name="line470" />470
|
1090
|
-
</span><span class="marked1"><a name="line471" />471
|
1091
|
-
</span><span class="
|
1092
|
-
</span><span class="
|
1093
|
-
</span><span class="
|
1094
|
-
</span><span class="inferred1"><a name="line475" />475
|
1095
|
-
</span><span class="marked0"><a name="line476" />476
|
1096
|
-
</span><span class="inferred1"><a name="line477" />477
|
1097
|
-
</span><span class="inferred0"><a name="line478" />478
|
1098
|
-
</span><span class="
|
1099
|
-
</span><span class="
|
1100
|
-
</span><span class="
|
1101
|
-
</span
|
1087
|
+
</span><span class="marked0"><a name="line466" />466 ATTRIBUTE_AND_ELEMENT.each do |ae|
|
1088
|
+
</span><span class="inferred1"><a name="line467" />467 # TODO Sure there is a nicer way to do evaluate this condition...
|
1089
|
+
</span><span class="marked0"><a name="line468" />468 unless eval('@' + ae.downcase + '_rel.nil? && @'+ ae.downcase + '_content.nil?')
|
1090
|
+
</span><span class="marked1"><a name="line469" />469 el = REXML::Element.new(ae.downcase)
|
1091
|
+
</span><span class="marked0"><a name="line470" />470 el.add_attribute('rel', eval('@' + ae.downcase + '_rel') )
|
1092
|
+
</span><span class="marked1"><a name="line471" />471 el.add_text( eval('@' + ae.downcase + '_content') )
|
1093
|
+
</span><span class="marked0"><a name="line472" />472 xml.add_element(el)
|
1094
|
+
</span><span class="inferred1"><a name="line473" />473 end
|
1095
|
+
</span><span class="inferred0"><a name="line474" />474 end
|
1096
|
+
</span><span class="inferred1"><a name="line475" />475
|
1097
|
+
</span><span class="marked0"><a name="line476" />476 xml.to_s
|
1098
|
+
</span><span class="inferred1"><a name="line477" />477
|
1099
|
+
</span><span class="inferred0"><a name="line478" />478 end
|
1100
|
+
</span><span class="inferred1"><a name="line479" />479
|
1101
|
+
</span><span class="marked0"><a name="line480" />480 private
|
1102
|
+
</span><span class="marked1"><a name="line481" />481 def add_instance_variable(hash, var)
|
1103
|
+
</span><span class="inferred0"><a name="line482" />482
|
1104
|
+
</span><span class="marked1"><a name="line483" />483 if hash.has_key?(var.downcase.to_sym)
|
1105
|
+
</span><span class="marked0"><a name="line484" />484 eval('@' + var.downcase + ' = \'' + hash[var.downcase.to_sym] + '\'')
|
1106
|
+
</span><span class="inferred1"><a name="line485" />485 else
|
1107
|
+
</span><span class="marked0"><a name="line486" />486 eval('@' + var.downcase + ' = defined?(' + var.upcase + '_DEFAULT) ? ' + var.upcase + '_DEFAULT : nil')
|
1108
|
+
</span><span class="inferred1"><a name="line487" />487 end
|
1109
|
+
</span><span class="inferred0"><a name="line488" />488
|
1110
|
+
</span><span class="marked1"><a name="line489" />489 end
|
1111
|
+
</span><span class="inferred0"><a name="line490" />490
|
1112
|
+
</span><span class="inferred1"><a name="line491" />491 end
|
1113
|
+
</span></pre><hr /> <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a> version 0.8.0.</p><p>
|
1102
1114
|
<a href='http://validator.w3.org/check/referer'>
|
1103
1115
|
<img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' />
|
1104
1116
|
</a>
|