vidibus-timecode 0.1.0 → 0.1.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.
- data/.rspec +1 -0
- data/Gemfile +1 -1
- data/LICENSE +3 -1
- data/README.md +107 -0
- data/Rakefile +1 -9
- data/lib/vidibus-timecode.rb +0 -1
- data/lib/vidibus/timecode.rb +10 -5
- data/spec/spec_helper.rb +6 -2
- data/spec/vidibus/timecode_spec.rb +23 -3
- data/vidibus-timecode.gemspec +2 -1
- metadata +101 -109
- data/README.rdoc +0 -67
data/.rspec
CHANGED
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
# Vidibus::Timecode [](http://travis-ci.org/vidibus/vidibus-timecode)
|
2
|
+
|
3
|
+
Timecodes are a simple, yet powerful way to notate times.
|
4
|
+
|
5
|
+
This gem is part of [Vidibus](http://vidibus.org), an open source toolset for building distributed (video) applications.
|
6
|
+
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add `gem "vidibus-timecode"` to your Gemfile. Then call `bundle install` on your console.
|
11
|
+
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
A timecode instance requires at least one parameter. Valid inputs are time objects and timecode strings:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
Vidibus::Timecode.new(Time.now)
|
19
|
+
Vidibus::Timecode.new("2011/12/07@21:00")
|
20
|
+
```
|
21
|
+
|
22
|
+
A timecode instance provides two methods, `timecode` and `time`:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
Vidibus::Timecode.new(Time.now).timecode
|
26
|
+
# => "2011/12/07@21:00"
|
27
|
+
|
28
|
+
Vidibus::Timecode.new("2011/12/07@21:00").time
|
29
|
+
# => Wed Dec 07 21:00:00 +0100 2011
|
30
|
+
```
|
31
|
+
|
32
|
+
|
33
|
+
## Syntax
|
34
|
+
|
35
|
+
Timecodes may be used to describe single, definite times or multiple, even random times. Each timecode is
|
36
|
+
comprised of a date and a time part, joined by "@": `#{date}@#{time}`
|
37
|
+
|
38
|
+
As shown above, a timecode object may represent a single time:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
"2011/12/07@21:00" # Wed Dec 07 21:00:00 +0100 2011
|
42
|
+
```
|
43
|
+
|
44
|
+
But timecodes may also be used to define repeating times, like cron. Timcode will return the next future time:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
"7@21:00" # next 7th of a month, e.g. Thu Jul 07 21:00:00 +0200 2011
|
48
|
+
```
|
49
|
+
|
50
|
+
|
51
|
+
### Examples
|
52
|
+
|
53
|
+
Some syntax examples:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
# each 7th of every month at 21:00
|
57
|
+
"7@21"
|
58
|
+
|
59
|
+
# each 7th of every month at 21:00
|
60
|
+
"7@21:00"
|
61
|
+
|
62
|
+
# each 7th of december every year at 21:00
|
63
|
+
"12/7@21:00"
|
64
|
+
|
65
|
+
# on 7th of december 2011 at 21:00
|
66
|
+
"2011/12/07@21:00"
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
### More Examples (not implemented yet)
|
71
|
+
|
72
|
+
In the future Vidibus::Timecode will be able to handle collections, ranges and random times:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
# on 7th and 23rd of december 2011 at 21:00
|
76
|
+
"2011/12/07+23@21:00"
|
77
|
+
|
78
|
+
# from 7th to 23rd of december 2011 at 21:00
|
79
|
+
"2011/12/07-23@21:00"
|
80
|
+
|
81
|
+
# on 7th or 23rd of december 2011 at 21:00
|
82
|
+
"2011/12/07,23@21:00"
|
83
|
+
|
84
|
+
# on one day between 7th and 23rd of december 2011 at 21:00
|
85
|
+
"2011/12/07~23@21:00"
|
86
|
+
|
87
|
+
# from 7th to 23rd of november and from 7th to 23rd of december 2011 at 21:00
|
88
|
+
"2011/11+12/07-23@21:00"
|
89
|
+
|
90
|
+
# between 7th and 23rd of november or december 2011 at 21:00
|
91
|
+
"2011/11,12/07-23@21:00"
|
92
|
+
```
|
93
|
+
|
94
|
+
|
95
|
+
## TODO
|
96
|
+
|
97
|
+
* Allow range input
|
98
|
+
* Allow list input
|
99
|
+
* Allow precision option: `:miliseconds`
|
100
|
+
* Make precision `:seconds` default
|
101
|
+
* Add method `explain` to print timecode in words
|
102
|
+
* Allow timecodes without date or time: `"@21" # everyday at 21:00`
|
103
|
+
|
104
|
+
|
105
|
+
## Copyright
|
106
|
+
|
107
|
+
© 2011 Andre Pankratz. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -8,18 +8,10 @@ Bundler::GemHelper.install_tasks
|
|
8
8
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
9
9
|
require "vidibus/timecode"
|
10
10
|
|
11
|
-
RSpec::Core::RakeTask.new(:rcov) do |t|
|
12
|
-
t.pattern = "spec/**/*_spec.rb"
|
13
|
-
t.rcov = true
|
14
|
-
t.rcov_opts = ["--exclude", "^spec,/gems/"]
|
15
|
-
end
|
16
|
-
|
17
11
|
Rake::RDocTask.new do |rdoc|
|
18
12
|
rdoc.rdoc_dir = "rdoc"
|
19
|
-
rdoc.title = "vidibus-
|
13
|
+
rdoc.title = "vidibus-timecode #{Vidibus::Timecode::VERSION}"
|
20
14
|
rdoc.rdoc_files.include("README*")
|
21
15
|
rdoc.rdoc_files.include("lib/**/*.rb")
|
22
16
|
rdoc.options << "--charset=utf-8"
|
23
17
|
end
|
24
|
-
|
25
|
-
task :default => :rcov
|
data/lib/vidibus-timecode.rb
CHANGED
data/lib/vidibus/timecode.rb
CHANGED
@@ -1,25 +1,29 @@
|
|
1
1
|
module Vidibus
|
2
2
|
class Timecode
|
3
|
-
VERSION =
|
3
|
+
VERSION = '0.1.1'
|
4
4
|
|
5
5
|
YEAR_REGEXP = /(\d{3,4}(?:[,\-]\d{3,4})?)/
|
6
6
|
MONTH_REGEXP = /(\d{1,2}(?:[,\-]\d{1,2})?)/
|
7
7
|
DAY_REGEXP = /(\d{1,2}(?:[,\-]\d{1,2})?)/
|
8
8
|
TIME_REGEXP = /(\d{1,2}(?:[,\-]\d{1,2})?)/
|
9
|
-
REGEXP = /^(?:#{YEAR_REGEXP}\/)?(?:#{MONTH_REGEXP}\/)?#{DAY_REGEXP}@#{TIME_REGEXP}(?:\:#{TIME_REGEXP}){
|
9
|
+
REGEXP = /^(?:#{YEAR_REGEXP}\/)?(?:#{MONTH_REGEXP}\/)?#{DAY_REGEXP}@#{TIME_REGEXP}(?:\:#{TIME_REGEXP})?(?:\:#{TIME_REGEXP})?$/
|
10
10
|
|
11
11
|
class Error < StandardError; end
|
12
12
|
class InputError < Error; end
|
13
13
|
class FormatError < Error; end
|
14
14
|
|
15
15
|
def initialize(*args)
|
16
|
-
options = extract_options!(args)
|
16
|
+
@options = extract_options!(args) || {}
|
17
17
|
@input = args.first or raise_input_error
|
18
18
|
process_input
|
19
19
|
end
|
20
20
|
|
21
21
|
def timecode
|
22
|
-
@timecode ||=
|
22
|
+
@timecode ||= begin
|
23
|
+
format = '%Y/%m/%d@%H:%M'
|
24
|
+
format << ':%S' if @options[:precision].to_s == 'seconds'
|
25
|
+
@time.strftime(format)
|
26
|
+
end
|
23
27
|
end
|
24
28
|
|
25
29
|
def time
|
@@ -50,8 +54,9 @@ module Vidibus
|
|
50
54
|
day = m[3]
|
51
55
|
hour = m[4].to_i
|
52
56
|
minute = m[5].to_i
|
57
|
+
second = m[6].to_i
|
53
58
|
|
54
|
-
Time.local(year, month, day, hour, minute).tap do |time|
|
59
|
+
Time.local(year, month, day, hour, minute, second).tap do |time|
|
55
60
|
time.in_time_zone if time.respond_to?(:in_time_zone)
|
56
61
|
end
|
57
62
|
else
|
data/spec/spec_helper.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start do
|
3
|
+
add_filter '/spec/'
|
4
|
+
end
|
5
|
+
|
6
|
+
$:.unshift File.expand_path('../../', __FILE__)
|
3
7
|
|
4
8
|
require "rubygems"
|
5
9
|
require "rspec"
|
@@ -10,15 +10,16 @@ describe "Vidibus::Timecode" do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should accept a Time" do
|
13
|
-
expect {Vidibus::Timecode.new(time)}.not_to raise_error
|
13
|
+
expect {Vidibus::Timecode.new(time)}.not_to raise_error
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should accept a Timecode string" do
|
17
|
-
expect {Vidibus::Timecode.new(timecode)}.not_to raise_error
|
17
|
+
expect {Vidibus::Timecode.new(timecode)}.not_to raise_error
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should raise an FormatError for invalid Timecode input" do
|
21
|
-
expect {Vidibus::Timecode.new("2011/12/07")}.
|
21
|
+
expect {Vidibus::Timecode.new("2011/12/07")}.
|
22
|
+
to raise_error(Vidibus::Timecode::FormatError)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
@@ -37,6 +38,15 @@ describe "Vidibus::Timecode" do
|
|
37
38
|
it "should return a local time object by default" do
|
38
39
|
this.time.should eql(time.localtime)
|
39
40
|
end
|
41
|
+
|
42
|
+
context 'with seconds' do
|
43
|
+
let(:time) { Time.parse('2011-12-07 21:00:39') }
|
44
|
+
let(:timecode) { '2011/12/07@21:00:39' }
|
45
|
+
|
46
|
+
it "should return the timecode of a given time" do
|
47
|
+
this.time.should eql(time.localtime)
|
48
|
+
end
|
49
|
+
end
|
40
50
|
end
|
41
51
|
|
42
52
|
describe "#timecode" do
|
@@ -49,6 +59,16 @@ describe "Vidibus::Timecode" do
|
|
49
59
|
it "should return the timecode of a given time" do
|
50
60
|
this.timecode.should eql(timecode)
|
51
61
|
end
|
62
|
+
|
63
|
+
context 'with precision: :seconds' do
|
64
|
+
let(:time) { Time.parse('2011-12-07 21:00:39') }
|
65
|
+
let(:timecode) { '2011/12/07@21:00:39' }
|
66
|
+
let(:this) { Vidibus::Timecode.new(time, precision: :seconds) }
|
67
|
+
|
68
|
+
it "should return the timecode of a given time" do
|
69
|
+
this.timecode.should eql(timecode)
|
70
|
+
end
|
71
|
+
end
|
52
72
|
end
|
53
73
|
|
54
74
|
# describe "speed test" do
|
data/vidibus-timecode.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.homepage = "https://github.com/vidibus/vidibus-timecode"
|
15
15
|
s.summary = "Timecodes are a simple, yet powerful way to notate times."
|
16
16
|
s.description = "Timecodes may be used to describe single, definite times or multiple, even random times."
|
17
|
+
s.license = 'MIT'
|
17
18
|
|
18
19
|
s.required_rubygems_version = ">= 1.3.6"
|
19
20
|
s.rubyforge_project = "vidibus-timecode"
|
@@ -21,7 +22,7 @@ Gem::Specification.new do |s|
|
|
21
22
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
22
23
|
s.add_development_dependency "rake"
|
23
24
|
s.add_development_dependency "rdoc"
|
24
|
-
s.add_development_dependency "
|
25
|
+
s.add_development_dependency "simplecov"
|
25
26
|
s.add_development_dependency "rspec", "~> 2"
|
26
27
|
s.add_development_dependency "rr"
|
27
28
|
|
metadata
CHANGED
@@ -1,165 +1,157 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: vidibus-timecode
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 0
|
10
|
-
version: 0.1.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Andre Pankratz
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-09-07 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: bundler
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 23
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 0
|
33
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
34
21
|
version: 1.0.0
|
35
22
|
type: :development
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rake
|
39
23
|
prerelease: false
|
40
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
41
33
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
49
38
|
type: :development
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: rdoc
|
53
39
|
prerelease: false
|
54
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rdoc
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
55
49
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
version: "0"
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
63
54
|
type: :development
|
64
|
-
version_requirements: *id003
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: rcov
|
67
55
|
prerelease: false
|
68
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: simplecov
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
69
65
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
segments:
|
75
|
-
- 0
|
76
|
-
version: "0"
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
77
70
|
type: :development
|
78
|
-
version_requirements: *id004
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: rspec
|
81
71
|
prerelease: false
|
82
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
83
81
|
none: false
|
84
|
-
requirements:
|
82
|
+
requirements:
|
85
83
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
segments:
|
89
|
-
- 2
|
90
|
-
version: "2"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2'
|
91
86
|
type: :development
|
92
|
-
version_requirements: *id005
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: rr
|
95
87
|
prerelease: false
|
96
|
-
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
89
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rr
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
105
102
|
type: :development
|
106
|
-
|
107
|
-
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
description: Timecodes may be used to describe single, definite times or multiple,
|
111
|
+
even random times.
|
108
112
|
email: andre@vidibus.com
|
109
113
|
executables: []
|
110
|
-
|
111
114
|
extensions: []
|
112
|
-
|
113
115
|
extra_rdoc_files: []
|
114
|
-
|
115
|
-
files:
|
116
|
+
files:
|
116
117
|
- .gitignore
|
117
118
|
- .rspec
|
118
119
|
- .travis.yml
|
119
120
|
- Gemfile
|
120
121
|
- LICENSE
|
121
|
-
- README.
|
122
|
+
- README.md
|
122
123
|
- Rakefile
|
123
124
|
- lib/vidibus-timecode.rb
|
124
125
|
- lib/vidibus/timecode.rb
|
125
126
|
- spec/spec_helper.rb
|
126
127
|
- spec/vidibus/timecode_spec.rb
|
127
128
|
- vidibus-timecode.gemspec
|
128
|
-
has_rdoc: true
|
129
129
|
homepage: https://github.com/vidibus/vidibus-timecode
|
130
|
-
licenses:
|
131
|
-
|
130
|
+
licenses:
|
131
|
+
- MIT
|
132
132
|
post_install_message:
|
133
133
|
rdoc_options: []
|
134
|
-
|
135
|
-
require_paths:
|
134
|
+
require_paths:
|
136
135
|
- lib
|
137
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
137
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
143
|
-
segments:
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
segments:
|
144
143
|
- 0
|
145
|
-
|
146
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
+
hash: 1613326113527692330
|
145
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
146
|
none: false
|
148
|
-
requirements:
|
149
|
-
- -
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
hash: 23
|
152
|
-
segments:
|
153
|
-
- 1
|
154
|
-
- 3
|
155
|
-
- 6
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
156
150
|
version: 1.3.6
|
157
151
|
requirements: []
|
158
|
-
|
159
152
|
rubyforge_project: vidibus-timecode
|
160
|
-
rubygems_version: 1.
|
153
|
+
rubygems_version: 1.8.24
|
161
154
|
signing_key:
|
162
155
|
specification_version: 3
|
163
156
|
summary: Timecodes are a simple, yet powerful way to notate times.
|
164
157
|
test_files: []
|
165
|
-
|
data/README.rdoc
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
= Vidibus::Timecode
|
2
|
-
|
3
|
-
Timecodes are a simple, yet powerful way to notate times.
|
4
|
-
|
5
|
-
This gem is part of {Vidibus}[http://vidibus.org], an open source toolset for building distributed (video) applications.
|
6
|
-
|
7
|
-
|
8
|
-
== Compatibility
|
9
|
-
|
10
|
-
http://travis-ci.org/vidibus/vidibus-timecode.png
|
11
|
-
|
12
|
-
Vidibus::Secure is tested against Ruby 1.8.7. {Build History}[http://travis-ci.org/vidibus/vidibus-timecode]
|
13
|
-
|
14
|
-
|
15
|
-
== Installation
|
16
|
-
|
17
|
-
Add the dependency to the Gemfile of your application:
|
18
|
-
|
19
|
-
gem "vidibus-timecode"
|
20
|
-
|
21
|
-
Then call bundle install on your console.
|
22
|
-
|
23
|
-
|
24
|
-
== Usage
|
25
|
-
|
26
|
-
Timecodes may be used to describe single, definite times or multiple, even random times. Each timecode is
|
27
|
-
comprised of a date and a time part, joined by "@":
|
28
|
-
#{date}@#{time}
|
29
|
-
|
30
|
-
In it's basic form, a timecode object will return a single time:
|
31
|
-
2011/12/07@21:00 # => Wed Dec 07 21:00:00 +0100 2011
|
32
|
-
|
33
|
-
But timecodes may also be used to define repeating times, like cron. Timcode will return the next future time:
|
34
|
-
7@21:00 # => next 7th of a month, e.g. Thu Jul 07 21:00:00 +0200 2011
|
35
|
-
|
36
|
-
When defining a range, Timecode will output a random time within range defined:
|
37
|
-
2011/12/07@21:00-23:55 # => e.g. Wed Dec 07 22:13:45 +0100 2011
|
38
|
-
|
39
|
-
Please note: Only the basic for has been implemented already.
|
40
|
-
|
41
|
-
|
42
|
-
== Examples
|
43
|
-
|
44
|
-
Some usage examples:
|
45
|
-
|
46
|
-
7@21 # each 7th of each month at 21:00
|
47
|
-
7@21:00 # each 7th of each month at 21:00
|
48
|
-
12/7@21:00 # each 7th of each december at 21:00
|
49
|
-
2011/12/07@21:00 # on 7th of december 2011 at 21:00
|
50
|
-
2011/12/07,23@21:00 # on 7th and 23rd of december 2011 at 21:00
|
51
|
-
2011/12/07-23@21:00 # between 7th and 23rd of december 2011 at 21:00
|
52
|
-
2011/11,12/07-23@21:00 # between 7th and 23rd of november and between 7th and 23rd of december 2011 at 21:00
|
53
|
-
2011/11-12/07-23@21:00 # between 7th and 23rd of november or december 2011 at 21:00
|
54
|
-
2011/12/07,2012/01/04@21:00,22:30 # on 7th of december 2011 and on 4th of january 2012 at 21:00 and 22:30
|
55
|
-
|
56
|
-
|
57
|
-
== TODO
|
58
|
-
|
59
|
-
* Allow range input
|
60
|
-
* Allow list input
|
61
|
-
* Allow precision option: :seconds or :miliseconds
|
62
|
-
* Add method #explain to print timecode in words
|
63
|
-
|
64
|
-
|
65
|
-
== Copyright
|
66
|
-
|
67
|
-
Copyright (c) 2011 Andre Pankratz. See LICENSE for details.
|