furnace-swf 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,33 +79,43 @@ File.open(opts[:input]) do |file|
79
79
  end
80
80
  end
81
81
 
82
+ def find_tag(swf, name)
83
+ abc_tags = swf.stream.tags(SWF::DoABCTag, SWF::DoABC2Tag)
84
+
85
+ if name =~ /\d+/
86
+ abc_tags[name.to_i]
87
+ else
88
+ abc_tags.find { |tag| tag.name == name }
89
+ end
90
+ end
91
+
82
92
  case subcommand
83
93
  when 'abclist'
84
94
  puts "ABC tags:"
85
95
 
86
- swf.stream.tags(SWF::DoABCTag).each do |tag|
87
- puts " #{tag.name.inspect}: #{tag.bytecode.length} byte(s)"
96
+ swf.stream.tags(SWF::DoABCTag, SWF::DoABC2Tag).each_with_index do |tag, index|
97
+ puts " #{index}) #{tag.name.inspect}: #{tag.bytecode.length} byte(s)"
88
98
  end
89
99
 
90
100
  when 'abcextract'
91
- if tag = swf.stream.tags(SWF::DoABCTag).find { |tag| tag.name == subopts[:name] }
101
+ if tag = find_tag(swf, subopts[:name])
92
102
  File.open(subopts[:output], 'w') do |f|
93
103
  f.write tag.bytecode
94
104
  end
95
105
  else
96
- $stderr.puts "Tag #{subopts[:name].inspect} was not found"
106
+ $stderr.puts "Tag `#{subopts[:name]}' was not found"
97
107
  exit -1
98
108
  end
99
109
 
100
110
  when 'abcreplace'
101
- if tag = swf.stream.tags(SWF::DoABCTag).find { |tag| tag.name == subopts[:name] }
111
+ if tag = find_tag(swf, subopts[:name])
102
112
  tag.bytecode = subopts[:input].read
103
113
 
104
114
  File.open(subopts[:output], 'w') do |f|
105
115
  swf.write f
106
116
  end
107
117
  else
108
- $stderr.puts "Tag #{subopts[:name].inspect} was not found"
118
+ $stderr.puts "Tag `#{subopts[:name]}' was not found"
109
119
  exit -1
110
120
  end
111
121
  end
@@ -13,11 +13,13 @@ Gem::Specification.new do |s|
13
13
  %q{Flash SWF files. It can be used with furnace-avm2 in } <<
14
14
  %q{order to achieve impressive results.}
15
15
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ s.files = `git ls-files`.split($/)
17
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
  s.require_paths = ["lib"]
20
20
 
21
+ s.required_ruby_version = '>= 1.9.1'
22
+
21
23
  s.add_runtime_dependency "bindata"
22
24
  s.add_runtime_dependency "trollop"
23
25
  end
@@ -14,8 +14,8 @@ module Furnace::SWF
14
14
  BigDecimal.new(frame_rate_lo) / 100
15
15
  end
16
16
 
17
- def tags(type)
18
- tag_wrappers.select { |tw| tw.content.is_a? type }.map(&:content)
17
+ def tags(*types)
18
+ tag_wrappers.select { |tw| types.any? { |type| tw.content.is_a? type } }.map(&:content)
19
19
  end
20
20
 
21
21
  def real_num_bytes
@@ -0,0 +1,9 @@
1
+ module Furnace::SWF
2
+ class DoABC2Tag < Tag
3
+ type 82
4
+
5
+ uint32 :flags
6
+ stringz :name
7
+ string :bytecode, :read_length => lambda { parent.real_length - 4 - name.length - 1 }
8
+ end
9
+ end
@@ -1,9 +1,15 @@
1
1
  module Furnace::SWF
2
2
  class DoABCTag < Tag
3
- type 82
3
+ type 72
4
4
 
5
- uint32 :flags
6
- stringz :name
7
- string :bytecode, :read_length => lambda { parent.real_length - 4 - name.length - 1 }
5
+ string :bytecode, :read_length => lambda { parent.real_length }
6
+
7
+ def name
8
+ "<DoABCTag>"
9
+ end
10
+
11
+ def flags
12
+ 0
13
+ end
8
14
  end
9
15
  end
@@ -1,3 +1,3 @@
1
1
  module Furnace::SWF
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: furnace-swf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-07-08 00:00:00.000000000 Z
13
+ date: 2013-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bindata
@@ -70,6 +70,7 @@ files:
70
70
  - lib/furnace-swf/swf/tag.rb
71
71
  - lib/furnace-swf/swf/tag_wrapper.rb
72
72
  - lib/furnace-swf/swf/tags/define_binary_data_tag.rb
73
+ - lib/furnace-swf/swf/tags/do_abc2_tag.rb
73
74
  - lib/furnace-swf/swf/tags/do_abc_tag.rb
74
75
  - lib/furnace-swf/swf/tags/symbol_class_tag.rb
75
76
  - lib/furnace-swf/swf/ubit.rb
@@ -85,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
86
  requirements:
86
87
  - - ! '>='
87
88
  - !ruby/object:Gem::Version
88
- version: '0'
89
+ version: 1.9.1
89
90
  required_rubygems_version: !ruby/object:Gem::Requirement
90
91
  none: false
91
92
  requirements:
@@ -94,8 +95,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
95
  version: '0'
95
96
  requirements: []
96
97
  rubyforge_project:
97
- rubygems_version: 1.8.24
98
+ rubygems_version: 1.8.23
98
99
  signing_key:
99
100
  specification_version: 3
100
101
  summary: Flash SWF file reader and writer
101
102
  test_files: []
103
+ has_rdoc: