alfredo 0.0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODViMmFhNjU4ZmRjMGI5OGMxZDM0Yzc5NWJiOWUyMzZhMGY1NzRjNQ==
4
+ ODdiNzA4YzAzYTgyZTRiNGJiZGQ1NjQ5ZWY0MWIwNmY4ZTU1NWZkMQ==
5
5
  data.tar.gz: !binary |-
6
- NzY3MTk2YzU4YTI4MTc5MjNlYzM5NjY2ZjFlYWE0NWJmNjJjYjcwNg==
6
+ YjBhNGFmODViYTFmZmUzY2MyMmE2YTA3NmRhNWUwN2QyMzE5NThkMg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MjhiOTE0OGNhZWY2YTIwMWUwNmZmNWMxMTc1ZjUzODdjZDY5YmRmZTU4ZDNl
10
- ZjBmYzg0YWExOWJmMGM0NjJmYzIzYmMyN2MzMWE0N2Q2ZWM2Zjk1ZWMxNTVi
11
- ZWQ1NTQxNWM0NjllYjk0N2I5ZmMzOGNhM2QzZDRhYTIxMjg2YTQ=
9
+ Yjc5YjZjNGY3MDQ1ODc2ZjZjMTc2Yzc0NDhhMWRjNzBlMTY5NzcyODMxYmNj
10
+ Y2UzY2E0OWYzNGFhNjdiOWY3MDQ2MTVkZDBmYjRjZjEzNDBhY2MxYTQwNzQ1
11
+ YTMyMmI2NjM0MjljYzMyOTQ5NGM3YzJlOTc1ZTljMTZmOTliYTY=
12
12
  data.tar.gz: !binary |-
13
- ODY1NjU3Nzg1YTU0MjdhMzI2MjI3NjVmZTFlNjYxMDc3ZTk5MWZmMmY4ZTVj
14
- Y2ZiZGNhMzk0YjViNjc5MzU0NjY3YjE2YTg5NzQ3OTFiYTMxMGVmZTM0Y2E5
15
- YjlmMGRkMDgwMTM0ZGE2NjgxOGEwMDA0MGNhZDBhZDM4MTU3MDU=
13
+ ODA1ZTk2ODZiYjAxOWNiZWNkMTdhNjEyNTAwNjQ2NDlmM2ZhOGI1NjI0ODFj
14
+ ZjBkYzdlMjRjYzVkZWNjMDk2MjE4MmI2ZmVlNmIyOWE0NzNiZTcxM2EwOTFk
15
+ ODViZjZiOWU2NzNlMTMyYzA2N2YxOWEzZjU4ZWIwMzVlNDVmOGI=
data/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # Alfredo
2
2
 
3
3
  Alfredo is wrapper for Alfred 2's new Workflow system. It generates a
