sequencer 1.3.0 → 1.3.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 00d7f368f6b26fc1b049b316420a995cb56bcd03
4
- data.tar.gz: 3ac4490cb81e1119581a12fcd42f9702e16c4449
2
+ SHA256:
3
+ metadata.gz: 43ed73241fa2c8bfa2c506ce810564fbc9d7e36bb92d392fc6d98ba258aa87e5
4
+ data.tar.gz: a4840f086e14366f2492fb7476fdd3c99d3dc44a30cdcf2890672b821aa5d498
5
5
  SHA512:
6
- metadata.gz: b1fa4a5827069cb6589b0dd196736417b7d2ccba1f23e7c0214b687b377529dacf5c41755e42fa6ed4b06ea9c599f37d4165cf1ee33f6244329f705157c9feba
7
- data.tar.gz: 35dbb98c38c7c379eb838f866f52f406caf90a8c1d425b50f7f7398eb5c4687add3a113971a9e05556fe85c868c892d8594571da8698a20735ef0da7f4464426
6
+ metadata.gz: 96c3148a178ac25bdedd2423f7ea250755d5e81b656fd71970f3d07b7df3ab233b19b6d99f0abe5a7ecfc8d7d6afd608cbc788e6e615f9cee5cfe7202351c8b0
7
+ data.tar.gz: 24f152d869d68a72f9d9e1ea95fdaeb57b48bb52ed1b1ea9afffcc03dc090f92a625fb1d3b8227326472e4f6600f8c79ec6350a9bf0f898d12c7337553393f5a
@@ -0,0 +1,5 @@
1
+ pkg
2
+ doc
3
+ .autotest
4
+ Gemfile.lock
5
+ .bundle
@@ -0,0 +1,10 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.5
7
+ - 2.2.2
8
+ - 2.5.1
9
+ sudo: false
10
+ cache: bundler
data/Gemfile CHANGED
@@ -1,6 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- group :development do
4
- gem "jeweler"
5
- gem "rake"
6
- end
3
+ gemspec
@@ -1,32 +1,28 @@
1
+ [![Build Status](https://travis-ci.org/guerilla-di/sequencer.svg?branch=master)](https://travis-ci.org/guerilla-di/sequencer)
2
+
1
3
  Sequencer is the swiss army knife of image sequence management for Ruby. It helps with things like
2
4
 
3
5
  * Collapsing multibillion-files directory listings to sequence lists with sane names and sane string representations
4
6
  * Detecting gaps in image sequences
5
7
  * Renaming sequences for filename uniformity, number uniformity and so on
6
8
  * Managing image sequences as whole units for media management
7
- * ..and getting laid (sometimes)
8
9
 
9
- == FEATURES:
10
+ ## Usage
10
11
 
11
- * List all sequences in a directory interspersed with other file entries
12
- * Detect sequence from single file
12
+ From the terminal - go to a directory, and then:
13
13
 
14
- == SYNOPSIS:
14
+ $rseqls
15
+
16
+ Fussball_Shot[1..1, 3..3].sni
17
+ FinalLichtUitValSec_Shot1.[1..128].jpg
18
+ Fussball_Shot3_v02.sni
19
+ FinalLichtUitValSec_Shot1.0001.ifl
20
+ FinalLichtUitValSec.0001.ifl
21
+ FinalLichtUitValSec.[1..185].jpg
15
22
 
16
- From the terminal - go to a directory, and then:
23
+ You also have `rseqpad` and `rseqrename` :-)
17
24
 
18
- $rseqls
19
-
20
- Fussball_Shot[1..1, 3..3].sni
21
- FinalLichtUitValSec_Shot1.[1..128].jpg
22
- Fussball_Shot3_v02.sni
23
- FinalLichtUitValSec_Shot1.0001.ifl
24
- FinalLichtUitValSec.0001.ifl
25
- FinalLichtUitValSec.[1..185].jpg
26
-
27
- You also have <tt>rseqpad</tt> and <tt>rseqrename</tt> :-)
28
-
29
- From code:
25
+ From Ruby code, when dealing with a single file
30
26
 
31
27
  require "sequencer"
32
28
  s = Sequencer.from_single_file("/RAID/Film/CONFORM.092183.dpx")
@@ -35,15 +31,26 @@ From code:
35
31
  s.missing_frames #=> 15, somebody was careless
36
32
  s.pattern #=> "CONFORM.%06d.dpx", usable with printf right away
37
33
 
38
- == INSTALL:
34
+ and when dealing with an `Enumerable` of filenames (not necessarily from a file system):
35
+
36
+ require "sequencer"
37
+ seqs = Sequencer.from_enumerable(["/RAID/Film/CONFORM.092184.dpx", "/RAID/Film/CONFORM.092183.dpx"])
38
+ seqs.inspect #=> [Sequence], it is an array of sequences since the passed Enumerable might have contained multiple
39
+ s = seqs.first
40
+ s.file_count #=> 2
41
+ s.gaps? #=> false
42
+ s.missing_frames #=> 0
43
+ s.pattern #=> "/RAID/Film/CONFORM.%06d.dpx", usable with printf right away
44
+
45
+ ## Installation:
39
46
 
40
- * sudo gem install sequencer
47
+ $ gem install sequencer
41
48
 
42
- == LICENSE:
49
+ ## License
43
50
 
44
51
  (The MIT License)
45
52
 
46
- Copyright (c) 2010 Julik Tarkhanov (me@julik.nl)
53
+ Copyright (c) 2010-2016 Julik Tarkhanov (me@julik.nl)
47
54
 
48
55
  Permission is hereby granted, free of charge, to any person obtaining
49
56
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,25 +1,6 @@
1
- # -*- ruby -*-
2
- require 'rubygems'
3
- require 'jeweler'
4
- require File.dirname(__FILE__) + "/lib/sequencer"
5
-
6
- Jeweler::Tasks.new do |gem|
7
- gem.version = Sequencer::VERSION
8
- gem.name = "sequencer"
9
- gem.summary = "Image sequence sorting, scanning and manipulation"
10
- gem.email = "me@julik.nl"
11
- gem.homepage = "http://guerilla-di.org/sequencer"
12
- gem.authors = ["Julik Tarkhanov"]
13
- gem.license = 'MIT'
14
- gem.executables = %w( rseqls rseqpad rseqrename )
15
-
16
- # Do not package invisibles
17
- gem.files.exclude ".*"
18
- end
19
-
20
- Jeweler::RubygemsDotOrgTasks.new
21
-
1
+ require 'bundler/gem_tasks'
22
2
  require 'rake/testtask'
3
+
23
4
  desc "Run all tests"
24
5
  Rake::TestTask.new("test") do |t|
25
6
  t.libs << "test"
@@ -1,5 +1,5 @@
1
1
  module Sequencer
2
- VERSION = '1.3.0'
2
+ require File.dirname(__FILE__) + '/sequencer/version'
3
3
  NUMBERS_AT_END = /(\d+)([^\d]+)?$/
4
4
 
5
5
  extend self
@@ -0,0 +1,3 @@
1
+ module Sequencer
2
+ VERSION = '1.3.1'
3
+ end
@@ -1,52 +1,22 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ require File.dirname(__FILE__) + '/lib/sequencer/version'
5
2
 
6
3
  Gem::Specification.new do |s|
7
4
  s.name = "sequencer"
8
- s.version = "1.3.0"
5
+ s.version = Sequencer::VERSION
9
6
 
10
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
8
  s.authors = ["Julik Tarkhanov"]
12
9
  s.date = "2014-02-18"
13
10
  s.email = "me@julik.nl"
14
11
  s.executables = ["rseqls", "rseqpad", "rseqrename"]
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- "Gemfile",
20
- "History.txt",
21
- "README.rdoc",
22
- "Rakefile",
23
- "bin/rseqls",
24
- "bin/rseqpad",
25
- "bin/rseqrename",
26
- "lib/sequencer.rb",
27
- "lib/sequencer/padder.rb",
28
- "sequencer.gemspec",
29
- "test/test_sequencer.rb"
30
- ]
12
+ s.extra_rdoc_files = ["README.md"]
13
+ s.files = `git ls-files -z`.split("\x0")
31
14
  s.homepage = "http://guerilla-di.org/sequencer"
32
15
  s.licenses = ["MIT"]
33
16
  s.require_paths = ["lib"]
34
17
  s.rubygems_version = "2.0.3"
35
18
  s.summary = "Image sequence sorting, scanning and manipulation"
36
-
37
- if s.respond_to? :specification_version then
38
- s.specification_version = 4
39
-
40
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
41
- s.add_development_dependency(%q<jeweler>, [">= 0"])
42
- s.add_development_dependency(%q<rake>, [">= 0"])
43
- else
44
- s.add_dependency(%q<jeweler>, [">= 0"])
45
- s.add_dependency(%q<rake>, [">= 0"])
46
- end
47
- else
48
- s.add_dependency(%q<jeweler>, [">= 0"])
49
- s.add_dependency(%q<rake>, [">= 0"])
50
- end
19
+ s.specification_version = 4
20
+ s.add_development_dependency("rake", [">= 0"])
21
+ s.add_development_dependency("minitest", [">= 0"])
51
22
  end
52
-
@@ -1,4 +1,4 @@
1
- require 'test/unit'
1
+ require 'minitest/autorun'
2
2
  require 'set'
3
3
  require 'fileutils'
4
4
  require File.dirname(__FILE__) + '/../lib/sequencer'
@@ -58,7 +58,7 @@ def teardown_test_dirs
58
58
  FileUtils.rm_rf(TEST_DIR)
59
59
  end
60
60
 
61
- class Test_glob_and_padding_for < Test::Unit::TestCase
61
+ class Test_glob_and_padding_for < Minitest::Test
62
62
 
63
63
  def test_returns_proper_glob_pattern_padding_for_a_path_with_extension
64
64
  glob, pad = Sequencer.glob_and_padding_for("file.00001.gif")
@@ -78,7 +78,7 @@ class Test_glob_and_padding_for < Test::Unit::TestCase
78
78
  end
79
79
  end
80
80
 
81
- class Sequencer_entries_should < Test::Unit::TestCase
81
+ class Sequencer_entries_should < Minitest::Test
82
82
  def setup; emit_test_dirs; end
83
83
  def teardown; teardown_test_dirs; end
84
84
 
@@ -89,7 +89,7 @@ class Sequencer_entries_should < Test::Unit::TestCase
89
89
  end
90
90
  end
91
91
 
92
- class Sequencer_from_enum_should < Test::Unit::TestCase
92
+ class Sequencer_from_enum_should < Minitest::Test
93
93
  def setup; emit_test_dirs; end
94
94
  def teardown; teardown_test_dirs; end
95
95
 
@@ -97,17 +97,18 @@ class Sequencer_from_enum_should < Test::Unit::TestCase
97
97
  items = Dir.entries(TEST_DIR + '/many_seqs')
98
98
  entries = Sequencer.from_enumerable(items)
99
99
  names = entries.map{|e| e.to_s }
100
- assert_equal ["anotherS [228..312].tif", "seq1.[458..512].tif", "single.tif", "subdir"], names
100
+ assert_equal Set.new(["anotherS [228..312].tif", "seq1.[458..512].tif", "single.tif", "subdir"]),
101
+ Set.new(names)
101
102
  end
102
103
  end
103
104
 
104
- class A_Sequence_created_from_unpadded_files_should < Test::Unit::TestCase
105
+ class A_Sequence_created_from_unpadded_files_should < Minitest::Test
105
106
  def setup; emit_test_dirs; end
106
107
  def teardown; teardown_test_dirs; end
107
108
 
108
109
  def test_properly_created
109
110
  s = Sequencer.from_single_file(TEST_DIR + "/natural_numbering/somefiles 5545168.png")
110
- assert_not_nil s
111
+ assert s
111
112
  assert_equal 30, s.expected_frames
112
113
  assert_equal 30, s.file_count
113
114
  assert_equal "somefiles %07d.png", s.pattern
@@ -125,7 +126,7 @@ class A_Sequence_created_from_a_file_that_has_no_numbering_slot_should
125
126
  end
126
127
  end
127
128
 
128
- class Sequencer_bulk_rename_should < Test::Unit::TestCase
129
+ class Sequencer_bulk_rename_should < Minitest::Test
129
130
  def setup
130
131
  emit_test_dirs
131
132
  @with_gaps = Sequencer.from_single_file(TEST_DIR + "/sequence_and_sole_file/broken_seq.000245.tif")
@@ -146,7 +147,7 @@ class Sequencer_bulk_rename_should < Test::Unit::TestCase
146
147
  end
147
148
  end
148
149
 
149
- class A_Sequence_created_from_pad_numbered_files_should < Test::Unit::TestCase
150
+ class A_Sequence_created_from_pad_numbered_files_should < Minitest::Test
150
151
  def setup
151
152
  emit_test_dirs
152
153
  @gapless = Sequencer.from_single_file(TEST_DIR + "/sequence_and_sole_file/seq1.000245.tif")
@@ -159,7 +160,7 @@ class A_Sequence_created_from_pad_numbered_files_should < Test::Unit::TestCase
159
160
  end
160
161
 
161
162
  def test_initialize_itself_from_one_path_to_a_file_in_the_sequence_without_gaps
162
- assert_not_nil @gapless
163
+ assert @gapless
163
164
  assert_kind_of Sequencer::Sequence, @gapless
164
165
  assert_respond_to @gapless, :gaps?
165
166
  assert !@gapless.single_file?
@@ -180,7 +181,7 @@ class A_Sequence_created_from_pad_numbered_files_should < Test::Unit::TestCase
180
181
  end
181
182
 
182
183
  def test_initialize_itself_from_one_path_to_a_file_in_the_sequence_with_gaps
183
- assert_not_nil @with_gaps
184
+ assert @with_gaps
184
185
  assert_kind_of Sequencer::Sequence, @with_gaps
185
186
  assert !@with_gaps.single_file?
186
187
 
@@ -194,7 +195,7 @@ class A_Sequence_created_from_pad_numbered_files_should < Test::Unit::TestCase
194
195
  end
195
196
 
196
197
  def test_equals_another
197
- assert_not_nil @with_gaps
198
+ assert @with_gaps
198
199
  another = Sequencer.from_single_file(TEST_DIR + "/sequence_and_sole_file/broken_seq.000245.tif")
199
200
  assert_equal @with_gaps, another
200
201
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequencer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
@@ -11,31 +11,31 @@ cert_chain: []
11
11
  date: 2014-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: jeweler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description:
@@ -46,17 +46,20 @@ executables:
46
46
  - rseqrename
47
47
  extensions: []
48
48
  extra_rdoc_files:
49
- - README.rdoc
49
+ - README.md
50
50
  files:
51
+ - ".gitignore"
52
+ - ".travis.yml"
51
53
  - Gemfile
52
54
  - History.txt
53
- - README.rdoc
55
+ - README.md
54
56
  - Rakefile
55
57
  - bin/rseqls
56
58
  - bin/rseqpad
57
59
  - bin/rseqrename
58
60
  - lib/sequencer.rb
59
61
  - lib/sequencer/padder.rb
62
+ - lib/sequencer/version.rb
60
63
  - sequencer.gemspec
61
64
  - test/test_sequencer.rb
62
65
  homepage: http://guerilla-di.org/sequencer
@@ -69,17 +72,17 @@ require_paths:
69
72
  - lib
70
73
  required_ruby_version: !ruby/object:Gem::Requirement
71
74
  requirements:
72
- - - '>='
75
+ - - ">="
73
76
  - !ruby/object:Gem::Version
74
77
  version: '0'
75
78
  required_rubygems_version: !ruby/object:Gem::Requirement
76
79
  requirements:
77
- - - '>='
80
+ - - ">="
78
81
  - !ruby/object:Gem::Version
79
82
  version: '0'
80
83
  requirements: []
81
84
  rubyforge_project:
82
- rubygems_version: 2.0.3
85
+ rubygems_version: 2.7.6
83
86
  signing_key:
84
87
  specification_version: 4
85
88
  summary: Image sequence sorting, scanning and manipulation