doing 1.0.66 → 1.0.67

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e02c8453f718dfa428e578ab1b125528aa07ffee1390bbe8222fb425abd63fa
4
- data.tar.gz: 333707321b7e92312ee8a2874292b45df782c83eff2ddcdb5279b648b14730ff
3
+ metadata.gz: 2adffea75d109f047bd36b1ce55c48b83bc61a5d05d2060ece89fc8041faaabd
4
+ data.tar.gz: 546e1c04bf9f0b319905e21a0aadb4ce9afb2eee8c49b7e8bc551d589d4f75d0
5
5
  SHA512:
6
- metadata.gz: 187ce7735035b86ae1233d08dd154f502c7b2def0fc1fd11532de5256647c8cce57bd4ea73ca3fa704c2dfb4a307b94f339222a476e3fd30ba991fea77daa190
7
- data.tar.gz: 29f7123aa51cb8a5754bca68854dbbb606f69533d8cdbd90a7a2187ca1cc29dd09131aed0787f72fd680e2d04fe9e47a92555cf90c1327b74cba23cc8a2fab2b
6
+ metadata.gz: 34db37e7c5974f97bad9516970bccb8d1a3b28bd0eefec7fbbf57628137cd763fc5f5473c85cee05334088f64d8a7f8621d1bd6f41fc694ad4534569e3360313
7
+ data.tar.gz: 510d4f38fbe89ba480aedf9f8845c99f33c7265c1f852be76151f75aed6e10fee49e9912e1b1161f6ebbd5b7b98889663e289136fe9e63828b71544c0b1fcd7c
data/README.md CHANGED
@@ -29,7 +29,7 @@ _Side note:_ I actually use the library behind this utility as part of another s
29
29
 
30
30
  ## Installation
31
31
 
32
- The current version of `doing` is <!--VER-->1.0.65<!--END VER-->.
32
+ The current version of `doing` is <!--VER-->1.0.66<!--END VER-->.
33
33
 
34
34
  $ [sudo] gem install doing
35
35
 
@@ -0,0 +1,120 @@
1
+ ##
2
+ ## @brief Hash helpers
3
+ ##
4
+ class ::Hash
5
+ def has_tags?(tags, bool = :and)
6
+ tags = tags.split(/ *, */) if tags.is_a? String
7
+ bool = bool.normalize_bool if bool.is_a? String
8
+ item = self
9
+ case bool
10
+ when :and
11
+ result = true
12
+ tags.each do |tag|
13
+ unless item['title'] =~ /@#{tag}/
14
+ result = false
15
+ break
16
+ end
17
+ end
18
+ result
19
+ when :not
20
+ result = true
21
+ tags.each do |tag|
22
+ if item['title'] =~ /@#{tag}/
23
+ result = false
24
+ break
25
+ end
26
+ end
27
+ result
28
+ else
29
+ result = false
30
+ tags.each do |tag|
31
+ if item['title'] =~ /@#{tag}/
32
+ result = true
33
+ break
34
+ end
35
+ end
36
+ result
37
+ end
38
+ end
39
+
40
+ def matches_search?(search)
41
+ item = self
42
+ text = item['note'] ? item['title'] + item['note'].join(' ') : item['title']
43
+ pattern = if search.strip =~ %r{^/.*?/$}
44
+ search.sub(%r{/(.*?)/}, '\1')
45
+ else
46
+ search.split('').join('.{0,3}')
47
+ end
48
+ text =~ /#{pattern}/i ? true : false
49
+ end
50
+ end
51
+
52
+ ##
53
+ ## @brief String helpers
54
+ ##
55
+ class ::String
56
+ def cap_first
57
+ sub(/^\w/) do |m|
58
+ m.upcase
59
+ end
60
+ end
61
+
62
+
63
+ ##
64
+ ## @brief Convert a boolean string to a symbol
65
+ ##
66
+ ## @return Symbol :and, :or, or :not
67
+ ##
68
+ def normalize_bool!
69
+ replace normalize_bool
70
+ end
71
+
72
+ def normalize_bool(default = :and)
73
+ case self
74
+ when /(and|all)/i
75
+ :and
76
+ when /(any|or)/i
77
+ :or
78
+ when /(not|none)/i
79
+ :not
80
+ else
81
+ default.is_a?(Symbol) ? default : default.normalize_bool
82
+ end
83
+ end
84
+
85
+
86
+ ##
87
+ ## @brief Turn raw urls into HTML links
88
+ ##
89
+ ## @param opt (Hash) Additional Options
90
+ ##
91
+ def link_urls(opt = {})
92
+ opt[:format] ||= :html
93
+ if opt[:format] == :html
94
+ gsub(%r{(?mi)((http|https)://)?([\w\-_]+(\.[\w\-_]+)+)([\w\-.,@?^=%&amp;:/~+#]*[\w\-@^=%&amp;/~+#])?}) do |_match|
95
+ m = Regexp.last_match
96
+ proto = m[1].nil? ? 'http://' : ''
97
+ %(<a href="#{proto}#{m[0]}" title="Link to #{m[0]}">[#{m[3]}]</a>)
98
+ end.gsub(/<(\w+:.*?)>/) do |match|
99
+ m = Regexp.last_match
100
+ if m[1] =~ /<a href/
101
+ match
102
+ else
103
+ %(<a href="#{m[1]}" title="Link to #{m[1]}">[link]</a>)
104
+ end
105
+ end
106
+ else
107
+ self
108
+ end
109
+ end
110
+ end
111
+
112
+ class ::Symbol
113
+ def normalize_bool!
114
+ replace normalize_bool
115
+ end
116
+
117
+ def normalize_bool
118
+ to_s.normalize_bool
119
+ end
120
+ end
data/lib/doing/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Doing
2
- VERSION = '1.0.66'
2
+ VERSION = '1.0.67'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.66
4
+ version: 1.0.67
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett Terpstra
@@ -165,6 +165,7 @@ files:
165
165
  - README.md
166
166
  - bin/doing
167
167
  - lib/doing.rb
168
+ - lib/doing/helpers.rb
168
169
  - lib/doing/version.rb
169
170
  - lib/doing/wwid.rb
170
171
  - lib/templates/doing.css