Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ocarina_of_time

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ocarina_of_time

  • 1.0.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Ocarina of Time

Alt Text

Play this song near a blue Time Block.

------------------------------------------------
-( > )---------( > )----------------------------
----------( v )-----------( > )-----------------
-----( A )-----------( A )----------------------

Installation

$ gem install ocarina_of_time

Usage

I'm still sort of fleshing out some things. So, I'll update thing as they change.

require 'ocarina_of_time'

timeline = OcarinaOfTime::Timeline.new

# beginning of time
timeline.beginning
# => 2017-02-21 10:10:16 -0500
# check for beginning of time
timeline.beginning?

timeline.ending
# => false
timeline.ending?
# => false
# set end of time
timeline.ending(Time.now)
timeline.ending?
# => true
timeline.ending
# => 2017-02-21 10:15:45 -0500

# or, just make it flexible
timeline.flex!

Timeline

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.

The Short and Simple

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.

# will return a unique id number for the timeline event
timeline.events.add(label: "Example 1")
# => "e41fdc5c-6a8d-4d85-addb-27b6f81666e9"

# you can remove a timeline event by id number
timeline.events.delete(id: "e41fdc5c-6a8d-4d85-addb-27b6f81666e9")
# => true

# or you can remove a timeline event by time, if
# it exists -- maybe it's already been deleted ;)
timeline.events.delete(id: "e41fdc5c-6a8d-4d85-addb-27b6f81666e9")
# => false

Events

Timelines events are stored in an events class which acts as a nice wrapped to our timeline Event objects.

# create new timeline
timeline = OcarinaOfTime::Line.new

# adding events is very straightforward
timeline.events.add(label: "Example 1")
# => OcarinaOfTime::Event:0x00000001fcd040.id
timeline.events.add(label: "Example 2")
# => OcarinaOfTime::Event:0x00000001cabce0.id

# you can easily update events
timeline.events.update(id: "2f6716b1-9a2f-46d2-8bcf-4db0212032f1", value: 1)

# you can easily delete events
timelines.events.delete(id: "2f6716b1-9a2f-46d2-8bcf-4db0212032f1")

# there's a nice little wrapped to sort_by
timeline.events.by(oldest: true)
# => OcarinaOfTime::Event:0x00000001cabce0, OcarinaOfTime::Event:0x00000001fcd040
timeline.events.by(newest: true)
# => OcarinaOfTime::Event:0x00000001fcd040, OcarinaOfTime::Event:0x00000001cabce0

# you can also find events based on different attributes
timeline.events.find(label: "Example 1")
timeline.events.find(labels: ["Example 1", "Example 2"])
timeline.events.find(event: timeline.events.all.first)
timeline.events.find(date: Time.now.to_date)

# you can also chain your find queries ( one option at a time )
timeline.events.find(date: Time.now.to_date).find(label: "Example 1")

# you can get a shortcut to all of the uniqe dates for each event
timeline.events.dates
# or a shortcut to all of the unique times for each event
timeline.events.times
# or you can get all of the unique labels
timelines.events.labels
# or you can get all of the unique ids
timelines.events.ids
# or you can get all of the unique tags
timelines.events.tags

# or if you don't want unique whatever, turn that off
timelines.events.tags(unique: false)
timelines.events.times(unique: false)

Event

Timeline Events are made up of serveral Event objects. An event object is made up of its unique ID number, its label, its tags ( as a set, unique ), the time of the event ( default to its creation time ), the time the event was created ( defaults to its creation time ) and a value -- which can be whatever you like, if you want to use that ( instead of just stuffing that data in tags ).

# create a new timeline event
event = OcarinaOfTime::Event.new

# accessing event data ( reading ) with data shortcuts
event.label
# => false

# accessing event data ( to change )
event.data.label = "Example 1"

event.label
# => "Example 1" 

# check for tags
event.tags?
# => false

# add tags as an array or string
tags = ["Cool", "Sick", "Awesome"]
tag  = "Gnarly"
event.add_tags(tags)
event.add_tags(tag)

# check for tags again
event.tags?
# => true

# check out tags data
event.tags
# => Set: {"Cool", "Sick", "Awesome", "Gnarly"}

# add the same event to two different timelines
timeline1 = OcarinaOfTime::Line.new 
timeline2 = OcarinaOfTime::Line.new 
timeline1.events.add(event: event)
# => "bb2aa0a0-68ee-469c-808b-875c7494a3c4"
timeline2.events.add(event: event)
# => "bb2aa0a0-68ee-469c-808b-875c7494a3c4"

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 22 Feb 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc