toilet_tracker 0.2.1 โ 0.2.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 +4 -4
- data/CHANGELOG.md +15 -0
- data/PARSING_SPEC.md +14 -5
- data/README.md +58 -205
- data/lib/toilet_tracker/configuration.rb +3 -1
- data/lib/toilet_tracker/parsers/whatsapp_parser.rb +11 -4
- data/lib/toilet_tracker/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4af948bef38e4c8911b60d3bdc887c38b11593d687841f950f0472c7b5748a51
|
|
4
|
+
data.tar.gz: 8ea58aabc73391c82395c7aaa91af3b369f6ad2c2d1d7ad0f513d02ef9976d7f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c11a69adeb79215f621857aa03782fd98518f7e36d2afa2e491f96e1b6f0d1ed94df24b3701a9282e680c01a7054450de894e9eecabf992b716c8c52949b0fd8
|
|
7
|
+
data.tar.gz: f0b54ca705f8b548225bcac1ac9d47803b27704a316b9b3a57414d9f5a9aa204eb7c231c88fcba1c87e10b0b801be70759467315b2f75cfca632778f91f5b6d8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [0.2.2] - 2026-09-03
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- Parse WhatsApp exports that use 4-digit years (`[02/01/2025, 23:27:21]`). The
|
|
7
|
+
message pattern required a 2-digit year, so current exports failed to parse
|
|
8
|
+
entirely: the only lines that matched were old-format timestamps quoted inside
|
|
9
|
+
message bodies, which produced a handful of events attributed to the quoted
|
|
10
|
+
sender. A 21,906-line export went from 3 parsed events to 13,996.
|
|
11
|
+
- Stop prefixing the century onto years that already have one (`2025` no longer
|
|
12
|
+
becomes `202025`).
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- Accept day and month without zero padding (`[2/1/2025, ...]`)
|
|
16
|
+
- Accept timestamps without seconds (`[02/01/2025, 23:27]`), defaulting to `:00`
|
|
17
|
+
|
|
3
18
|
## [0.2.1] - 2025-12-18
|
|
4
19
|
|
|
5
20
|
### Changed
|
data/PARSING_SPEC.md
CHANGED
|
@@ -9,8 +9,10 @@ ToiletTracker is a Ruby gem that parses WhatsApp message exports to track toilet
|
|
|
9
9
|
### Message Structure
|
|
10
10
|
All WhatsApp messages follow this format:
|
|
11
11
|
```
|
|
12
|
-
[DD/MM/
|
|
12
|
+
[DD/MM/YYYY, HH:MM:SS] Sender: Content
|
|
13
13
|
```
|
|
14
|
+
Exports vary by platform and locale. The year may be 2 or 4 digits, the day and
|
|
15
|
+
month may be zero-padded or not, and the seconds may be absent.
|
|
14
16
|
|
|
15
17
|
### Command Types
|
|
16
18
|
- **๐ฝ (Settings)**: Configure timezone shifts and preferences
|
|
@@ -41,17 +43,24 @@ Both ๐ฉ and ๐ฝ commands support optional metadata emojis placed between the
|
|
|
41
43
|
## Supported Parsing Patterns
|
|
42
44
|
|
|
43
45
|
### WhatsApp Message Format
|
|
44
|
-
**Pattern**: `\[(?<day>\d{2})/(?<month>\d{2})/(?<year>\d{2}),\s*(?<time>\d{2}:\d{2}
|
|
46
|
+
**Pattern**: `\[(?<day>\d{1,2})/(?<month>\d{1,2})/(?<year>\d{4}|\d{2}),\s*(?<time>\d{1,2}:\d{2}(?::\d{2})?)\]\s*(?<sender>[^:]+):\s*(?<content>.+?)(?:\s*โ<This message was edited>)?$`
|
|
45
47
|
|
|
46
48
|
**Examples**:
|
|
49
|
+
- `[01/01/2025, 12:00:00] Alice: ๐ฉ`
|
|
47
50
|
- `[01/01/25, 12:00:00] Alice: ๐ฉ`
|
|
48
51
|
- `[25/12/24, 23:59:59] Bob: ๐ฝ +2`
|
|
49
|
-
- `[15/06/
|
|
52
|
+
- `[15/06/2025, 14:30:15] Charlie: ๐ฉ +1 2025-06-15 12:00:00`
|
|
53
|
+
- `[2/1/2025, 9:05] Dave: ๐ฉ`
|
|
50
54
|
|
|
51
55
|
**Behavior**:
|
|
52
|
-
- Extracts day, month, year (2-digit), time, sender, content
|
|
56
|
+
- Extracts day, month, year (2- or 4-digit), time, sender, content
|
|
53
57
|
- Handles edited messages with suffix `โ<This message was edited>`
|
|
54
|
-
-
|
|
58
|
+
- A 2-digit year is converted to 20XX format (25 โ 2025); a 4-digit year is used as-is
|
|
59
|
+
- Seconds are optional and default to 0 when absent
|
|
60
|
+
- Day and month may be given with or without zero padding
|
|
61
|
+
|
|
62
|
+
**Not supported**: 12-hour timestamps with an AM/PM suffix, and the Android
|
|
63
|
+
export layout (`DD/MM/YYYY, HH:MM - Sender: Content`).
|
|
55
64
|
|
|
56
65
|
### 1. Shift Set (Functional)
|
|
57
66
|
**Pattern**: `๐ฝ\s*([+-]?\d+)$`
|
data/README.md
CHANGED
|
@@ -1,253 +1,106 @@
|
|
|
1
1
|
# ToiletTracker
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/BrownOps/toilet_tracker/actions/workflows/main.yml)
|
|
4
|
+
[](https://rubygems.org/gems/toilet_tracker)
|
|
5
|
+
[](LICENSE.txt)
|
|
6
|
+
[](https://www.ruby-lang.org)
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- ๐ฝ **Settings**: Set timezone shifts and preferences
|
|
8
|
-
- ๐ฉ **Event Tracking**: Log events with automatic timezone adjustments
|
|
9
|
-
- โฐ **Timezone Support**: Handle multiple timezones and retroactive shifts
|
|
10
|
-
- ๐ **Multiple Output Formats**: JSON, CSV, and formatted tables
|
|
11
|
-
- ๐ง **Thor CLI**: Interactive command-line interface with TTY::Prompt
|
|
12
|
-
- ๐งช **Comprehensive Testing**: 77 tests with 96%+ coverage
|
|
13
|
-
- ๐๏ธ **Clean Architecture**: Modular design with clear separation of concerns
|
|
14
|
-
- ๐ **Statistics**: Detailed parsing statistics and error reporting
|
|
15
|
-
|
|
16
|
-
## Requirements
|
|
8
|
+
Track bowel movements through WhatsApp messages using simple emoji commands. Export your WhatsApp chat, run it through ToiletTracker, and get structured data with timezone support.
|
|
17
9
|
|
|
18
|
-
|
|
19
|
-
- **RuboCop Omakase** - Opinionated Ruby styling from the Rails team
|
|
10
|
+
## Features
|
|
20
11
|
|
|
21
|
-
|
|
12
|
+
- **No app needed** - Use WhatsApp, which you already have
|
|
13
|
+
- **Travel-friendly** - Full timezone support for globetrotters
|
|
14
|
+
- **Flexible input** - Log now, log past events, add metadata
|
|
15
|
+
- **Multiple exports** - JSON, CSV, or formatted tables
|
|
16
|
+
- **Privacy first** - Your data stays on your device
|
|
22
17
|
|
|
23
|
-
|
|
18
|
+
## Why?
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
gem 'toilet_tracker'
|
|
27
|
-
```
|
|
20
|
+
Tracking health data shouldn't require a dedicated app. WhatsApp is already on your phone, always synced, and easy to use. Just send a ๐ฉ to a chat (or yourself) whenever nature calls, and this gem turns those messages into analyzable data.
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
bundle install
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Or install it yourself as:
|
|
22
|
+
## Quick Start
|
|
36
23
|
|
|
37
24
|
```bash
|
|
38
25
|
gem install toilet_tracker
|
|
39
26
|
```
|
|
40
27
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
### Command Line Interface
|
|
44
|
-
|
|
45
|
-
Process WhatsApp export files:
|
|
28
|
+
Export your WhatsApp chat and run:
|
|
46
29
|
|
|
47
30
|
```bash
|
|
48
|
-
# Basic usage
|
|
49
|
-
toilet_tracker parse whatsapp_export.txt
|
|
50
|
-
|
|
51
|
-
# Parse WhatsApp zip exports (automatically extracts _chat.txt)
|
|
52
31
|
toilet_tracker parse whatsapp_export.zip
|
|
53
|
-
|
|
54
|
-
# JSON output
|
|
55
|
-
toilet_tracker parse --format json messages.txt
|
|
56
|
-
|
|
57
|
-
# Custom timezone
|
|
58
|
-
toilet_tracker parse --timezone "Europe/Rome" messages.txt
|
|
59
|
-
|
|
60
|
-
# Show statistics
|
|
61
|
-
toilet_tracker stats messages.txt
|
|
62
|
-
|
|
63
|
-
# Interactive mode
|
|
64
|
-
toilet_tracker interactive
|
|
65
|
-
|
|
66
|
-
# Show version
|
|
67
|
-
toilet_tracker version
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Ruby API
|
|
71
|
-
|
|
72
|
-
```ruby
|
|
73
|
-
require 'toilet_tracker'
|
|
74
|
-
|
|
75
|
-
# Parse individual lines
|
|
76
|
-
result = ToiletTracker.parse_line("[01/01/25, 12:00:00] Alice: ๐ฉ")
|
|
77
|
-
puts result.type # => :event_now
|
|
78
|
-
|
|
79
|
-
# Parse multiple lines
|
|
80
|
-
lines = [
|
|
81
|
-
"[01/01/25, 10:00:00] Alice: ๐ฝ +2",
|
|
82
|
-
"[01/01/25, 12:00:00] Alice: ๐ฉ"
|
|
83
|
-
]
|
|
84
|
-
results = ToiletTracker.parse_lines(lines)
|
|
85
|
-
|
|
86
|
-
# Configure settings
|
|
87
|
-
ToiletTracker.configure do |config|
|
|
88
|
-
config.default_timezone = "Europe/Rome"
|
|
89
|
-
config.max_shift_hours = 12
|
|
90
|
-
end
|
|
91
32
|
```
|
|
92
33
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
#### ๐ฝ Settings (Functional - Affect Timestamps)
|
|
96
|
-
- `๐ฝ +2` - Set timezone shift to +2 hours (immediate)
|
|
97
|
-
- `๐ฝ -1` - Set timezone shift to -1 hour (immediate)
|
|
98
|
-
- `๐ฝ +1 2025-01-15 14:30` - Set shift effective from specific time (retroactive)
|
|
99
|
-
- `๐ฝ Europe/Rome` - Set timezone by name
|
|
100
|
-
- `๐ฝ PST` - Set timezone by abbreviation
|
|
101
|
-
|
|
102
|
-
#### ๐ฉ Events
|
|
103
|
-
|
|
104
|
-
**Functional Shifts (Affect Actual Times):**
|
|
105
|
-
- `๐ฉ` - Log live event with current active shift
|
|
106
|
-
- `๐ฉ +1` - Log live event with +1 hour shift override
|
|
107
|
-
- `๐ฉ PST` - Log live event converted to PST timezone
|
|
108
|
-
|
|
109
|
-
**Fixed Times (No Shift Applied):**
|
|
110
|
-
- `๐ฉ 2025-01-15 14:30` - Log event at exact time specified
|
|
34
|
+
## How It Works
|
|
111
35
|
|
|
112
|
-
|
|
113
|
-
- `๐ฉ +2 2025-01-15 14:30` - Log event at 14:30 exactly, +2 shift stored for display
|
|
114
|
-
- `๐ฉ EST 2025-01-15 14:30` - Log event at 14:30 exactly, EST timezone stored for display
|
|
36
|
+
Send emoji commands in any WhatsApp chat:
|
|
115
37
|
|
|
116
|
-
|
|
38
|
+
| Command | What it does |
|
|
39
|
+
|---------|--------------|
|
|
40
|
+
| `๐ฉ` | Log an event right now |
|
|
41
|
+
| `๐ฉ 14:30` | Log an event at a specific time |
|
|
42
|
+
| `๐ฝ +2` | Set your timezone offset to +2 hours |
|
|
43
|
+
| `๐ฝ Europe/Rome` | Set timezone by name |
|
|
117
44
|
|
|
118
|
-
|
|
45
|
+
See the full [message specification](https://github.com/BrownOps/spec) for all supported formats.
|
|
119
46
|
|
|
120
|
-
|
|
121
|
-
ToiletTracker.configure do |config|
|
|
122
|
-
# Default timezone for parsing timestamps
|
|
123
|
-
config.default_timezone = "UTC"
|
|
124
|
-
|
|
125
|
-
# Maximum allowed shift hours
|
|
126
|
-
config.max_shift_hours = 12
|
|
127
|
-
|
|
128
|
-
# Custom message patterns (advanced)
|
|
129
|
-
config.message_patterns[:custom] = /custom_pattern/
|
|
130
|
-
|
|
131
|
-
# Supported date formats
|
|
132
|
-
config.date_formats = ["%Y-%m-%d %H:%M:%S", "%Y/%m/%d %H:%M"]
|
|
133
|
-
end
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## Examples
|
|
47
|
+
### Timezone Support
|
|
137
48
|
|
|
138
|
-
|
|
49
|
+
Traveling? Just update your timezone:
|
|
139
50
|
|
|
140
|
-
#### Setting Up Timezone Shifts
|
|
141
51
|
```
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
#
|
|
52
|
+
๐ฝ +5:30 # Flying to India
|
|
53
|
+
๐ฉ # Logged with +5:30 offset
|
|
54
|
+
๐ฝ Europe/Rome # Back home
|
|
55
|
+
๐ฉ # Logged with Rome timezone
|
|
145
56
|
```
|
|
146
57
|
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
[15/01/25, 10:00:00] Alice: ๐ฉ
|
|
150
|
-
[15/01/25, 14:00:00] Alice: ๐ฝ +3 2025-01-15 09:00:00
|
|
151
|
-
# Result: First event adjusted to 13:00 (10:00 + 3 hours)
|
|
152
|
-
```
|
|
58
|
+
### Metadata
|
|
153
59
|
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
# Functional: Affects timestamp
|
|
157
|
-
[15/01/25, 12:00:00] Alice: ๐ฉ +2
|
|
158
|
-
# Result: Event at 14:00 (12:00 + 2 hours)
|
|
159
|
-
|
|
160
|
-
# Decorative: Only for statistics
|
|
161
|
-
[15/01/25, 12:00:00] Alice: ๐ฉ +2 2025-01-15 10:00:00
|
|
162
|
-
# Result: Event at exactly 10:00, +2 stored for display
|
|
163
|
-
```
|
|
60
|
+
Add extra context with additional emojis:
|
|
164
61
|
|
|
165
|
-
#### Complex Multi-User Scenario
|
|
166
62
|
```
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
[15/01/25, 10:30:00] Bob: ๐ฉ
|
|
171
|
-
[15/01/25, 11:00:00] Alice: ๐ฉ +1
|
|
172
|
-
[15/01/25, 11:30:00] Bob: ๐ฉ EST 2025-01-15 08:00:00
|
|
63
|
+
๐ฉ ๐ฉธ # Flag something unusual
|
|
64
|
+
๐ฉ ๐งฑ # Note the consistency
|
|
65
|
+
๐ฉ โ ๐ # Track what you ate
|
|
173
66
|
```
|
|
174
67
|
|
|
175
|
-
|
|
176
|
-
- Alice's first event: 12:00 (10:00 + 2 hours active shift)
|
|
177
|
-
- Bob's first event: ~11:30 (10:30 converted from UTC to Rome time)
|
|
178
|
-
- Alice's override event: 12:00 (11:00 + 1 hour override)
|
|
179
|
-
- Bob's decorative event: exactly 08:00 (EST is decorative only)
|
|
180
|
-
|
|
181
|
-
## Development
|
|
182
|
-
|
|
183
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run the following commands:
|
|
68
|
+
## Output Formats
|
|
184
69
|
|
|
185
70
|
```bash
|
|
186
|
-
#
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
# Check code style (RuboCop)
|
|
190
|
-
bundle exec rubocop
|
|
71
|
+
# Table (default)
|
|
72
|
+
toilet_tracker parse chat.zip
|
|
191
73
|
|
|
192
|
-
#
|
|
193
|
-
|
|
74
|
+
# JSON for further processing
|
|
75
|
+
toilet_tracker parse --format json chat.zip
|
|
194
76
|
|
|
195
|
-
#
|
|
196
|
-
|
|
77
|
+
# CSV for spreadsheets
|
|
78
|
+
toilet_tracker parse --format csv chat.zip
|
|
197
79
|
```
|
|
198
80
|
|
|
199
|
-
|
|
81
|
+
## Ruby API
|
|
200
82
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
Key principles:
|
|
204
|
-
- **Ruby 3.4+ features** - Modern syntax and performance optimizations
|
|
205
|
-
- **KISS principle** - Keep code simple and readable
|
|
206
|
-
- **Test-driven development** - Comprehensive RSpec test suite
|
|
207
|
-
- **Clean architecture** - Clear separation of concerns
|
|
208
|
-
|
|
209
|
-
### Creating a Release
|
|
210
|
-
|
|
211
|
-
To release a new version:
|
|
212
|
-
|
|
213
|
-
1. **Update the version** in `lib/toilet_tracker/version.rb`:
|
|
214
|
-
```ruby
|
|
215
|
-
module ToiletTracker
|
|
216
|
-
VERSION = "1.2.3"
|
|
217
|
-
end
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
2. **Update CHANGELOG.md** with release notes (optional but recommended)
|
|
83
|
+
```ruby
|
|
84
|
+
require 'toilet_tracker'
|
|
221
85
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
git add -A
|
|
225
|
-
git commit -m "Bump version to 1.2.3"
|
|
226
|
-
```
|
|
86
|
+
# Parse a WhatsApp export
|
|
87
|
+
results = ToiletTracker.parse_file("chat.txt")
|
|
227
88
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
git push origin main --tags
|
|
232
|
-
```
|
|
89
|
+
# Or parse individual messages
|
|
90
|
+
result = ToiletTracker.parse_line("[01/01/2025, 12:00:00] Me: ๐ฉ")
|
|
91
|
+
```
|
|
233
92
|
|
|
234
|
-
|
|
235
|
-
- Run tests and linting to validate the release
|
|
236
|
-
- Build the gem
|
|
237
|
-
- Publish to RubyGems.org (requires `RUBYGEMS_API_KEY` secret)
|
|
238
|
-
- Create a GitHub release with auto-generated changelog
|
|
239
|
-
- Upload the gem file as a release asset
|
|
93
|
+
## Requirements
|
|
240
94
|
|
|
241
|
-
|
|
95
|
+
- Ruby 3.4+
|
|
242
96
|
|
|
243
|
-
##
|
|
97
|
+
## Development
|
|
244
98
|
|
|
245
|
-
|
|
99
|
+
```bash
|
|
100
|
+
bin/setup # Install dependencies
|
|
101
|
+
bundle exec rspec # Run tests
|
|
102
|
+
```
|
|
246
103
|
|
|
247
104
|
## License
|
|
248
105
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
## Code of Conduct
|
|
252
|
-
|
|
253
|
-
Everyone interacting in the ToiletTracker project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/toilet_tracker/blob/main/CODE_OF_CONDUCT.md).
|
|
106
|
+
MIT - see [LICENSE.txt](LICENSE.txt)
|
|
@@ -61,7 +61,9 @@ module ToiletTracker
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def whatsapp_message_pattern
|
|
64
|
-
|
|
64
|
+
# WhatsApp exports vary by platform and locale: years are either 2 or 4
|
|
65
|
+
# digits, day and month may be zero-padded or not, and seconds may be absent.
|
|
66
|
+
@whatsapp_message_pattern ||= %r{\[(?<day>\d{1,2})/(?<month>\d{1,2})/(?<year>\d{4}|\d{2}),\s*(?<time>\d{1,2}:\d{2}(?::\d{2})?)\]\s*(?<sender>[^:]+):\s*(?<content>.+?)(?:\s*โ<This message was edited>)?$}
|
|
65
67
|
end
|
|
66
68
|
|
|
67
69
|
def edited_message_suffix
|
|
@@ -41,16 +41,23 @@ module ToiletTracker
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def parse_whatsapp_timestamp(day, month, year, time)
|
|
44
|
-
|
|
45
|
-
full_year = "20#{year}"
|
|
46
|
-
datetime_string = "#{day}/#{month}/#{full_year} #{time}"
|
|
44
|
+
datetime_string = "#{day}/#{month}/#{expand_year(year)} #{time}"
|
|
47
45
|
|
|
48
46
|
# Parse in the default timezone
|
|
49
|
-
config.default_timezone_object.strptime(datetime_string,
|
|
47
|
+
config.default_timezone_object.strptime(datetime_string, timestamp_format(time))
|
|
50
48
|
rescue ArgumentError => e
|
|
51
49
|
raise Core::InvalidDateTime, "#{day}/#{month}/#{year} #{time}: #{e.message}"
|
|
52
50
|
end
|
|
53
51
|
|
|
52
|
+
# Convert YY to full year (assuming 2000s), leave YYYY untouched
|
|
53
|
+
def expand_year(year)
|
|
54
|
+
year.length == 2 ? "20#{year}" : year
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def timestamp_format(time)
|
|
58
|
+
time.count(":") > 1 ? "%d/%m/%Y %H:%M:%S" : "%d/%m/%Y %H:%M"
|
|
59
|
+
end
|
|
60
|
+
|
|
54
61
|
def clean_content(content)
|
|
55
62
|
return "" if content.nil?
|
|
56
63
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: toilet_tracker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- NetherSoul
|
|
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
165
|
version: '0'
|
|
166
166
|
requirements: []
|
|
167
|
-
rubygems_version:
|
|
167
|
+
rubygems_version: 4.0.3
|
|
168
168
|
specification_version: 4
|
|
169
169
|
summary: Parse WhatsApp messages for toilet tracking with emoji-based commands
|
|
170
170
|
test_files: []
|