ocarina_of_time 1.0.0 → 1.0.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 +4 -4
- data/README.md +13 -10
- data/examples/timeline.rb +62 -0
- data/lib/ocarina_of_time/timeline.rb +59 -8
- data/lib/ocarina_of_time/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b8f6353a6d7086e4b1f5ee75636393fa92fab8e
|
4
|
+
data.tar.gz: ff95bfcd93e4446b745bce5fc75711005ce7f159
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e0f8f63b34f62f7674354382002f98d6f452408e994f94441da35a6f3156b23ef34c668ca5de382c7bd4c43ff39021be2e77b0185968cb27aa5f06b987a29e8
|
7
|
+
data.tar.gz: aab1b27442879ce34c190ccca4a001b52accda26e8666897878246af4da327e709338a0ca8d0151fa7db94a386ece6a53553e8198a7fc9829b911be3e8672dc2
|
data/README.md
CHANGED
@@ -16,6 +16,8 @@ Play this song near a blue Time Block.
|
|
16
16
|
|
17
17
|
## Usage
|
18
18
|
|
19
|
+
I'm still sort of fleshing out some things. So, I'll update thing as they change.
|
20
|
+
|
19
21
|
```ruby
|
20
22
|
require 'ocarina_of_time'
|
21
23
|
|
@@ -24,30 +26,31 @@ timeline = OcarinaOfTime::Timeline.new
|
|
24
26
|
# beginning of time
|
25
27
|
timeline.beginning
|
26
28
|
# => 2017-02-21 10:10:16 -0500
|
27
|
-
|
28
29
|
# check for beginning of time
|
29
30
|
timeline.beginning?
|
30
31
|
|
31
|
-
# end of time
|
32
32
|
timeline.ending
|
33
33
|
# => false
|
34
|
-
|
35
|
-
# check for end of time
|
36
34
|
timeline.ending?
|
37
35
|
# => false
|
38
|
-
|
39
|
-
|
40
|
-
timeline.ending = Time.now
|
41
|
-
|
36
|
+
# set end of time
|
37
|
+
timeline.ending(Time.now)
|
42
38
|
timeline.ending?
|
43
39
|
# => true
|
44
|
-
|
45
40
|
timeline.ending
|
46
41
|
# => 2017-02-21 10:15:45 -0500
|
42
|
+
|
43
|
+
# or, just make it flexible
|
44
|
+
timeline.flex!
|
45
|
+
|
47
46
|
```
|
48
47
|
|
49
48
|
## Timeline
|
50
|
-
A timeline is a way of displaying a list of events in chronological order, sometimes described as a project artifact. Timelines can use any time scale, depending on the subject and data. Most timelines use a linear scale, where a unit of distance is equal to a set amount of time.
|
49
|
+
A timeline is a way of displaying a list of events in chronological order, sometimes described as a project artifact ( an event ). Timelines can use any time scale, depending on the subject and data. Most timelines use a linear scale, where a unit of distance is equal to a set amount of time. Or, well, at least that is what Wikipedia says.
|
50
|
+
|
51
|
+
### The Short and Simple
|
52
|
+
|
53
|
+
A timeline has a beginning ( sometimes ) and an ending ( sometimes ). You can have a flexible timeline where, as events are added, the beginning and ending points in time will be determined by the actual events themselve.
|
51
54
|
|
52
55
|
```ruby
|
53
56
|
# will return a unique id number for the timeline event
|
@@ -0,0 +1,62 @@
|
|
1
|
+
$: << File.expand_path("../../lib", __FILE__)
|
2
|
+
require "ocarina_of_time"
|
3
|
+
require "pry"
|
4
|
+
|
5
|
+
# create timeline
|
6
|
+
timeline = OcarinaOfTime::Timeline.new
|
7
|
+
|
8
|
+
# flexible timeline
|
9
|
+
timeline.flex!
|
10
|
+
|
11
|
+
# add events ( roughly =~ 2 seconds from eachother )
|
12
|
+
["Example 1", "Example 2", "Example 3"].each do |example|
|
13
|
+
sleep 2
|
14
|
+
timeline.events.add(label: example, time: Time.now)
|
15
|
+
end
|
16
|
+
|
17
|
+
# check flexbility
|
18
|
+
timeline.flex?
|
19
|
+
# => true
|
20
|
+
|
21
|
+
# Some quick examples ( not everything )
|
22
|
+
|
23
|
+
timeline.events.times
|
24
|
+
# => [2017-02-21 20:43:11 -0500, 2017-02-21 20:43:13 -0500, 2017-02-21 20:43:15 -0500]
|
25
|
+
|
26
|
+
timeline.events.ids
|
27
|
+
# => ["69ba109e-15cb-44cc-b541-042cc1cdaf82", "5e4dc4ff-c263-4365-ab3a-c37b2c11af66", "11801833-ba11-47c8-aef1-b1d621e461dd"]
|
28
|
+
|
29
|
+
timeline.events.dates
|
30
|
+
# => [#<Date: 2017-02-21 ((2457806j,0s,0n),+0s,2299161j)>]
|
31
|
+
|
32
|
+
timeline.events
|
33
|
+
# => #<OcarinaOfTime::Events:0x007f8fe847d590
|
34
|
+
# @all=
|
35
|
+
# [#<OcarinaOfTime::Event:0x007f8fe847d428
|
36
|
+
# @data=
|
37
|
+
# #<struct Struct::EventData
|
38
|
+
# id="69ba109e-15cb-44cc-b541-042cc1cdaf82",
|
39
|
+
# label="Example 1",
|
40
|
+
# tags=#<Set: {}>,
|
41
|
+
# time=2017-02-21 20:43:11 -0500,
|
42
|
+
# created=2017-02-21 20:43:11 -0500,
|
43
|
+
# value=false>>,
|
44
|
+
# #<OcarinaOfTime::Event:0x007f8fe847d040
|
45
|
+
# @data=
|
46
|
+
# #<struct Struct::EventData
|
47
|
+
# id="5e4dc4ff-c263-4365-ab3a-c37b2c11af66",
|
48
|
+
# label="Example 2",
|
49
|
+
# tags=#<Set: {}>,
|
50
|
+
# time=2017-02-21 20:43:13 -0500,
|
51
|
+
# created=2017-02-21 20:43:13 -0500,
|
52
|
+
# value=false>>,
|
53
|
+
# #<OcarinaOfTime::Event:0x007f8fe847cd98
|
54
|
+
# @data=
|
55
|
+
# #<struct Struct::EventData
|
56
|
+
# id="11801833-ba11-47c8-aef1-b1d621e461dd",
|
57
|
+
# label="Example 3",
|
58
|
+
# tags=#<Set: {}>,
|
59
|
+
# time=2017-02-21 20:43:15 -0500,
|
60
|
+
# created=2017-02-21 20:43:15 -0500,
|
61
|
+
# value=false>>]>
|
62
|
+
|
@@ -3,9 +3,7 @@ module OcarinaOfTime
|
|
3
3
|
# Respresent the logic of a Timeline.
|
4
4
|
# @author Kent 'picat' Gruber
|
5
5
|
class Timeline
|
6
|
-
|
7
|
-
attr_accessor :beginning
|
8
|
-
attr_accessor :ending
|
6
|
+
# Access events.
|
9
7
|
attr_accessor :events
|
10
8
|
|
11
9
|
# Create a new **Timeline** object.
|
@@ -15,12 +13,42 @@ module OcarinaOfTime
|
|
15
13
|
# @option args [Time] :end ending point in time (default: false)
|
16
14
|
# @return [void]
|
17
15
|
def initialize(args={})
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
if args[:flex]
|
17
|
+
@flex = true
|
18
|
+
else
|
19
|
+
@flex = false # have a rigid timeline
|
20
|
+
@beginning = args[:begin] || Time.now
|
21
|
+
@ending = args[:end] || false
|
22
|
+
end
|
21
23
|
@events = Events.new
|
22
24
|
end
|
23
25
|
|
26
|
+
# Either get the beinning of the timline or set it.
|
27
|
+
def beginning(set=false)
|
28
|
+
if set
|
29
|
+
@beginning = set unless @flex
|
30
|
+
else
|
31
|
+
if @flex
|
32
|
+
@events.by(newest: true).first
|
33
|
+
else
|
34
|
+
@beginning
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Either get the ending of the timline or set it.
|
40
|
+
def ending(set=false)
|
41
|
+
if set
|
42
|
+
@ending = set unless @flex
|
43
|
+
else
|
44
|
+
if @flex
|
45
|
+
@events.by(oldest: true).first
|
46
|
+
else
|
47
|
+
@ending
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
24
52
|
# Turn on a flexible timeline, where events will change the potential
|
25
53
|
# range of the timeline. If a beginning is set, an unflexible timeline
|
26
54
|
# will not allow any new events to be set before that time. A flexible timeline
|
@@ -31,6 +59,13 @@ module OcarinaOfTime
|
|
31
59
|
on ? @flex = true : @flex = false
|
32
60
|
end
|
33
61
|
|
62
|
+
# Yolo swag, lets just turn the flex on.
|
63
|
+
#
|
64
|
+
# @return[void]
|
65
|
+
def flex!
|
66
|
+
@flex = true
|
67
|
+
end
|
68
|
+
|
34
69
|
# Check if the Timeline is flexible or not.
|
35
70
|
#
|
36
71
|
# @return[Boolean]
|
@@ -43,7 +78,15 @@ module OcarinaOfTime
|
|
43
78
|
#
|
44
79
|
# @return[Boolean]
|
45
80
|
def ending?
|
46
|
-
@
|
81
|
+
if @flex
|
82
|
+
if @events.data.all.empty?
|
83
|
+
false
|
84
|
+
else
|
85
|
+
true
|
86
|
+
end
|
87
|
+
else
|
88
|
+
@ending ? true : false
|
89
|
+
end
|
47
90
|
end
|
48
91
|
|
49
92
|
# Check if there's currently a beginning of time
|
@@ -51,7 +94,15 @@ module OcarinaOfTime
|
|
51
94
|
#
|
52
95
|
# @return[Boolean]
|
53
96
|
def beginning?
|
54
|
-
@
|
97
|
+
if @flex
|
98
|
+
if @events.data.all.empty?
|
99
|
+
false
|
100
|
+
else
|
101
|
+
true
|
102
|
+
end
|
103
|
+
else
|
104
|
+
@beginning ? true : false
|
105
|
+
end
|
55
106
|
end
|
56
107
|
|
57
108
|
# Get the difference in time between +two+ points in +time+.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ocarina_of_time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kent Gruber
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- bin/console
|
73
73
|
- bin/setup
|
74
74
|
- examples/debug.rb
|
75
|
+
- examples/timeline.rb
|
75
76
|
- lib/ocarina_of_time.rb
|
76
77
|
- lib/ocarina_of_time/event.rb
|
77
78
|
- lib/ocarina_of_time/events.rb
|