trecs 0.1.13 → 0.1.14

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
2
  SHA1:
3
- metadata.gz: eb9d709aca3170e4c4e191e84be0f1091f64c915
4
- data.tar.gz: 2402dce30087c9d8293ae24bccaf557f366dce0b
3
+ metadata.gz: a4483b0fafe0266d5424f01b291a8ef6dc044ddd
4
+ data.tar.gz: 465ed8d44cd35a7a6b46a81be537a381d21715e3
5
5
  SHA512:
6
- metadata.gz: 2a9e7265de1f024fbd7a640f7af5d44dd600b8b1a9806283ce8f3203cdca3b939b5b3101a2c09562b567af899d01d3d2d9e061ead1d52b274109f0957d329b39
7
- data.tar.gz: b2af6007916bc95f1cbd963d3524446ddb67257655b3ce58d92b1f87cbf0dced7780ca94394c6f87c5470dcfd8dcf37259f233e6cfd8e8242e1b1bfe2519a01a
6
+ metadata.gz: bb3c8768eba4935b9615b43a048c0e8c93cb369c5c4639f204a19b78aa0321a7a2d38494ffceaf7737b1125e4eeb808128a52fc3fd0ad8d17934c9428c1afff7
7
+ data.tar.gz: 45404627642b17cce299a350c513907dcec4dd81c32054e919d195e9666c46a38da7490bdf6887eb726bca3c57aa2bdf9f8e72a29ddcb29ebda175c9c6f1cb82
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- trecs (0.1.13)
4
+ trecs (0.1.14)
5
5
  minitar (~> 0.5.4)
6
6
  trollop (~> 2.0)
7
7
 
data/bin/trecs CHANGED
@@ -16,32 +16,60 @@ end
16
16
  opts = Trollop::options do
17
17
  version TRecs::VERSION
18
18
 
19
- opt :step, "Time in ms between frames", short: 's', default: 100
20
- opt :ticker, "Ticker", type: String, default: "clock"
19
+ opt :step, "Time in ms between frames", short: 's', default: 100
20
+ opt :ticker, "Ticker", type: String, default: "clock"
21
21
 
22
- opt :from, "Play from", type: Integer, default: 0
23
- opt :to, "Play to", type: Integer, default: 0
24
- opt :speed, "Playing speed", type: Float, default: 1.0
22
+ opt :from, "Play from", type: Integer, default: 0
23
+ opt :to, "Play to", type: Integer, default: 0
24
+ opt :speed, "Playing speed", type: Float, default: 1.0
25
25
 
26
- opt :ticker_file, "File to watch", type: String, default: "/tmp/ticker"
26
+ opt :ticker_file, "File to watch", type: String, default: "/tmp/ticker"
27
+
28
+ opt :audio, "If there's an audio file, reproduce it", default: true
29
+
30
+ opt :duration, "Length of the recording", default: false
27
31
  end
28
32
  opts[:trecs_file] = ARGV[0]
29
33
 
30
34
  trap "SIGINT" do
31
35
  finish(opts)
36
+ if @sox_pid
37
+ Process.kill("SIGINT", @sox_pid)
38
+ Process.waitpid(@sox_pid)
39
+ end
32
40
  exit rescue nil
33
41
  end
34
42
 
43
+
44
+ ########## AUDIO ##########
45
+ def start_sound_player(file_name='sound.ogg')
46
+ return unless File.exist?(file_name)
47
+ # at_exit { system('stty echo') }
48
+ STDOUT.puts "=> Starting sound player..."
49
+ @sox_pid = fork do
50
+ `play #{file_name} 2>&1`
51
+ end
52
+ end
53
+
54
+ def stop_sound_player
55
+ return unless File.exist?(file_name)
56
+ STDOUT.puts "=> Stopping sound player..."
57
+ Process.waitpid(@sox_pid)
58
+ end
59
+ ######## END AUDIO ########
60
+
61
+
62
+
35
63
  source = TRecs::TgzSource.new(trecs_file: opts.fetch(:trecs_file))
