sifttter-redux 0.3.1 → 0.3.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 +5 -13
- data/HISTORY.md +8 -2
- data/README.md +3 -3
- data/bin/srd +158 -155
- data/lib/sifttter_redux.rb +105 -0
- data/lib/sifttter_redux/cli_message.rb +126 -0
- data/lib/sifttter_redux/configuration.rb +122 -0
- data/lib/sifttter_redux/date_range_maker.rb +120 -0
- data/lib/sifttter_redux/dbu.rb +138 -0
- data/lib/sifttter_redux/extensions.rb +65 -0
- data/lib/sifttter_redux/os.rb +48 -0
- data/lib/sifttter_redux/sifttter.rb +98 -0
- data/lib/sifttter_redux/version.rb +3 -0
- data/{sifttter-redux.gemspec → sifttter_redux.gemspec} +4 -5
- data/test/catch_up_test.rb +51 -55
- data/test/test_helper.rb +1 -1
- metadata +21 -32
- data/lib/sifttter-redux.rb +0 -6
- data/lib/sifttter-redux/cli-message.rb +0 -135
- data/lib/sifttter-redux/config-manager.rb +0 -136
- data/lib/sifttter-redux/constants.rb +0 -15
- data/lib/sifttter-redux/date-range-maker.rb +0 -208
- data/lib/sifttter-redux/methods.rb +0 -188
- data/lib/sifttter-redux/os.rb +0 -47
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sifttter-redux
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Bach
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.10.2
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: colored
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.2'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.2'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: gli
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,8 +52,8 @@ dependencies:
|
|
66
52
|
- - '='
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: 2.9.0
|
69
|
-
description:
|
70
|
-
|
55
|
+
description: A customized IFTTT-to-Day One service that allows for smart installation
|
56
|
+
and automated running on a standalone *NIX device (such as a Raspberry Pi).
|
71
57
|
email: bachya1208@gmail.com
|
72
58
|
executables:
|
73
59
|
- srd
|
@@ -77,21 +63,23 @@ extra_rdoc_files:
|
|
77
63
|
- HISTORY.md
|
78
64
|
- LICENSE
|
79
65
|
files:
|
80
|
-
- .gitignore
|
66
|
+
- ".gitignore"
|
81
67
|
- Gemfile
|
82
68
|
- HISTORY.md
|
83
69
|
- LICENSE
|
84
70
|
- README.md
|
85
71
|
- Rakefile
|
86
72
|
- bin/srd
|
87
|
-
- lib/
|
88
|
-
- lib/
|
89
|
-
- lib/
|
90
|
-
- lib/
|
91
|
-
- lib/
|
92
|
-
- lib/
|
93
|
-
- lib/
|
94
|
-
- sifttter
|
73
|
+
- lib/sifttter_redux.rb
|
74
|
+
- lib/sifttter_redux/cli_message.rb
|
75
|
+
- lib/sifttter_redux/configuration.rb
|
76
|
+
- lib/sifttter_redux/date_range_maker.rb
|
77
|
+
- lib/sifttter_redux/dbu.rb
|
78
|
+
- lib/sifttter_redux/extensions.rb
|
79
|
+
- lib/sifttter_redux/os.rb
|
80
|
+
- lib/sifttter_redux/sifttter.rb
|
81
|
+
- lib/sifttter_redux/version.rb
|
82
|
+
- sifttter_redux.gemspec
|
95
83
|
- test/catch_up_test.rb
|
96
84
|
- test/test_helper.rb
|
97
85
|
homepage: https://github.com/bachya/sifttter-redux
|
@@ -100,18 +88,18 @@ licenses:
|
|
100
88
|
metadata: {}
|
101
89
|
post_install_message:
|
102
90
|
rdoc_options:
|
103
|
-
- --charset=UTF-8
|
91
|
+
- "--charset=UTF-8"
|
104
92
|
require_paths:
|
105
93
|
- lib
|
106
94
|
- lib
|
107
95
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
96
|
requirements:
|
109
|
-
- -
|
97
|
+
- - ">="
|
110
98
|
- !ruby/object:Gem::Version
|
111
99
|
version: '0'
|
112
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
101
|
requirements:
|
114
|
-
- -
|
102
|
+
- - ">="
|
115
103
|
- !ruby/object:Gem::Version
|
116
104
|
version: '0'
|
117
105
|
requirements: []
|
@@ -123,3 +111,4 @@ summary: Automated IFTTT to Day One engine.
|
|
123
111
|
test_files:
|
124
112
|
- test/catch_up_test.rb
|
125
113
|
- test/test_helper.rb
|
114
|
+
has_rdoc:
|
data/lib/sifttter-redux.rb
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
#| ======================================================
|
2
|
-
#| CliManager Module
|
3
|
-
#| Singleton to manage common CLI interfacing
|
4
|
-
#| ======================================================
|
5
|
-
module CliMessage
|
6
|
-
|
7
|
-
ERROR = 1
|
8
|
-
INFO = 2
|
9
|
-
SECTION = 3
|
10
|
-
WARNING = 4
|
11
|
-
|
12
|
-
#| ------------------------------------------------------
|
13
|
-
#| error method
|
14
|
-
#|
|
15
|
-
#| Outputs a formatted-red error message.
|
16
|
-
#| @param message The message to output
|
17
|
-
#| @return Void
|
18
|
-
#| ------------------------------------------------------
|
19
|
-
def self.error(message, addNewline = true)
|
20
|
-
if addNewline
|
21
|
-
puts "---> ERROR: #{message}".red
|
22
|
-
else
|
23
|
-
print "---> ERROR: #{message}".red
|
24
|
-
end
|
25
|
-
|
26
|
-
@@last_message_type = ERROR
|
27
|
-
end
|
28
|
-
|
29
|
-
#| ------------------------------------------------------
|
30
|
-
#| finish_message method
|
31
|
-
#|
|
32
|
-
#| Finishes a previous message by appending "DONE" in the
|
33
|
-
#| correct color.
|
34
|
-
#| @return Void
|
35
|
-
#| ------------------------------------------------------
|
36
|
-
def self.finish_message(message)
|
37
|
-
case @@last_message_type
|
38
|
-
when ERROR
|
39
|
-
puts message.red
|
40
|
-
when INFO
|
41
|
-
puts message.blue
|
42
|
-
when SECTION
|
43
|
-
puts message.green
|
44
|
-
when WARNING
|
45
|
-
puts message.yellow
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
#| ------------------------------------------------------
|
50
|
-
#| info method
|
51
|
-
#|
|
52
|
-
#| Outputs a formatted-blue informational message.
|
53
|
-
#| @param message The message to output
|
54
|
-
#| @return Void
|
55
|
-
#| ------------------------------------------------------
|
56
|
-
def self.info(message, addNewline = true)
|
57
|
-
if addNewline
|
58
|
-
puts "---> INFO: #{message}".blue
|
59
|
-
else
|
60
|
-
print "---> INFO: #{message}".blue
|
61
|
-
end
|
62
|
-
|
63
|
-
@@last_message_type = INFO
|
64
|
-
end
|
65
|
-
|
66
|
-
#| ------------------------------------------------------
|
67
|
-
#| prompt method
|
68
|
-
#|
|
69
|
-
#| Outputs a prompt, collects the user's response, and
|
70
|
-
#| returns it.
|
71
|
-
#| @param prompt The prompt to output
|
72
|
-
#| @param default The default option
|
73
|
-
#| @return String
|
74
|
-
#| ------------------------------------------------------
|
75
|
-
def self.prompt(prompt, default)
|
76
|
-
print "#{prompt} [default: #{default}]: "
|
77
|
-
choice = $stdin.gets.chomp
|
78
|
-
if choice.empty?
|
79
|
-
return default
|
80
|
-
else
|
81
|
-
return choice
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
#| ------------------------------------------------------
|
86
|
-
#| section method
|
87
|
-
#|
|
88
|
-
#| Outputs a formatted-orange section message.
|
89
|
-
#| @param message The message to output
|
90
|
-
#| @return Void
|
91
|
-
#| ------------------------------------------------------
|
92
|
-
def self.section(message, addNewline = true)
|
93
|
-
if addNewline
|
94
|
-
puts "#### #{message}".green
|
95
|
-
else
|
96
|
-
print "#### #{message}".green
|
97
|
-
end
|
98
|
-
|
99
|
-
@@last_message_type = SECTION
|
100
|
-
end
|
101
|
-
|
102
|
-
#| ------------------------------------------------------
|
103
|
-
#| success method
|
104
|
-
#|
|
105
|
-
#| Outputs a formatted-green success message.
|
106
|
-
#| @param message The message to output
|
107
|
-
#| @return Void
|
108
|
-
#| ------------------------------------------------------
|
109
|
-
def self.success(message, addNewline = true)
|
110
|
-
if addNewline
|
111
|
-
puts "---> SUCCESS: #{message}".green
|
112
|
-
else
|
113
|
-
print "---> SUCCESS: #{message}".green
|
114
|
-
end
|
115
|
-
|
116
|
-
@@last_message_type = WARNING
|
117
|
-
end
|
118
|
-
|
119
|
-
#| ------------------------------------------------------
|
120
|
-
#| warning method
|
121
|
-
#|
|
122
|
-
#| Outputs a formatted-yellow warning message.
|
123
|
-
#| @param message The message to output
|
124
|
-
#| @return Void
|
125
|
-
#| ------------------------------------------------------
|
126
|
-
def self.warning(message, addNewline = true)
|
127
|
-
if addNewline
|
128
|
-
puts "---> WARNING: #{message}".yellow
|
129
|
-
else
|
130
|
-
print "---> WARNING: #{message}".yellow
|
131
|
-
end
|
132
|
-
|
133
|
-
@@last_message_type = WARNING
|
134
|
-
end
|
135
|
-
end
|
@@ -1,136 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
|
-
#| ======================================================
|
4
|
-
#| ConfigManager Class
|
5
|
-
#|
|
6
|
-
#| Singleton to manage the YAML config file
|
7
|
-
#| for this script
|
8
|
-
#| ======================================================
|
9
|
-
|
10
|
-
class ConfigManager
|
11
|
-
include Singleton
|
12
|
-
|
13
|
-
attr_accessor :configFile
|
14
|
-
|
15
|
-
#| ------------------------------------------------------
|
16
|
-
#| initialize method
|
17
|
-
#|
|
18
|
-
#| Initializes this singleton with data from the config
|
19
|
-
#| file. If the file doesn't exist, an empty hash is
|
20
|
-
#| created in anticipation of future config saves.
|
21
|
-
#| @return Void
|
22
|
-
#| ------------------------------------------------------
|
23
|
-
def initialize
|
24
|
-
@configFile = SifttterRedux::SRD_CONFIG_FILEPATH
|
25
|
-
|
26
|
-
if File.exists?(SifttterRedux::SRD_CONFIG_FILEPATH)
|
27
|
-
@data = YAML.load_file(SifttterRedux::SRD_CONFIG_FILEPATH)
|
28
|
-
@data.each do |k, v|
|
29
|
-
define_singleton_method(k) { return v }
|
30
|
-
end
|
31
|
-
else
|
32
|
-
@data = {}
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
#| ------------------------------------------------------
|
37
|
-
#| _dump method
|
38
|
-
#|
|
39
|
-
#| Convenience method that dumps the configuration hash's
|
40
|
-
#| data.
|
41
|
-
#| @return Void
|
42
|
-
#| ------------------------------------------------------
|
43
|
-
def _dump
|
44
|
-
puts @data
|
45
|
-
end
|
46
|
-
|
47
|
-
#| ------------------------------------------------------
|
48
|
-
#| add_to_section method
|
49
|
-
#|
|
50
|
-
#| Adds a hash to the configuration data.
|
51
|
-
#| @param hash The hash to add to configuration
|
52
|
-
#| @param section The section into which the hash goes
|
53
|
-
#| @return Void
|
54
|
-
#| ------------------------------------------------------
|
55
|
-
def add_to_section(hash, section)
|
56
|
-
unless @data.has_key?(section)
|
57
|
-
CliMessage.warning("Attempting to insert into a non-existing section: #{section}; skipping...")
|
58
|
-
return
|
59
|
-
end
|
60
|
-
|
61
|
-
@data[section].merge!(hash)
|
62
|
-
end
|
63
|
-
|
64
|
-
#| ------------------------------------------------------
|
65
|
-
#| create_section method
|
66
|
-
#|
|
67
|
-
#| Creates a new section in the configuration hash.
|
68
|
-
#| @param section The section to create
|
69
|
-
#| @return Void
|
70
|
-
#| ------------------------------------------------------
|
71
|
-
def create_section(section)
|
72
|
-
if @data.has_key?(section)
|
73
|
-
CliMessage.warning("Attempting to create existing section (#{section}); skipping...")
|
74
|
-
return
|
75
|
-
end
|
76
|
-
|
77
|
-
define_singleton_method(section) { return @data[section] }
|
78
|
-
@data.merge!(section => {})
|
79
|
-
end
|
80
|
-
|
81
|
-
#| ------------------------------------------------------
|
82
|
-
#| delete_section method
|
83
|
-
#|
|
84
|
-
#| Deletes a section in the configuration hash.
|
85
|
-
#| @param section The section to delete
|
86
|
-
#| @return Void
|
87
|
-
#| ------------------------------------------------------
|
88
|
-
def delete_section(section)
|
89
|
-
unless @data.has_key?(section)
|
90
|
-
CliMessage.warning("Attempting to delete non-existing section (#{section}); skipping...")
|
91
|
-
return
|
92
|
-
end
|
93
|
-
|
94
|
-
remove_singleton_method(section)
|
95
|
-
@data.delete(section)
|
96
|
-
end
|
97
|
-
|
98
|
-
#| ------------------------------------------------------
|
99
|
-
#| remove_singleton_method method
|
100
|
-
#|
|
101
|
-
#| Removes a hash from the configuration data based on
|
102
|
-
#| its key.
|
103
|
-
#| @param hash The hash key remove
|
104
|
-
#| @param section The section from which the key comes
|
105
|
-
#| @return Void
|
106
|
-
#| ------------------------------------------------------
|
107
|
-
def remove_from_section(key, section)
|
108
|
-
unless @data.has_key?(section) && @data[section].has_key?(key)
|
109
|
-
CliMessage.warning("Attempting to remove a non-existing key: #{section}.#{key}; skipping...")
|
110
|
-
return
|
111
|
-
end
|
112
|
-
|
113
|
-
@data[section].delete(key)
|
114
|
-
end
|
115
|
-
|
116
|
-
#| ------------------------------------------------------
|
117
|
-
#| reset method
|
118
|
-
#|
|
119
|
-
#| Clears out the configuration data by resetting the hash.
|
120
|
-
#| @return Void
|
121
|
-
#| ------------------------------------------------------
|
122
|
-
def reset
|
123
|
-
@data = {}
|
124
|
-
end
|
125
|
-
|
126
|
-
#| ------------------------------------------------------
|
127
|
-
#| save_configuration method
|
128
|
-
#|
|
129
|
-
#| Saves the configuration data to the filesystem.
|
130
|
-
#| @return File
|
131
|
-
#| ------------------------------------------------------
|
132
|
-
def save_configuration
|
133
|
-
return File.open(@configFile, 'w') { |f| f.write(@data.to_yaml) }
|
134
|
-
end
|
135
|
-
|
136
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module SifttterRedux
|
2
|
-
VERSION = "0.3.1"
|
3
|
-
|
4
|
-
# Sifttter and Sifttter Redux Constants
|
5
|
-
SRD_CONFIG_FILEPATH = File.join(ENV['HOME'], '.sifttter_redux')
|
6
|
-
SFT_LOCAL_FILEPATH = "/tmp/sifttter"
|
7
|
-
SFT_REMOTE_FILEPATH = "/Apps/ifttt/sifttter"
|
8
|
-
|
9
|
-
# Dropbox Upload Constants
|
10
|
-
DBU_LOCAL_FILEPATH = "/usr/local/opt"
|
11
|
-
|
12
|
-
# Day One Constants
|
13
|
-
DO_REMOTE_FILEPATH = "/Apps/Day\\ One/Journal.dayone/entries"
|
14
|
-
DO_LOCAL_FILEPATH = "/tmp/dayone"
|
15
|
-
end
|
@@ -1,208 +0,0 @@
|
|
1
|
-
require 'chronic'
|
2
|
-
|
3
|
-
#| ======================================================
|
4
|
-
#| DateRangeMakerError Class
|
5
|
-
#| ======================================================
|
6
|
-
class DateRangeMakerError < StandardError
|
7
|
-
def initialize(msg = "You've triggered a DateRangeMakerError")
|
8
|
-
super
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
#| ======================================================
|
13
|
-
#| BadChronicDateError Class
|
14
|
-
#| ======================================================
|
15
|
-
class BadChronicDateError < DateRangeMakerError
|
16
|
-
def initialize(msg = "Invalid date provided to Chronic...")
|
17
|
-
super
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
#| ======================================================
|
22
|
-
#| BadDateOrderError Class
|
23
|
-
#| ======================================================
|
24
|
-
class BadDateOrderError < DateRangeMakerError
|
25
|
-
def initialize(msg = "The start date must be before or equal to the end date...")
|
26
|
-
super
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
#| ======================================================
|
31
|
-
#| InvalidFlagsError Class
|
32
|
-
#| ======================================================
|
33
|
-
class InvalidFlagsError < DateRangeMakerError
|
34
|
-
def initialize(msg = "You can't specify -t without specifying -f...")
|
35
|
-
super
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
#| ======================================================
|
40
|
-
#| NegativeDaysError Class
|
41
|
-
#| ======================================================
|
42
|
-
class NegativeDaysError < DateRangeMakerError
|
43
|
-
def initialize(msg = "You must specify a positive number of days to look back...")
|
44
|
-
super
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
#| ======================================================
|
49
|
-
#| DateRangeMaker Class
|
50
|
-
#|
|
51
|
-
#| Singleton to manage the YAML config file
|
52
|
-
#| for this script
|
53
|
-
#| ======================================================
|
54
|
-
class DateRangeMaker
|
55
|
-
|
56
|
-
#| ------------------------------------------------------
|
57
|
-
#| initialize method
|
58
|
-
#| @return Void
|
59
|
-
#| ------------------------------------------------------
|
60
|
-
def initialize
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
#| ------------------------------------------------------
|
65
|
-
#| last_n_days method
|
66
|
-
#|
|
67
|
-
#| Returns a date range for the last N days (including
|
68
|
-
#| today's date if specified).
|
69
|
-
#| @param num_days The number of days to look back
|
70
|
-
#| @param options Miscellaneous options hash
|
71
|
-
#| @return Range
|
72
|
-
#| ------------------------------------------------------
|
73
|
-
def last_n_days(num_days, options = {})
|
74
|
-
raise NegativeDaysError if num_days < 0
|
75
|
-
|
76
|
-
opts = {
|
77
|
-
:include_today => false
|
78
|
-
}
|
79
|
-
|
80
|
-
options.each do |k, v|
|
81
|
-
k = k.to_sym
|
82
|
-
raise ArgumentError, "Unknown property: #{k}" unless opts.key?(k)
|
83
|
-
opts[k] = v
|
84
|
-
end
|
85
|
-
|
86
|
-
if (opts[:include_today])
|
87
|
-
_r = (Date.today - num_days..Date.today)
|
88
|
-
else
|
89
|
-
_r = (Date.today - num_days...Date.today)
|
90
|
-
end
|
91
|
-
|
92
|
-
return _r
|
93
|
-
end
|
94
|
-
|
95
|
-
#| ------------------------------------------------------
|
96
|
-
#| last_n_weeks method
|
97
|
-
#|
|
98
|
-
#| Returns a date range for the last N weeks (including
|
99
|
-
#| today's date if specified).
|
100
|
-
#| @param num_days The number of weeks to look back
|
101
|
-
#| @param options Miscellaneous options hash
|
102
|
-
#| @return Range
|
103
|
-
#| ------------------------------------------------------
|
104
|
-
def last_n_weeks(num_weeks = 0, options = {})
|
105
|
-
raise NegativeDaysError if num_weeks < 0
|
106
|
-
|
107
|
-
opts = {
|
108
|
-
:include_today => false
|
109
|
-
}
|
110
|
-
|
111
|
-
options.each do |k, v|
|
112
|
-
k = k.to_sym
|
113
|
-
raise ArgumentError, "Unknown property: #{k}" unless opts.key?(k)
|
114
|
-
opts[k] = v
|
115
|
-
end
|
116
|
-
|
117
|
-
beginning_date = Date.today - Date.today.wday + 1
|
118
|
-
end_date = Date.today - Date.today.wday + 7
|
119
|
-
|
120
|
-
# We're currently before the end of the week, so
|
121
|
-
# reset the new ending date to today.
|
122
|
-
if (end_date > Date.today)
|
123
|
-
end_date = Date.today
|
124
|
-
end
|
125
|
-
|
126
|
-
if (opts[:include_today])
|
127
|
-
_r = (beginning_date - num_weeks * 7..end_date)
|
128
|
-
else
|
129
|
-
_r = (beginning_date - num_weeks * 7...end_date)
|
130
|
-
end
|
131
|
-
|
132
|
-
return _r
|
133
|
-
end
|
134
|
-
|
135
|
-
#| ------------------------------------------------------
|
136
|
-
#| range method
|
137
|
-
#|
|
138
|
-
#| Returns a date range for specified start dates and
|
139
|
-
#| end dates. Note that specifying an end date greater
|
140
|
-
#| than today's date will force today to be the end date.
|
141
|
-
#| @param start_date The start date
|
142
|
-
#| @param end_date The end date
|
143
|
-
#| @param options Miscellaneous options hash
|
144
|
-
#| @return Range
|
145
|
-
#| ------------------------------------------------------
|
146
|
-
def range(start_date, end_date, options = {})
|
147
|
-
opts = {
|
148
|
-
:include_today => false
|
149
|
-
}
|
150
|
-
|
151
|
-
options.each do |k, v|
|
152
|
-
k = k.to_sym
|
153
|
-
raise ArgumentError, "Unknown property: #{k}" unless opts.key?(k)
|
154
|
-
opts[k] = v
|
155
|
-
end
|
156
|
-
|
157
|
-
begin
|
158
|
-
chronic_start_date = Chronic.parse(start_date).to_date
|
159
|
-
rescue
|
160
|
-
raise BadChronicDateError.new("Invalid date provided to Chronic: #{start_date}") if !start_date.nil?
|
161
|
-
nil
|
162
|
-
end
|
163
|
-
|
164
|
-
begin
|
165
|
-
chronic_end_date = Chronic.parse(end_date).to_date
|
166
|
-
rescue
|
167
|
-
raise BadChronicDateError.new("Invalid date provided to Chronic: #{end_date}") if !end_date.nil?
|
168
|
-
nil
|
169
|
-
end
|
170
|
-
|
171
|
-
raise InvalidFlagsError.new if (start_date.nil? && !end_date.nil?)
|
172
|
-
raise BadDateOrderError.new if (chronic_end_date && chronic_start_date > chronic_end_date)
|
173
|
-
|
174
|
-
if (!chronic_start_date.nil?)
|
175
|
-
if (chronic_end_date.nil?)
|
176
|
-
if (opts[:include_today])
|
177
|
-
dates = (chronic_start_date..Date.today)
|
178
|
-
else
|
179
|
-
dates = (chronic_start_date...Date.today)
|
180
|
-
end
|
181
|
-
else
|
182
|
-
dates = (chronic_start_date..chronic_end_date)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
return dates
|
187
|
-
end
|
188
|
-
|
189
|
-
#| ------------------------------------------------------
|
190
|
-
#| today method
|
191
|
-
#|
|
192
|
-
#| Returns a date range for today
|
193
|
-
#| @return Range
|
194
|
-
#| ------------------------------------------------------
|
195
|
-
def today
|
196
|
-
return (Date.today..Date.today)
|
197
|
-
end
|
198
|
-
|
199
|
-
#| ------------------------------------------------------
|
200
|
-
#| yesterday method
|
201
|
-
#|
|
202
|
-
#| Returns a date range for yesterday
|
203
|
-
#| @return Range
|
204
|
-
#| ------------------------------------------------------
|
205
|
-
def yesterday
|
206
|
-
return (Date.today - 1..Date.today - 1)
|
207
|
-
end
|
208
|
-
end
|