ttml 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/lib/ttml.rb CHANGED
@@ -15,11 +15,15 @@ module Ttml
15
15
  # => [Subtitles from beginning to 100 seconds]
16
16
  class Document
17
17
 
18
- attr_reader :doc
18
+ attr_reader :doc, :namespaces
19
19
 
20
20
  def initialize file_or_stream
21
21
  stream = file_or_stream.is_a?(IO) ? file_or_stream : File.open(file_or_stream)
22
22
  @doc = Nokogiri::XML(stream)
23
+ @namespaces = @doc.collect_namespaces
24
+ # puts "Ho namespaces? #{ @namespaces.inspect }"
25
+ @subs_ns = @namespaces.invert["http://www.w3.org/2006/10/ttaf1"]
26
+ @meta_ns = @namespaces.invert["http://www.w3.org/2006/10/ttaf1#metadata"].sub(/^xmlns:/,'')
23
27
  end
24
28
 
25
29
  # Returns subtitles from "from" to "to" (inclusive) as an array
@@ -27,7 +31,7 @@ module Ttml
27
31
  # I tried using xpath functions, without success,
28
32
  # as in xmlns:div/xmlns:p[number(@begin)=>746.63] - any ideas?
29
33
  def subtitle_stream from = 0.0, to = 99999999.0
30
- doc.xpath("/xmlns:tt/xmlns:body/xmlns:div/xmlns:p").select {|n|
34
+ doc.xpath("/#{ @subs_ns }:tt/#{ @subs_ns }:body/#{ @subs_ns }:div/#{ @subs_ns }:p").select {|n|
31
35
  # puts "Vedo se #{ n['begin'].to_f } >= #{ from } e se #{ n['end'].to_f } <= #{ to }"
32
36
  (n['begin'].to_f >= from) && (n['end'].to_f <= to)
33
37
  }
@@ -35,17 +39,17 @@ module Ttml
35
39
 
36
40
  # Returns document title
37
41
  def title
38
- doc.xpath("//ns2:title")[0].children[0].content
42
+ doc.xpath("//#{ @meta_ns }:title")[0].children[0].content
39
43
  end
40
44
 
41
45
  # Returns document description
42
46
  def description
43
- doc.xpath("//ns2:description")[0].children[0].content
47
+ doc.xpath("//#{ @meta_ns }:description")[0].children[0].content
44
48
  end
45
49
 
46
50
  # Returns document copyright
47
51
  def copyright
48
- doc.xpath("//ns2:copyright")[0].children[0].content
52
+ doc.xpath("//#{ @meta_ns }:copyright")[0].children[0].content
49
53
  end
50
54
 
51
55
  end
data/lib/ttml/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ttml
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/test/sample_2.xml ADDED
@@ -0,0 +1,17 @@
1
+ <?xml version='1.0'?><ns2:tt xmlns:ns4="http://www.w3.org/2006/10/ttaf1#parameter" xmlns:ns3="http://www.w3.org/2006/10/ttaf1#style" xmlns:ns2="http://www.w3.org/2006/10/ttaf1" xmlns:ns1="http://www.w3.org/2006/10/ttaf1#metadata" xml:lang="it"><ns2:head><ns1:title>Timed Text DFPX</ns1:title>
2
+ <ns1:copyright>2010 (c) PerVoice S.p.A.</ns1:copyright>
3
+ <ns2:styling><ns2:style xml:id="s1" ns3:textAlign="left" ns3:fontSize="22px" ns3:fontFamily="proportionalSansSerif" ns3:color="yellow"/>
4
+ <ns2:style xml:id="s2" ns3:color="yellow" style="s1"/>
5
+ <ns2:style xml:id="s1Right" ns3:textAlign="end" style="s1"/>
6
+ <ns2:style xml:id="s2Left" ns3:textAlign="start" style="s2"/>
7
+ </ns2:styling>
8
+ <ns2:layout><ns2:region ns3:padding="5px 3px" ns3:extent="560px 62px" ns3:displayAlign="after" ns3:backgroundColor="black" style="s1" xml:id="subtitleArea"/>
9
+ </ns2:layout>
10
+ </ns2:head>
11
+ <ns2:body region="subtitleArea"><ns2:div><ns2:p end="104.34s" begin="104.34s"><![CDATA[<p align="left" ><font color="#ffa500">Sono</font></p>]]></ns2:p>
12
+ <ns2:p end="107.76s" begin="104.34s"><![CDATA[<p align="left" ><font color="#ffa500"></font></p>]]></ns2:p>
13
+ <ns2:p end="117.8s" begin="107.76s"><![CDATA[<p align="left" ><font color="#ffa500">presenti 25</font></p>]]></ns2:p>
14
+ <ns2:p end="117.8s" begin="117.8s"><![CDATA[<p align="left" ><font color="#ffa500">Consiglieri,</font></p>]]></ns2:p>
15
+ </ns2:div>
16
+ </ns2:body>
17
+ </ns2:tt>
data/test/test_ttml.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require 'test/unit'
2
3
  require 'ttml'
3
4
 
@@ -20,7 +21,7 @@ class TtmlTest < Test::Unit::TestCase
20
21
  end
21
22
 
22
23
  def test_subs_no_param
23
- assert @doc.subtitle_stream.is_a?(Array), "Not a NodeSet!"
24
+ assert @doc.subtitle_stream.is_a?(Array)
24
25
  end
25
26
 
26
27
  def test_subs_start_param
@@ -33,5 +34,11 @@ class TtmlTest < Test::Unit::TestCase
33
34
  assert_equal 1, @doc.subtitle_stream(746.63, 749.38).size
34
35
  end
35
36
 
37
+ def test_other_file
38
+ # (with different namespaces)
39
+ doc = Ttml::Document.new(File.join(File.dirname(__FILE__), 'sample_2.xml'))
40
+ assert_equal 'Timed Text DFPX', doc.title
41
+ assert @doc.subtitle_stream.is_a?(Array)
42
+ end
36
43
 
37
44
  end
data/ttml.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["loop23@gmail.com"]
7
7
  gem.description = %q{Parse a ttml file}
8
8
  gem.summary = %q{Minimal parsing for timed text markup language (http://www.w3.org/TR/ttaf1-dfxp/)}
9
- gem.homepage = ""
9
+ gem.homepage = "http://github.com/loop23/ttml"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ttml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-03 00:00:00.000000000 Z
12
+ date: 2012-09-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -42,9 +42,10 @@ files:
42
42
  - lib/ttml.rb
43
43
  - lib/ttml/version.rb
44
44
  - test/sample.xml
45
+ - test/sample_2.xml
45
46
  - test/test_ttml.rb
46
47
  - ttml.gemspec
47
- homepage: ''
48
+ homepage: http://github.com/loop23/ttml
48
49
  licenses: []
49
50
  post_install_message:
50
51
  rdoc_options: []
@@ -70,4 +71,5 @@ specification_version: 3
70
71
  summary: Minimal parsing for timed text markup language (http://www.w3.org/TR/ttaf1-dfxp/)
71
72
  test_files:
72
73
  - test/sample.xml
74
+ - test/sample_2.xml
73
75
  - test/test_ttml.rb