36
- reader = source.reader(opts)
64
+ reader = source.build_reader(opts)
37
65
 
38
66
  ticker_file = "tickers/#{opts[:ticker]}_ticker"
39
67
  require ticker_file
40
68
  ticker_class_name = [
41
- "TRecs::",
42
- opts[:ticker].split(/[-_\s]/).map(&:capitalize),
43
- "Ticker"
44
- ].join
69
+ "TRecs::",
70
+ opts[:ticker].split(/[-_\s]/).map(&:capitalize),
71
+ "Ticker"
72
+ ].join
45
73
  ticker_class = ticker_class_name.split("::").reduce(Object) { |a, e| a.const_get e }
46
74
  ticker = ticker_class.new(opts)
47
75
 
@@ -51,7 +79,23 @@ player_options = {
51
79
  step: opts[:step],
52
80
  }
53
81
 
82
+
83
+
54
84
  player = TRecs::Player.new(player_options)
85
+
86
+ if opts[:duration]
87
+ last_timestamp = player.timestamps.last
88
+ hr = last_timestamp / (1000*60*60)
89
+ last_timestamp = last_timestamp % (1000*60*60)
90
+ min = last_timestamp / (1000*60)
91
+ last_timestamp = last_timestamp % (1000*60)
92
+ seg = last_timestamp / 1000
93
+ duration = "%d:%02d:%02d" % [hr, min, seg]
94
+
95
+ puts duration
96
+ exit 0
97
+ end
98
+
55
99
  player.play
56
100
 
57
101
  finish(opts)
data/bin/trecs_record CHANGED
@@ -21,7 +21,7 @@ opts = Trollop::options do
21
21
 
22
22
  opt :audio, "Record audio", type: String
23
23
  end
24
- opts[:trecs_file] = ARGV[0]
24
+ opts[:trecs_backend] = ARGV[0]
25
25
 
26
26
  require "writers/json_writer"
27
27
  writer_class = TRecs::JsonWriter
