Add ?t=1:20 param support

This commit is contained in:
Marcin Kulik 2015-10-13 18:38:37 +00:00
parent 9881c5df6c
commit cc13bf755a
4 changed files with 570 additions and 539 deletions

View File

@ -12,6 +12,7 @@ function tryCreatePlayer(parentNode, asciicast, options) {
speed: options.speed, speed: options.speed,
autoPlay: options.autoPlay, autoPlay: options.autoPlay,
loop: options.loop, loop: options.loop,
startAt: options.startAt,
fontSize: options.fontSize, fontSize: options.fontSize,
theme: options.theme, theme: options.theme,
title: options.title, title: options.title,

View File

@ -1,22 +1,40 @@
class PlaybackOptions class PlaybackOptions
class Time < Virtus::Attribute
def coerce(value)
value = value.presence
if value
smh = value.strip.sub("m", ":0").split(":").reverse
smh[0].to_i + smh[1].to_i * 60 + smh[2].to_i * 3600
end
end
end
include Virtus.model include Virtus.model
attribute :speed, Float, default: 1.0 attribute :speed, Float, default: 1.0
attribute :size, String, default: 'small' attribute :size, String, default: 'small'
attribute :autoplay, Boolean, default: false attribute :autoplay, Boolean
attribute :loop, Boolean, default: false attribute :loop, Boolean, default: false
attribute :benchmark, Boolean, default: false attribute :benchmark, Boolean, default: false
attribute :theme, String, default: Theme::DEFAULT attribute :theme, String, default: Theme::DEFAULT
attribute :t, Time
def as_json(*) def as_json(*)
{ opts = {
speed: speed, speed: speed,
autoPlay: autoplay, autoPlay: autoplay,
loop: loop, loop: loop,
fontSize: size, fontSize: size,
theme: theme theme: theme,
} }
if t
opts = opts.merge(startAt: t)
end
opts
end end
end end

View File

@ -0,0 +1,13 @@
require 'rails_helper'
describe PlaybackOptions do
it 'coerces time' do
expect(PlaybackOptions.new.t).to eq(nil)
expect(PlaybackOptions.new(t: '').t).to eq(nil)
expect(PlaybackOptions.new(t: '5').t).to eq(5)
expect(PlaybackOptions.new(t: '5s').t).to eq(5)
expect(PlaybackOptions.new(t: '2m9s').t).to eq(129)
expect(PlaybackOptions.new(t: '2:09').t).to eq(129)
expect(PlaybackOptions.new(t: '1:02:09').t).to eq(3600+129)
end
end

File diff suppressed because it is too large Load Diff