diane 0.0.1 → 0.0.2

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
  SHA256:
3
- metadata.gz: 98fcb7ec286e01666ff8367b214104fed956bba09deda226f66910bfe6749ba2
4
- data.tar.gz: 37fd5c4cf665cb094a8536fe8b8703b9228b07fca61265c804cd3f54dfc19c01
3
+ metadata.gz: a498134b66cff3720bf6a9ed4ae8008f614d1c53dd31cf7f817ddf8c9f2c1620
4
+ data.tar.gz: 7cc6fb3d5c528603b62aeaa9f5a3de09f4f375b2a80ed3071b2063b69ced3f38
5
5
  SHA512:
6
- metadata.gz: 58194d040d9fa9ab90bd5806aa86547640956842b59849465b30bda25264981c8aacf10d85a1cab648599f231b40cb5be97f0a93235915231161ac6661932146
7
- data.tar.gz: 69bdc8c0eaef3ef0ec0bb8672f0fe95233735a4a44759187210b9b6899b2242410ef629c56347e988c828d5101065bb403b89ca0a6646aba4e830cae91b84b3a
6
+ metadata.gz: 99f447ec106a71c7223201c7d712d7cb28c596a9bee7b9c9491efab50960715ff3ff708f4305e1f51d176a79920d0d613a0717f6835edf9f91eacc0bbc55535b
7
+ data.tar.gz: 39ccea1b9bd4acf12b039ca9a105f6568912ae7dc3d907f5fecd72df9caac9a02ec34403f45c8771f04d6be50a5b911994b7438aeb5af042b403998a27bcc949
data/.gitignore CHANGED
@@ -7,4 +7,5 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  Gemfile.lock
10
- ./DIANE
10
+ *.gem
11
+ /DIANE
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --require spec_helper
3
+ --format documentation
@@ -0,0 +1,8 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'spec/**'
4
+ Metrics/MethodLength:
5
+ Max: 12
6
+ Metrics/BlockLength:
7
+ Exclude:
8
+ - 'bin/**'
@@ -0,0 +1,19 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0
4
+ - 2.2
5
+ - 2.3
6
+ - 2.4
7
+ - 2.5
8
+ env:
9
+ global:
10
+ - CC_TEST_REPORTER_ID=f771d5ac414479894286db3ea5f2f2ae8f90fb301593b37a5df1ac358d61d2a9
11
+ before_script:
12
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
+ - chmod +x ./cc-test-reporter
14
+ - ./cc-test-reporter before-build
15
+ script:
16
+ - bundle exec rubocop
17
+ - bundle exec rspec
18
+ after_script:
19
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in diane.gemspec
1
+ source 'https://rubygems.org'
4
2
  gemspec
3
+
4
+ gem 'simplecov', require: false
data/README.md CHANGED
@@ -1,12 +1,23 @@
1
1
  # Diane