@@ -36,7 +36,7 @@ strategy_class_name = [
36
36
  strategy_class = strategy_class_name.split("::").reduce(Object) { |a, e| a.const_get e }
37
37
 
38
38
  ########## AUDIO ##########
39
- def start_sound_recording(file_name='sound.ogg')
39
+ def start_sound_recording(file_name='/tmp/sound.ogg')
40
40
  puts "Sound file stored in #{file_name}"
41
41
  @sox_pid = fork do
42
42
  Signal.trap("SIGINT") {
@@ -8,7 +8,7 @@ module TRecs
8
8
  attr_reader :source
9
9
 
10
10
  def initialize(options={})
11
- trecs_file = options.fetch(:trecs_file)
11
+ trecs_backend = options.fetch(:trecs_backend)
12
12
  @source = options.fetch(:source)
13
13
  @frames = get_frames
14
14
  @timestamps = @frames.keys
@@ -13,12 +13,16 @@ module TRecs
13
13
  @strategies = options.fetch(:strategies) { [] }
14
14
  end
15
15
 
16
- def <<(strategies)
17
- Array(strategies).each do |strategy|
18
- @strategies << strategy
19
- end
16
+ def <<(strategy)
17
+ @strategies << strategy
20
18
  end
21
19
 
20
+ def append(*strategies)
21
+ strategies.each do |strategy|
22
+ self << strategy
23
+ end
24
+ end
25
+
22
26
  def perform
23
27
  strategies.each do |strategy|
24
28
  strategy.recorder = recorder
@@ -10,9 +10,11 @@ module TRecs
10
10
 
11
11
  def perform
12
12
  @frames.each do |time, content|
13
- current_time(time)
14
- current_content(content)
15
- save_frame
13
+ if time.is_a?(Numeric) || /\A\d+\Z/ === time
14
+ current_time(time.to_i)
15
+ current_content(content)
16
+ save_frame
17
+ end
16
18
  end
17
19
  end
18
20
 
@@ -22,7 +22,6 @@ module TRecs
22
22
  end
23
23
  end
24
24
 
25
-
26
25
  def command
27
26
  @command ||=
28
27
  set_command
@@ -0,0 +1,80 @@
1
+ require 'json'
2
+ require "yaml"
3
+ require "stringio"
4
+
5
+ module TRecs
6
+ class Source
7
+ attr_reader :manifest
8
+
9
+ def initialize(options={})
10
+ @trecs_backend = options.fetch(:trecs_backend)
11
+ end
12
+
13
+ def []=(key, value)
14
+ manifest[key] = value
15
+ end
16
+
17
+ def [](key)
18
+ manifest[key]
19
+ end
20
+
21
+ def manifest
22
+ @manifest ||= {}
23
+ end
24
+
25
+ end
26
+
27
+ class InMemorySource < Source
28
+ def create_recording
29
+ clear
30
+ trecs_backend[:manifest] = manifest
31
+ end
32
+
33
+ def clear
34
+ @trecs_backend.clear
35
+ end
36
+
37
+ def add_entry(path)
38
+ io = StringIO.new
39
+ yield io
40
+ io.rewind
41
+ content = io.read.to_s
42
+
43
+ path_array = path.split("/") << content
44
+ result = path_array.reverse.inject do |entry, path|
45
+ { path => entry }
46
+ end
47
+ deep_merge(trecs_backend, result)
48
+ end
49
+
50
+ def read_entry(path)
51
+ path = path.split("/")
52
+
53
+ path.inject(trecs_backend) do |current_tree, current_entry|
54
+ break nil if current_tree.nil?
55
+ current_tree[current_entry]
56
+ end
57
+ end
58
+
59
+ private
60
+ attr_reader :trecs_backend
61
+
62
+ def deep_merge(hash1, hash2, &block)
63
+ hash2.each_pair do |current_key, other_value|
64
+ this_value = hash1[current_key]
65
+
66
+ hash1[current_key] = if this_value.is_a?(Hash) && other_value.is_a?(Hash)
67
+ deep_merge(this_value, other_value, &block)
68
+ else
69
+ if block_given? && key?(current_key)
70
+ block.call(current_key, this_value, other_value)
71
+ else
72
+ other_value
73
+ end
74
+ end
75
+ end
76
+ hash1
77
+ end
78
+
79
+ end
80
+ end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require 'json'
2
3
  require "fileutils"
3
4
  require "zlib"
@@ -6,19 +7,96 @@ require "tmpdir"
6
7
  require "pathname"
7
8
  require "yaml"
8
9
 
10
+ #module TRecs
11
+ # class TgzSource
12
+ # include Archive::Tar
13
+ #
14
+ # def initialize(options={})
15
+ # @trecs_backend = options.fetch(:trecs_backend)
16
+ # end
17
+ #
18
+ # def create_recording
19
+ # in_tmp_dir do
20
+ # @tgz = Zlib::GzipWriter.new(trecs_backend)
21
+ #
22
+ # yield self if block_given?
23
+ #
24
+ # create_entry('manifest.yaml') do |f|
25
+ # f.write manifest.to_yaml
26
+ # end
27
+ #
28
+ # Minitar.pack(@files_to_add.flatten, @tgz)
29
+ # end
30
+ # end
31
+ #
32
+ # # TODO: Este es el punto de intersección entre read y create_recording
33
+ # def manifest
34
+ # @manifest ||= {}
35
+ # end
36
+ #
37
+ # def []=(key, value)
38
+ # manifest[key] = value
39
+ # end
40
+ #
41
+ # def [](key)
42
+ # manifest[key]
43
+ # end
44
+ #
45
+ # def read_file(file_name)
46
+ # File.read(file_name)
47
+ # end
48
+ #
49
+ # def create_entry(file_name)
50
+ # File.open(file_name, File::CREAT|File::TRUNC|File::RDWR, 0644) do |f|
51
+ # yield f
52
+ # end
53
+ # add_file(file_name)
54
+ # end
55
+ #
56
+ # def add_file(file_name)
57
+ # @files_to_add ||= []
58
+ # @files_to_add << file_name
59
+ # end
60
+ #
61
+ # def add_audio_file(file_name)
62
+ # Dir.mkdir("audio") unless File.exist? "audio"
63
+ #
64
+ # orig_file = file_name
65
+ # file_name = "./audio/" + Pathname(file_name).basename.to_s
66
+ # FileUtils.symlink(orig_file, file_name)
67
+ # add_file(file_name)
68
+ # end
69
+ #
70
+ # private
71
+ #
72
+ # attr_reader :trecs_backend
73
+ #
74
+ # #Investigar como hacer para descomprimir en memoria
75
+ # def in_tmp_dir
76
+ # Dir.mktmpdir("trecs_record") do |dir|
77
+ # Dir.chdir(dir) do
78
+ # yield
79
+ # end
80
+ # end
81
+ # end
82
+ # end
83
+ #end
84
+ #
85
+
9
86
  module TRecs
10
87
  class TgzSource
11
88
  include Archive::Tar
12
89
 
13
- attr_reader :trecs_file
90
+ attr_reader :trecs_backend
91
+ attr_reader :audio_files
14
92
 
15
93
  def initialize(options={})
16
- @trecs_file = options.fetch(:trecs_file)
94
+ @trecs_backend = options.fetch(:trecs_backend)
17
95
  end
18
96
 
19
97
  def create_recording
20
98
  in_tmp_dir do
21
- @tgz = Zlib::GzipWriter.new(File.open(trecs_file, 'wb'))
99
+ @tgz = Zlib::GzipWriter.new(File.open(trecs_backend, 'wb'))
22
100
 
23
101
  yield self
24
102
 
@@ -30,7 +108,16 @@ module TRecs
30
108
  end
31
109
  end
32
110
 
33
- def reader(options={})
111
+ def read
112
+ in_tmp_dir do
113
+ tgz = Zlib::GzipReader.new(File.open(trecs_backend, 'rb'))
114
+ Minitar.unpack(tgz, "./")
115
+
116
+ yield self
117
+ end
118
+ end
119
+
120
+ def build_reader(options={})
34
121
  reader = nil
35
122
  options[:source] = self
36
123
  read do |source|
@@ -50,15 +137,7 @@ module TRecs
50
137
  reader
51
138
  end
52
139
 
53
- def read
54
- in_tmp_dir do
55
- tgz = Zlib::GzipReader.new(File.open(trecs_file, 'rb'))
56
- Minitar.unpack(tgz, "./")
57
-
58
- yield self
59
- end
60
- end
61
-
140
+ # Investigar como hacer para descomprimir en memoria
62
141
  def in_tmp_dir
63
142
  Dir.mktmpdir("trecs_record") do |dir|
64
143
  Dir.chdir(dir) do
@@ -98,6 +177,7 @@ module TRecs
98
177
 
99
178
  private
100
179
 
180
+ # TODO: Este es el punto de intersección entre read y create_recording
101
181
  def manifest
102
182
  @manifest ||= {}
103
183
  end
data/lib/trecs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TRecs
2
- VERSION = "0.1.13"
2
+ VERSION = "0.1.14"
3
3
  end
@@ -9,8 +9,8 @@ module TRecs
9
9
  attr_reader :source
10
10
 
11
11
  def initialize(options={})
12
- trecs_file = options.fetch(:trecs_file)
13
- @source = TgzSource.new(trecs_file: trecs_file)
12
+ trecs_backend = options.fetch(:trecs_backend)
13
+ @source = TgzSource.new(trecs_backend: trecs_backend)
14
14
 
15
15
  @audio_files = options.fetch(:audio_files) { [] }
16
16
  @audio_files = Array(@audio_files)
@@ -40,7 +40,7 @@ module TRecs
40
40
  source.add_audio_file(file)
41
41
  end
42
42
  if audio_files.any?
43
- source[:defailt_audio] = audio_files.first
43
+ source[:default_audio] = audio_files.first
44
44
  end
45
45
  end
46
46
  end
@@ -3,6 +3,6 @@ require "readers/json_reader"
3
3
 
4
4
  module TRecs
5
5
  describe JsonReader do
6
- skip("Test JsonReader")
6
+ skip("JsonReader")
7
7
  end
8
8
  end
@@ -59,7 +59,7 @@ module TRecs
59
59
  end
60
60
 
61
61
  context "in bulk" do
62
- When { strategy << [second_strategy, third_strategy] }
62
+ When { strategy.append(second_strategy, third_strategy) }
63
63
 
64
64
  Then { strategy.strategies == [
65
65
  first_strategy,
@@ -23,9 +23,11 @@ module TRecs
23
23
  Given(:recorder) { Spy.new("recorder") }
24
24
  Given(:strategy) { HashStrategy.new(
25
25
  {
26
- 0 => "A",
27
- 10 => "B",
28
- 15 => "C",
26
+ 0 => "A",
27
+ 10.0 => "B",
28
+ "15" => "C",
29
+ "1a2b3C4" => "h",
30
+ 20 => "D",
29
31
  }
30
32
  ) }
31
33
 
@@ -35,6 +37,7 @@ module TRecs
35
37
  Then { recorder.calls[1] == [:current_frame, [ {time: 0, content: "A"} ] ] }
36
38
  Then { recorder.calls[2] == [:current_frame, [ {time: 10, content: "B"} ] ] }
37
39
  Then { recorder.calls[3] == [:current_frame, [ {time: 15, content: "C"} ] ] }
40
+ Then { recorder.calls[4] == [:current_frame, [ {time: 20, content: "D"} ] ] }
38
41
  end
39
42
  end
40
43
  end
@@ -0,0 +1,90 @@
1
+ require "spec_helper"
2
+ require "sources/in_memory_source"
3
+
4
+ module TRecs
5
+ describe InMemorySource do
6
+ Given(:source) { InMemorySource.new(trecs_backend: trecs_backend) }
7
+ context "creating from scratch" do
8
+ Given(:trecs_backend) { Hash.new }
9
+
10
+ When { source.create_recording }
11
+
12
+ context "creation" do
13
+ Then { trecs_backend.keys.any? }
14
+ end
15
+
16
+ context "creating a manifest" do
17
+ When { source[:format] = "FORMAT" }
18
+
19
+ Then { source[:format] == "FORMAT" }
20
+ Then { trecs_backend[:manifest][:format] == "FORMAT" }
21
+ end
22
+
23
+ context "adding entries" do
24
+ context "root level" do
25
+ When {
26
+ source.add_entry("an_entry") do |e|
27
+ e.write "THE CONTENT"
28
+ end
29
+ }
30
+
31
+ Then { trecs_backend["an_entry"] == "THE CONTENT" }
32
+ end
33
+
34
+ context "one level deep" do
35
+ When {
36
+ source.add_entry("a_section/an_entry") do |e|
37
+ e.write "THE CONTENT"
38
+ end
39
+ }
40
+
41
+ Then { trecs_backend["a_section"]["an_entry"] == "THE CONTENT" }
42
+ end
43
+
44
+ context "two entries one level deep" do
45
+ When {
46
+ source.add_entry("a_section/an_entry") do |e|
47
+ e.write "THE CONTENT"
48
+ end
49
+
50
+ source.add_entry("a_section/another_entry") do |e|
51
+ e.write "THE OTHER CONTENT"
52
+ end
53
+ }
54
+
55
+ Then { trecs_backend["a_section"]["an_entry"] == "THE CONTENT" }
56
+ Then { trecs_backend["a_section"]["another_entry"] == "THE OTHER CONTENT" }
57
+ end
58
+ end
59
+
60
+ end
61
+
62
+ context "reading a recording" do
63
+ Given(:trecs_backend) {
64
+ { "a" => { "b" => { "c.txt" => "ABC" } } }
65
+ }
66
+ Then { source.read_entry("a/b/c.txt") == "ABC" }
67
+
68
+ Then { source.read_entry("a/b/c.t") == nil }
69
+ Then { source.read_entry("a/d/f/g/i.txt") == nil }
70
+
71
+ Then { source.read_entry("a/d/f/g/i.txt") == nil }
72
+ end
73
+
74
+ context "handling non-empty recordings" do
75
+ context "#clear" do
76
+ Given(:trecs_backend) {
77
+ { "a" => { "b" => { "c.txt" => "ABC" } } }
78
+ }
79
+
80
+ When {
81
+ source.create_recording
82
+ source.clear
83
+ }
84
+
85
+ Then { trecs_backend == {} }
86
+ end
87
+
88
+ end
89
+ end
90
+ end
@@ -1,8 +1,119 @@
1
- require "spec_helper"
2
- require "sources/tgz_source"
3
-
4
- module TRecs
5
- describe TgzSource do
6
- skip("TgzSource")
7
- end
8
- end
1
+ # require "spec_helper"
2
+ # require "sources/tgz_source"
3
+ # require "stringio"
4
+ # require 'archive/tar/minitar'
5
+ #
6
+ # require "spec_helper"
7
+ # require "sources/in_memory_source"
8
+ #
9
+ # module TRecs
10
+ # describe TgzSource do
11
+ # Given(:source) { TgzSource.new(trecs_backend: trecs_backend) }
12
+ # context "creating from scratch" do
13
+ # Given(:trecs_backend) { StringIO.new }
14
+ #
15
+ # When { source.create_recording }
16
+ #
17
+ # context "creation" do
18
+ # When { trecs_backend.rewind }
19
+ # Then { !trecs_backend.string.empty? }
20
+ # end
21
+ #
22
+ # context "creating a manifest" do
23
+ # When { source[:format] = "FORMAT" }
24
+ #
25
+ # Then { source[:format] == "FORMAT" }
26
+ # end
27
+ #
28
+ # context "adding entries" do
29
+ # context "root level" do
30
+ # When {
31
+ # source.add_entry("an_entry") do |e|
32
+ # e.write "THE CONTENT"
33
+ # end
34
+ # }
35
+ #
36
+ # Then { trecs_backend["an_entry"] == "THE CONTENT" }
37
+ # end
38
+ # #
39
+ # # context "one level deep" do
40
+ # # When {
41
+ # # source.add_entry("a_section/an_entry") do |e|
42
+ # # e.write "THE CONTENT"
43
+ # # end
44
+ # # }
45
+ # #
46
+ # # Then { trecs_backend["a_section"]["an_entry"] == "THE CONTENT" }
47
+ # # end
48
+ # #
49
+ # # context "two entries one level deep" do
50
+ # # When {
51
+ # # source.add_entry("a_section/an_entry") do |e|
52
+ # # e.write "THE CONTENT"
53
+ # # end
54
+ # #
55
+ # # source.add_entry("a_section/another_entry") do |e|
56
+ # # e.write "THE OTHER CONTENT"
57
+ # # end
58
+ # # }
59
+ # #
60
+ # # Then { trecs_backend["a_section"]["an_entry"] == "THE CONTENT" }
61
+ # # Then { trecs_backend["a_section"]["another_entry"] == "THE OTHER CONTENT" }
62
+ # # end
63
+ # end
64
+ # end
65
+ # #
66
+ # # context "reading a recording" do
67
+ # # Given(:trecs_backend) { StringIO.new }
68
+ # #
69
+ # # When {
70
+ # # source.add_entry("a/b/c.txt") do |e|
71
+ # # e.write "ABC"
72
+ # # end
73
+ # # }
74
+ # #
75
+ # # Then { source.read_entry("a/b/c.txt") == "ABC" }
76
+ # #
77
+ # # Then { source.read_entry("a/b/c.t") == nil }
78
+ # # Then { source.read_entry("a/d/f/g/i.txt") == nil }
79
+ # # end
80
+ # #
81
+ # # context "handling non-empty recordings" do
82
+ # # context "#clear" do
83
+ # # Given(:trecs_backend) {
84
+ # # { "a" => { "b" => { "c.txt" => "ABC" } } }
85
+ # # }
86
+ # #
87
+ # # When {
88
+ # # source.create_recording
89
+ # # source.clear
90
+ # # }
91
+ # #
92
+ # # Then { trecs_backend == {} }
93
+ # # end
94
+ # #
95
+ # # end
96
+ # end
97
+ # end
98
+ #
99
+ #
100
+ # # module TRecs
101
+ # # describe TgzSource do
102
+ # # Given(:trecs_backend) { StringIO.new }
103
+ # # Given(:source) { TgzSource.new(trecs_backend: trecs_backend) }
104
+ #
105
+ #
106
+ # # context "creation" do
107
+ # # When { source.create_recording }
108
+ # # Then { !trecs_backend.to_s.empty? }
109
+ # # end
110
+ #
111
+ # # context "manifest" do
112
+ # # When { source.create_recording }
113
+ # # When { source["format"] = "THE FORMAT" }
114
+ #
115
+ # # Then { trecs_backend.read == "" }
116
+ # # Then { source.manifest == { "format" => "THE FORMAT"} }
117
+ # # end
118
+ # # end
119
+ # # end
@@ -3,6 +3,6 @@ require "writers/json_writer"
3
3
 
4
4
  module TRecs
5
5
  describe JsonWriter do
6
- skip("Test JsonWriter")
6
+ skip("JsonWriter")
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trecs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Federico Iachetti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-07 00:00:00.000000000 Z
11
+ date: 2014-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: trollop
@@ -134,6 +134,7 @@ files:
134
134
  - lib/trecs/recording_strategies/tmux_session_strategy.rb
135
135
  - lib/trecs/recording_strategies/ttyrec_strategy.rb
136
136
  - lib/trecs/screens/terminal_screen.rb
137
+ - lib/trecs/sources/in_memory_source.rb
137
138
  - lib/trecs/sources/tgz_source.rb
138
139
  - lib/trecs/tickers/clock_ticker.rb
139
140
  - lib/trecs/tickers/terminal_input_ticker.rb
@@ -162,6 +163,7 @@ files:
162
163
  - spec/trecs/recording_strategies/incremental_strategy_spec.rb
163
164
  - spec/trecs/recording_strategies/raw_file_strategy_spec.rb
164
165
  - spec/trecs/recording_strategies/shell_command_strategy_spec.rb
166
+ - spec/trecs/sources/in_memory_source_spec.rb
165
167
  - spec/trecs/sources/tgz_source_spec.rb
166
168
  - spec/trecs/tickers/clock_ticker_spec.rb
167
169
  - spec/trecs/writers/in_memory_writer_spec.rb
@@ -208,6 +210,7 @@ test_files:
208
210
  - spec/trecs/recording_strategies/incremental_strategy_spec.rb
209
211
  - spec/trecs/recording_strategies/raw_file_strategy_spec.rb
210
212
  - spec/trecs/recording_strategies/shell_command_strategy_spec.rb
213
+ - spec/trecs/sources/in_memory_source_spec.rb
211
214
  - spec/trecs/sources/tgz_source_spec.rb
212
215
  - spec/trecs/tickers/clock_ticker_spec.rb
213
216
  - spec/trecs/writers/in_memory_writer_spec.rb