4
- XML response based on the work of
5
- [alfred2-top-workflow](https://github.com/zhaocai/alfred2-top-workflow/tree/master/top).
6
- I'm pretty sure Alfredo is not feature complete, so pull requests that
7
- fix or add features will be appreciated.
4
+ XML response based on the information in the [Alfred
5
+ Forums](http://www.alfredforum.com/topic/5-generating-feedback-in-workflows/).
8
6
 
9
7
  ## Installation
10
8
 
@@ -29,13 +27,18 @@ workflow.output!
29
27
 
30
28
  Parameters available for `Alfredo::Item.new` are:
31
29
 
32
- * ``title``
33
- * `subtitle`
30
+ * `title` (shown in large text in the results)
31
+ * `subtitle` (shown under the title in smaller text)
34
32
  * `arg` (argument that can be passed on to next steps in the workflow)
35
- * `uid`
36
- * `icon_path` (path of icon, relative to workflow directory)
33
+ * `uid` (value that Alfred uses to learn about your usage)
34
+ * `icon_path` (path of icon or file, relative to workflow directory)
37
35
  * `icon_type`
38
- * `type`
36
+ * `fileicon` (uses the icon associated with a file)
37
+ * `filetype` (uses the icon associated with the type of a file)
38
+ * `type` (when `file` allows result action for files)
39
+
40
+ More info is available at the [Alfred
41
+ Forums](http://www.alfredforum.com/topic/5-generating-feedback-in-workflows/).
39
42
 
40
43
  ## Contributing
41
44
 
@@ -1,6 +1,6 @@
1
1
  module Alfredo
2
2
  class Item
3
- attr_accessor :title, :subtitle, :arg, :uid, :icon_path, :icon_type, :type
3
+ attr_accessor :title, :subtitle, :arg, :uid, :icon_path, :icon_type, :type, :valid, :autocomplete
4
4
 
5
5
  def initialize(attributes = {})
6
6
  attributes.each do |attribute,value|
@@ -9,26 +9,44 @@ module Alfredo
9
9
  end
10
10
 
11
11
  def uid
12
- @uid || "#{title}_#{Time.now.to_i}"
12
+ @uid || title
13
13
  end
14
14
 
15
15
  def icon_type
16
- @icon_type || 'default'
16
+ @icon_type if %w{fileicon filetype}.include? @icon_type
17
17
  end
18
18
 
19
+ def valid
20
+ if @valid == false
21
+ 'no'
22
+ else
23
+ 'yes'
24
+ end
25
+ end
26
+
27
+ def autocomplete
28
+ @autocomplete || title
29
+ end
30
+
19
31
  def type
20
- @type || 'default'
32
+ @type if @type == 'file'
21
33
  end
22
34
 
23
35
  def build_xml
24
36
  Nokogiri::XML::Builder.new do |xml|
25
- xml.item(arg: arg, uid: uid, valid: 'yes') {
37
+ xml.item(arg: arg, uid: uid, valid: valid, autocomplete: autocomplete) {
26
38
  xml.title title
27
39
  xml.subtitle subtitle
28
- xml.icon(type: icon_type) {
29
- xml.text icon_path
30
- }
31
- xml.type type
40
+ if icon_path
41
+ if icon_type
42
+ xml.icon(type: icon_type) {
43
+ xml.text icon_path
44
+ }
45
+ else
46
+ xml.icon icon_path
47
+ end
48
+ end
49
+ xml.type type if type
32
50
  }
33
51
  end.doc.children.first
34
52
  end
@@ -1,3 +1,3 @@
1
1
  module Alfredo
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -3,7 +3,7 @@ require 'alfredo'
3
3
  describe 'Alfredo::Item' do
4
4
  describe '#build_xml' do
5
5
  before do
6
- @item = Alfredo::Item.new(title: 'foo', subtitle: 'bar', arg: 'baz', uid: 123, icon_path: 'icon.png', icon_type: 'fileicon', type: 'file')
6
+ @item = Alfredo::Item.new(title: 'foo', subtitle: 'bar', arg: 'baz', uid: 123, icon_path: 'icon.png', icon_type: 'fileicon', type: 'file', autocomplete: 'moo')
7
7
 
8
8
  @xml = @item.build_xml
9
9
  end
@@ -24,31 +24,54 @@ describe 'Alfredo::Item' do
24
24
  @xml.xpath('/item/@uid').first.text.should eq '123'
25
25
  end
26
26
 
27
- it 'should generate uid when not set' do
27
+ it 'should set uid to title when uid not set' do
28
28
  @item.uid = nil
29
- @item.build_xml.xpath('/item/@uid').first.text.should match /#{@item.title}_[0-9]+/
29
+ @item.build_xml.xpath('/item/@uid').first.text.should eq @item.title
30
30
  end
31
31
 
32
- it 'should set icon_path' do
32
+ it 'should set icon to icon_path' do
33
33
  @xml.xpath('/item/icon').first.text.should eq 'icon.png'
34
34
  end
35
35
 
36
- it 'should set icon_type' do
36
+ it 'should not set icon when no icon_path not present' do
37
+ @item.icon_path = nil
38
+ @item.build_xml.xpath('/item/icon').size.should eq 0
39
+ end
40
+
41
+ it 'should set icon_type for fileicon' do
37
42
  @xml.xpath('/item/icon/@type').first.text.should eq 'fileicon'
38
43
  end
39
44
 
40
- it 'should use default icon_type when not set' do
45
+ it 'should set icon_type for filetype' do
46
+ @item.icon_type = 'filetype'
47
+ @item.build_xml.xpath('/item/icon/@type').first.text.should eq 'filetype'
48
+ end
49
+
50
+ it 'should not set icon_type when invalid' do
41
51
  @item.icon_type = nil
42
- @item.build_xml.xpath('/item/icon/@type').first.text.should eq 'default'
52
+ @item.build_xml.xpath('/item/icon/@type').size.should eq 0
43
53
  end
44
54
 
45
- it 'should set type' do
55
+ it 'should set type only when its file' do
46
56
  @xml.xpath('/item/type').first.text.should eq 'file'
47
57
  end
48
58
 
49
- it 'should use default type when not set' do
50
- @item.type = nil
51
- @item.build_xml.xpath('/item/type').first.text.should eq 'default'
59
+ it 'should not set type when its invalid' do
60
+ @item.type = 'foo'
61
+ @item.build_xml.xpath('/item/type').size.should eq 0
62
+ end
63
+
64
+ it 'should set valid to yes by default' do
65
+ @xml.xpath('/item/@valid').first.text.should eq 'yes'
66
+ end
67
+
68
+ it 'should set valid to no if its false' do
69
+ @item.valid = false
70
+ @item.build_xml.xpath('/item/@valid').first.text.should eq 'no'
71
+ end
72
+
73
+ it 'should set autocomplete' do
74
+ @xml.xpath('/item/@autocomplete').first.text.should eq 'moo'
52
75
  end
53
76
  end
54
77
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alfredo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Paagman