qv 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/qv/note.rb +22 -4
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 244e59e3abf0f3d4384749005daec069c07848e2
4
- data.tar.gz: c5db05292e9ae4e89a4dcafa84dc8e7e1e23be2a
3
+ metadata.gz: d8b7ef1822fa4534a4a959381571012a9b3a8def
4
+ data.tar.gz: 47eaba336bba6cee1e4e71d2f260e980b36fb774
5
5
  SHA512:
6
- metadata.gz: fe378573774a8617ce2ef2fb0f6e31c27d75f43b9a1c8f1b8a075c0e594d9d70d655585b074de4147b3c3c27a0626daf1a1f39255fbb331e938d8aa14c807e29
7
- data.tar.gz: 9ec4d6fff653a578ea0ed8cc9bc223d030db48f6cba7eebb8df660a7983728bc2f8d389205d164d75935175dead53c5dcbda09c4f427884d1258bea4e2c1c156
6
+ metadata.gz: 8533eb5841e1a6a54f922ee9607e3cb77cbe6c1a2ac142a7fd41c1ae16ae6bbc4d970bdb305475ee86be0196a863acd21bf68a93aa7a42c0526c8ca3ab7af98c
7
+ data.tar.gz: 9f219395a3b12c19ac914910f72e256680dd7851692342ad2d617f69628b690701f4642370b93a8b37b7d024804016249371ffd1b1e96b17b4eb27d9115350bf
@@ -3,11 +3,17 @@ require 'qv/qvconfig'
3
3
  class Note
4
4
  attr_reader :filename
5
5
 
6
- def initialize(args)
7
- @filename = args[:file]
6
+ def initialize(args = {})
7
+ @filename = validate(args[:file])
8
8
  @title = title
9
9
  @path = path
10
10
  end
11
+
12
+ def validate(filename)
13
+ raise ArgumentError, "Note requires a :file argument" unless filename
14
+ raise ArgumentError, "#{filename} contains an invalid character" unless filename.valid_encoding?
15
+ filename
16
+ end
11
17
 
12
18
  def title
13
19
  @title || File.basename(@filename, File.extname(@filename))
@@ -21,12 +27,24 @@ class Note
21
27
  File.open(@path)
22
28
  end
23
29
 
30
+ def body
31
+ get_io.read.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
32
+ end
33
+
24
34
  def matches?(search_term)
25
- get_io.read.match(/^.*#{search_term}.*$/i)
35
+ begin
36
+ body.match(/^.*#{search_term}.*$/i)
37
+ rescue ArgumentError => e
38
+ raise ArgumentError, "#{filename}: #{e}"
39
+ end
26
40
  end
27
41
 
28
42
  def title_matches?(search_term)
29
- @title.match(/^.*#{search_term}.*$/i)
43
+ begin
44
+ title.match(/^.*#{search_term}.*$/i)
45
+ rescue ArgumentError => e
46
+ puts "ERR: Filename of #{@filename}\n#{e}"
47
+ end
30
48
  end
31
49
 
32
50
  def edit
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Gwilliam