2
+ [![Gem Version](https://badge.fury.io/rb/diane.svg)](https://badge.fury.io/rb/diane) ![license](https://img.shields.io/github/license/mnyrop/diane.svg) ![GitHub top language](https://img.shields.io/github/languages/top/mnyrop/diane.svg)
2
3
 
3
- > *I have been assigned a secretary. Her name is Diane. She seems an interesting cross between a saint and a cabaret singer.*
4
+ [![Build Status](https://travis-ci.org/mnyrop/diane.svg?branch=master)](https://travis-ci.org/mnyrop/diane) [![Maintainability](https://api.codeclimate.com/v1/badges/0e84a1657af9d2258136/maintainability)](https://codeclimate.com/github/mnyrop/diane/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/0e84a1657af9d2258136/test_coverage)](https://codeclimate.com/github/mnyrop/diane/test_coverage) ![Libraries.io](https://img.shields.io/librariesio/github/mnyrop/diane.svg)
4
5
 
5
- A tiny + salty Ruby CL utility for recording and playing back your thoughts/intel/motivations, without bloating the Git logs.
6
+
7
+
8
+
9
+ ### A Ruby CL documentation utility for recording and playing back your thoughts/intel/motivations, without bloating the Git logs. ☕️
10
+
11
+ <br>
12
+
13
+ > *I have been assigned a secretary. Her name is Diane.*<br>
14
+ > *She seems an interesting cross between a saint and a cabaret singer.*
15
+
16
+ <br>
6
17
 
7
18
  <img src="https://media.giphy.com/media/WubJTtnWXKfmM/giphy.gif" width="400"/>
8
19
 
9
- ![diane screen gif](./docs/diane.gif)
20
+ <br>
10
21
 
11
22
  ## Installation
12
23
 
@@ -24,9 +35,82 @@ Or install it yourself as:
24
35
 
25
36
  $ gem install diane
26
37
 
38
+ <br>
39
+
27
40
  ## Usage
41
+ <br>
42
+
43
+ ![diane screen gif](./diane.gif)
44
+
45
+ <br>
46
+
47
+ Diane has two subcommands: [`record`](#record) and [`playback`](#playback):
48
+
49
+
50
+ ### Record
51
+
52
+
53
+ #### Usage:
54
+ ```sh
55
+ diane record MESSAGE
56
+ ```
57
+
58
+ #### Example:
59
+ ```sh
60
+ diane record "I'm in the middle of adding git-lfs. Remind me to return + test."
61
+ ```
62
+
63
+ #### Options:
64
+
65
+ - `--user USER` : By default, Diane records the message and attributes it to the git user currently logged in. To override this, use the `--user` option:
66
+
67
+ ```sh
68
+ diane record "the owls are not what they seem" --user "the_giant"
69
+ ```
70
+
71
+ ### Playback
72
+
73
+ #### Usage:
74
+ ```sh
75
+ diane playback NUMBER
76
+ ```
77
+
78
+ #### Example:
79
+ ```sh
80
+ diane playback 3
81
+ ```
82
+
83
+ #### Options:
84
+
85
+ - `--all` : By default, Diane plays back 1 recording or the `NUMBER` specified. To override this, use the `--all` option to return every recording that matches the query.
86
+
87
+ ```sh
88
+ diane playback --all
89
+ ```
90
+
91
+ - `--user USER` : By default, Diane plays back the recording(s) attributed to the git user currently logged in. To override this, use the `--user` option:
92
+
93
+ ```sh
94
+ diane playback 3 --user "bob"
95
+ ```
96
+ - `--everyone` : If you want to return a `NUMBER` of recordings irrespective of user, use the `--everyone` option.
97
+
98
+ ```sh
99
+ diane playback --all --everyone
100
+ ```
101
+ - `--inorder` : By default, diane plays back the most recent recordings first. You can override this and reverse them with the option `--inorder`.
102
+
103
+ ```sh
104
+ diane playback 5 --inorder
105
+ ```
106
+ <br>
107
+
108
+ > __Note:__ By default, `diane playback` with no number or options returns the single most recent result by the logged in user.
109
+
110
+ <br>
28
111
 
29
- TODO: Write usage instructions here
112
+ For more, see Diane's [Yardoc](https://www.rubydoc.info/github/mnyrop/diane/master/Diane).
30
113
 
114
+ <hr>
31
115
 
32
116
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "diane"
3
+ require 'bundler/setup'
4
+ require 'diane'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
8
8
 
9
9
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
10
+ # require 'pry'
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/bin/diane CHANGED
@@ -5,29 +5,32 @@ require 'diane'
5
5
 
6
6
  Mercenary.program(:diane) do |p|
7
7
  p.version Diane::VERSION
8
- p.description ''
9
- p.syntax "diane <subcommand> [options]"
8
+ p.description %(CL gem for recording and playing back thoughts/
9
+ intel/ motivations without bloating the Git logs.)
10
+ p.syntax 'diane <subcommand> [options]'
10
11
 
11
12
  p.command(:record) do |c|
12
13
  c.syntax 'record MESSAGE'
13
- c.description ''
14
- c.option 'user', '--user', 'Override'
15
- c.action do |args, opts|
16
- message = args.first
17
- Diane::Recorder.new(message, opts)
18
- end
14
+ c.description 'Record a new message with/to Diane'
15
+ c.option :user, '--user USER', %(Set user manually,
16
+ instead of fetching from git config (default))
17
+ c.action { |args, opts| Diane::Recorder.new(args.first, opts).record }
19
18
  end
20
19
 
21
20
  p.command(:playback) do |c|
22
21
  c.syntax 'playback NUMBER'
23
- c.description ''
24
- c.option 'all', '--all', 'Playback all matching recordings (no int limit)'
25
- c.option 'inorder', '--inorder', 'Playback oldest recordings first'
26
- c.option 'everyone', '--everyone', 'Playback everyone\'s recording, not just your own'
22
+ c.description %(Playback existing recordings by querying Diane)
23
+ c.option :all, '--all', %(Playback all matching recordings,
24
+ instead of 1 (default) or a specified NUMBER)
25
+ c.option :inorder, '--inorder', %(Playback oldest recordings first,
26
+ instead of most recent (default))
27
+ c.option :user, '--user USER', %(Playback a specific user/all
28
+ recordings, instead of your own (default))
29
+ c.option :everyone, '--everyone', %(Playback a recordings regardless
30
+ of user, instead of your own (default))
27
31
  c.action do |args, opts|
28
- num = args.first.to_i.abs
29
- num += 1 if num == 0
30
- Diane::Player.new(num, opts)
32
+ opts['num'] = args.first.to_i.abs
33
+ Diane::Player.new(opts).play
31
34
  end
32
35
  end
33
36
  end
@@ -1,26 +1,28 @@
1
-
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "diane/version"
1
+ $LOAD_PATH.push File.expand_path('lib')
5
2
 
6
3
  Gem::Specification.new do |spec|
7
- spec.name = "diane"
8
- spec.version = Diane::VERSION
9
- spec.authors = ["mnyrop"]
10
- spec.email = ["m.nyrop@columbia.edu"]
4
+ spec.name = 'diane'
5
+ spec.version = '0.0.2'
6
+ spec.authors = ['mnyrop']
7
+ spec.email = ['m.nyrop@columbia.edu']
11
8
 
12
- spec.summary = %q{CL gem for recording and playing back thoughts/intel/motivations without bloating the Git logs.}
13
- spec.description = %q{I have been assigned a secretary. Her name is Diane. She seems an interesting cross between a saint and a cabaret singer.}
14
- spec.homepage = "https://github.com/mnyrop/diane"
15
- spec.license = "MIT"
9
+ spec.summary = %(CL gem for recording and playing back thoughts.)
10
+ spec.description = %(CL gem for recording and playing back thoughts/
11
+ intel/ motivations without bloating the Git logs.)
12
+ spec.homepage = 'https://github.com/mnyrop/diane'
13
+ spec.license = 'MIT'
16
14
 
17
15
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
16
  f.match(%r{^(test|spec|features)/})
19
17
  end
20
- spec.executables = ["diane"]
21
- spec.require_paths = ["lib"]
22
18
 
23
- spec.add_dependency "mercenary", "~> 0.3"
24
- spec.add_dependency "colorize", "~> 0.3"
25
- spec.add_development_dependency "bundler", "~> 1.16"
19
+ spec.executables = ['diane']
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_dependency 'colorize', '~> 0.8'
23
+ spec.add_dependency 'mercenary', '~> 0.3'
24
+ spec.add_development_dependency 'bundler', '~> 1.16'
25
+ spec.add_development_dependency 'faker', '~> 1'
26
+ spec.add_development_dependency 'rspec', '~> 3'
27
+ spec.add_development_dependency 'rubocop', '>= 0.5'
26
28
  end
File without changes
@@ -1,11 +1,9 @@
1
- require 'date'
2
-
3
- require 'diane/version'
4
1
  require 'diane/player'
5
2
  require 'diane/recorder'
6
3
 
4
+ # Umbrella module for Diane player/recorder
7
5
  module Diane
8
- DIFILE = './DIANE'
9
- USER = `git config user.name`.strip
10
- TIME = DateTime.now.strftime("%d/%m/%Y %H:%M")
6
+ DIFILE = "#{`pwd`.strip}/DIANE".freeze # Location of Diane file
7
+ USER = `git config user.name`.strip # Git user initiating the recording
8
+ VERSION = '0.0.2'.freeze # Gem version
11
9
  end
@@ -2,46 +2,65 @@ require 'csv'
2
2
  require 'colorize'
3
3
 
4
4
  module Diane
5
+ # Reconstructs and plays back recordings
5
6
  class Player
6
- def initialize(num, opts)
7
- @num = num
8
- @inorder = opts.fetch('inorder', false)
9
- @everyone = opts.fetch('everyone', false)
10
- @all = opts.fetch('all', false)
11
- @recordings = recordings
7
+ attr_reader :recordings, :user
12
8
 
13
- play
9
+ def initialize(opts)
10
+ @num = opts.fetch(:num, 1)
11
+ @inorder = opts.fetch(:inorder, false)
12
+ @user = opts.fetch(:user, USER)
13
+ @everyone = opts.fetch(:everyone, false)
14
+ @all = opts.fetch(:all, false)
15
+ @recordings = query(all_recordings)
14
16
  end
15
17
 
16
- def recordings
17
- r = CSV.read(DIFILE, { headers: true }).map(&:to_hash)
18
- r.select!{ |d| d['user'] == USER } unless @everyone
19
- limit = @all ? r.length : [@num, r.length].min
20
- r.reverse! unless @inorder
21
- r.take(limit)
18
+ # Returns hash array of all
19
+ # recordings in DIANE file
20
+ def all_recordings
21
+ opts = {
22
+ headers: true,
23
+ header_converters: :symbol,
24
+ encoding: 'utf-8'
25
+ }
26
+ CSV.read(DIFILE, opts).map(&:to_hash)
22
27
  end
23
28
 
29
+ # Generates a subset of recordings
30
+ # using command options (number, user, order)
31
+ def query(recordings)
32
+ @num += 1 if @num.zero?
33
+ recordings.select! { |r| r[:user] == @user } unless @everyone
34
+ limit = @all ? recordings.length : [@num, recordings.length].min
35
+ recordings.reverse! unless @inorder
36
+ recordings.take(limit)
37
+ end
38
+
39
+ # generates shell message describing
40
+ # the recordings returned by query
24
41
  def preface
25
42
  position = @inorder ? 'first' : 'last'
26
- scope = @everyone ? "everyone's" : 'your'
27
- if @recordings.length == 1
28
- preface = "\nHere's the #{position} of #{scope} recordings:"
29
- else
30
- preface = "\nHere's the #{position} #{@recordings.length} of #{scope} recordings:"
31
- end
43
+ scope = @user == USER ? 'your' : "#{@user}'s"
44
+ preface = if @recordings.length == 1
45
+ %(Here's the #{position} of #{scope} recordings:\n)
46
+ else
47
+ %(Here's the #{position} #{@recordings.length}
48
+ of #{scope} recordings:\n)
49
+ end
32
50
  preface.green
33
51
  end
34
52
 
53
+ # returns and puts formatted recordings
54
+ # returned by query
35
55
  def play
36
- if @recordings.empty?
37
- puts "\nFuck off.".magenta
38
- else
39
- puts preface
40
- recordings.each do |r|
41
- puts "\n#{r['time']} : ".cyan + "@#{r['user']}".yellow
42
- puts "#{r['message']}"
43
- end
56
+ abort %(None from #{@user}. Fuck off.).magenta if @recordings.empty?
57
+ stdout = preface
58
+ @recordings.each do |r|
59
+ stdout += "\n#{r[:time]} : ".cyan + "@#{r[:user]}".yellow
60
+ stdout += "\n#{r[:message]}\n\n"
44
61
  end
62
+ puts stdout
63
+ stdout
45
64
  end
46
65
  end
47
66
  end
@@ -1,28 +1,38 @@
1
+ require 'csv'
1
2
 
2
3
  module Diane
4
+ # Records messages and metadata
3
5
  class Recorder
6
+ attr_reader :user
7
+
4
8
  def initialize(message, opts)
5
- @message = escape(message)
6
- record
9
+ abort 'Message is Nil. Fuck off.'.magenta if message.nil?
10
+ @message = message
11
+ @user = slug(opts.fetch(:user, USER))
12
+ @time = Time.now.asctime
7
13
  end
8
14
 
15
+ # generates new recording as csv row
16
+ # to new or existing DIANE file
9
17
  def record
10
18
  if File.exist? DIFILE
11
- File.open(DIFILE, 'a') { |f| f.puts("#{USER},#{@message},#{TIME}") }
19
+ CSV.open(DIFILE, 'a') { |csv| csv << [@user, @message, @time] }
12
20
  else
13
- File.open(DIFILE, 'a') do |f|
14
- f.puts('user,message,time')
15
- f.puts("#{USER},#{@message},#{TIME}")
21
+ CSV.open(DIFILE, 'a') do |csv|
22
+ csv << %w[user message time]
23
+ csv << [@user, @message, @time]
16
24
  end
17
25
  end
18
- puts "".green
19
- rescue => e
20
- abort "Broken".magenta + "#{e}"
26
+ puts ''.green
27
+ rescue StandardError => e
28
+ abort 'Broken'.magenta + e
21
29
  end
22
30
 
23
- def escape(s)
24
- abort "Message is Nil. Fuck off.".magenta if s.nil?
25
- "\"#{s.gsub('"','\\"')}\""
31
+ # normalizes and slugifies
32
+ # recording user handle
33
+ def slug(user)
34
+ abort 'User is nil. Fuck off.'.magenta if user.nil?
35
+ user.downcase.strip.tr(' ', '_').gsub(/[^\w-]/, '')
26
36
  end
27
37
  end
28
38
  end
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diane
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - mnyrop
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-01 00:00:00.000000000 Z
11
+ date: 2018-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: mercenary
14
+ name: colorize
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.3'
19
+ version: '0.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.3'
26
+ version: '0.8'
27
27
  - !ruby/object:Gem::Dependency
28
- name: colorize
28
+ name: mercenary
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
@@ -52,8 +52,51 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.16'
55
- description: I have been assigned a secretary. Her name is Diane. She seems an interesting
56
- cross between a saint and a cabaret singer.
55
+ - !ruby/object:Gem::Dependency
56
+ name: faker
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0.5'
97
+ description: |-
98
+ CL gem for recording and playing back thoughts/
99
+ intel/ motivations without bloating the Git logs.
57
100
  email:
58
101
  - m.nyrop@columbia.edu
59
102
  executables:
@@ -62,7 +105,9 @@ extensions: []
62
105
  extra_rdoc_files: []
63
106
  files:
64
107
  - ".gitignore"
65
- - DIANE
108
+ - ".rspec"
109
+ - ".rubocop.yml"
110
+ - ".travis.yml"
66
111
  - Gemfile
67
112
  - LICENSE.txt
68
113
  - README.md
@@ -70,12 +115,10 @@ files:
70
115
  - bin/diane
71
116
  - bin/setup
72
117
  - diane.gemspec
73
- - docs/DIANE
74
- - docs/diane.gif
118
+ - diane.gif
75
119
  - lib/diane.rb
76
120
  - lib/diane/player.rb
77
121
  - lib/diane/recorder.rb
78
- - lib/diane/version.rb
79
122
  homepage: https://github.com/mnyrop/diane
80
123
  licenses:
81
124
  - MIT
@@ -99,6 +142,5 @@ rubyforge_project:
99
142
  rubygems_version: 2.7.6
100
143
  signing_key:
101
144
  specification_version: 4
102
- summary: CL gem for recording and playing back thoughts/intel/motivations without
103
- bloating the Git logs.
145
+ summary: CL gem for recording and playing back thoughts.
104
146
  test_files: []
data/DIANE DELETED
@@ -1,3 +0,0 @@
1
- user,message,time
2
- mnyrop,"test",01/06/2018 17:12
3
- mnyrop,"test",01/06/2018 17:30
data/docs/DIANE DELETED
@@ -1,11 +0,0 @@
1
- user,message,time
2
- cooper,"entering the town of twin peaks, five miles south of the canadian border, twelve miles west of the state line",01/06/2018 15:02
3
- cooper,"i've never seen so many trees in my life",01/06/2018 15:02
4
- cooper,"i almost forgot, i've got to find out what kind of trees these are. they're really something.",01/06/2018 15:03
5
- cooper,"the owls are not what they seem",01/06/2018 15:03
6
- cooper,"I have no idea where this will lead us. But I have a definite feeling it will be a place both wonderful and strange.",01/06/2018 16:46
7
- cooper,"MAY A SMILE BE YOUR UMBRELLA. WE'VE ALL HAD OUR SOCKS TOSSED AROUND.",01/06/2018 16:46
8
- cooper,"Pie. Whoever invented the pie? Here was a great person.",01/06/2018 16:48
9
- cooper,"I believe I was visited by a giant last night. Twice.",01/06/2018 16:53
10
- mnyrop,"when you see me again, it won't be me",01/06/2018 16:58
11
- mnyrop,"one day my log will have something to say about this",01/06/2018 17:04
@@ -1,3 +0,0 @@
1
- module Diane
2
- VERSION = "0.0.1"
3
- end