spotlight 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +34 -0
- data/Gemfile +4 -0
- data/Rakefile +31 -0
- data/ext/md_item_native/md_item_native.c +1 -1
- data/ext/md_item_native/md_item_native.h +12 -0
- data/ext/md_query_native/md_query_native.c +6 -5
- data/lib/spotlight/query.rb +3 -3
- data/spec/fixtures/test.savedSearch +95 -0
- data/spec/md_item_native_spec.rb +1 -1
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +12 -5
- data/spec/spotlight_query_spec.rb +1 -1
- data/spotlight.gemspec +24 -0
- metadata +84 -31
data/.document
ADDED
data/.gitignore
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
Gemfile.lock
|
7
|
+
InstalledFiles
|
8
|
+
_yardoc
|
9
|
+
coverage
|
10
|
+
doc/
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
rdoc
|
14
|
+
spec/reports
|
15
|
+
test/tmp
|
16
|
+
test/version_tmp
|
17
|
+
tmp
|
18
|
+
*.bundle
|
19
|
+
*.log
|
20
|
+
*.o
|
21
|
+
Makefile
|
22
|
+
|
23
|
+
## MAC OS
|
24
|
+
.DS_Store
|
25
|
+
|
26
|
+
## EMACS
|
27
|
+
*~
|
28
|
+
\#*
|
29
|
+
.\#*
|
30
|
+
|
31
|
+
## VIM
|
32
|
+
*.swp
|
33
|
+
|
34
|
+
|
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
require "bundler/gem_tasks"
|
5
|
+
|
6
|
+
ext_names = %w/md_query_native md_item_native/
|
7
|
+
ext_names.each do |ext_name|
|
8
|
+
CLEAN.include Dir.glob("ext/#{ext_name}/*{.o,.log}")
|
9
|
+
CLEAN.include "ext/#{ext_name}/Makefile"
|
10
|
+
CLOBBER.include "ext/#{ext_name}/#{ext_name}.bundle"
|
11
|
+
CLOBBER.include "lib/#{ext_name}.bundle"
|
12
|
+
|
13
|
+
file "lib/#{ext_name}.bundle" =>
|
14
|
+
Dir.glob("ext/#{ext_name}/*{.rb,.m}") do
|
15
|
+
Dir.chdir("ext/#{ext_name}") do
|
16
|
+
ruby "extconf.rb"
|
17
|
+
sh "make"
|
18
|
+
end
|
19
|
+
cp "ext/#{ext_name}/#{ext_name}.bundle", "lib/"
|
20
|
+
end
|
21
|
+
|
22
|
+
task :spec => "lib/#{ext_name}.bundle"
|
23
|
+
end
|
24
|
+
|
25
|
+
require 'rspec/core'
|
26
|
+
require 'rspec/core/rake_task'
|
27
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
28
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
29
|
+
end
|
30
|
+
|
31
|
+
task :default => :spec
|
@@ -172,7 +172,7 @@ static VALUE cMDItemNative_attribute_names(int argc, VALUE *argv, VALUE self)
|
|
172
172
|
if(cfAttributeNames != NULL) {
|
173
173
|
numAttributes = (int)CFArrayGetCount(cfAttributeNames);
|
174
174
|
for(i = 0; i < numAttributes; i ++) {
|
175
|
-
rb_ary_push(result, CFString2RString((CFStringRef)CFArrayGetValueAtIndex(cfAttributeNames, i)));
|
175
|
+
rb_ary_push(result, rb_str_intern(CFString2RString((CFStringRef)CFArrayGetValueAtIndex(cfAttributeNames, i))));
|
176
176
|
}
|
177
177
|
}
|
178
178
|
|
@@ -9,3 +9,15 @@
|
|
9
9
|
VALUE createInstanceFromMDItem(MDItemRef item);
|
10
10
|
|
11
11
|
#endif
|
12
|
+
|
13
|
+
#ifndef RUBY_19
|
14
|
+
#ifndef RFLOAT_VALUE
|
15
|
+
#define RFLOAT_VALUE(v) (RFLOAT(v)->value)
|
16
|
+
#endif
|
17
|
+
#ifndef RARRAY_LEN
|
18
|
+
#define RARRAY_LEN(v) (RARRAY(v)->len)
|
19
|
+
#endif
|
20
|
+
#ifndef RARRAY_PTR
|
21
|
+
#define RARRAY_PTR(v) (RARRAY(v)->ptr)
|
22
|
+
#endif
|
23
|
+
#endif
|
@@ -40,10 +40,11 @@ static VALUE cMDQueryNative_new(int argc, VALUE *argv, VALUE klass)
|
|
40
40
|
{
|
41
41
|
VALUE queryString;
|
42
42
|
VALUE obj;
|
43
|
+
struct QueryObject *q;
|
43
44
|
|
44
45
|
rb_scan_args(argc, argv, "1", &queryString);
|
45
46
|
|
46
|
-
|
47
|
+
q = malloc(sizeof(struct QueryObject));
|
47
48
|
q->queryString = CString2CFString(StringValuePtr(queryString));
|
48
49
|
q->query = MDQueryCreate(kCFAllocatorDefault, q->queryString, NULL, NULL);
|
49
50
|
obj = Data_Wrap_Struct(klass, 0, cMDQueryNative_free, q);
|
@@ -59,15 +60,15 @@ static VALUE cMDQueryNative_set_search_scopes(int argc, VALUE *argv, VALUE self)
|
|
59
60
|
int i;
|
60
61
|
|
61
62
|
rb_scan_args(argc, argv, "1", &scopes);
|
62
|
-
itemsList = (CFStringRef *)malloc(sizeof(CFStringRef) * (
|
63
|
+
itemsList = (CFStringRef *)malloc(sizeof(CFStringRef) * (RARRAY_LEN(scopes)));
|
63
64
|
|
64
|
-
for(i = 0; i <
|
65
|
-
itemsList[i] = (CFStringRef)CString2CFString(StringValuePtr(
|
65
|
+
for(i = 0; i < RARRAY_LEN(scopes); i ++) {
|
66
|
+
itemsList[i] = (CFStringRef)CString2CFString(StringValuePtr(RARRAY_PTR(scopes)[i]));
|
66
67
|
}
|
67
68
|
|
68
69
|
scopesList = CFArrayCreate(kCFAllocatorDefault,
|
69
70
|
(const void**)itemsList,
|
70
|
-
|
71
|
+
RARRAY_LEN(scopes),
|
71
72
|
NULL);
|
72
73
|
MDQuerySetSearchScope(getQuery(self), scopesList, 0);
|
73
74
|
|
data/lib/spotlight/query.rb
CHANGED
@@ -19,9 +19,9 @@ module Spotlight
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def execute
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
md_query = MDQueryNative.new(query_string)
|
23
|
+
md_query.set_search_scopes(scopes)
|
24
|
+
md_query.execute
|
25
25
|
end
|
26
26
|
|
27
27
|
def to_saved_search(filename)
|
@@ -0,0 +1,95 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CompatibleVersion</key>
|
6
|
+
<integer>1</integer>
|
7
|
+
<key>RawQuery</key>
|
8
|
+
<string>((true) && (true)) && ((* = "test*"cdw || kMDItemTextContent = "test*"cdw))</string>
|
9
|
+
<key>RawQueryDict</key>
|
10
|
+
<dict>
|
11
|
+
<key>FinderFilesOnly</key>
|
12
|
+
<true/>
|
13
|
+
<key>RawQuery</key>
|
14
|
+
<string>((true) && (true)) && ((* = "test*"cdw || kMDItemTextContent = "test*"cdw))</string>
|
15
|
+
<key>SearchScopes</key>
|
16
|
+
<array>
|
17
|
+
<string>kMDQueryScopeComputer</string>
|
18
|
+
</array>
|
19
|
+
<key>UserFilesOnly</key>
|
20
|
+
<true/>
|
21
|
+
</dict>
|
22
|
+
<key>SearchCriteria</key>
|
23
|
+
<dict>
|
24
|
+
<key>AnyAttributeContains</key>
|
25
|
+
<string>test</string>
|
26
|
+
<key>CurrentFolderPath</key>
|
27
|
+
<array>
|
28
|
+
<string>/Users/youpy</string>
|
29
|
+
</array>
|
30
|
+
<key>FXCriteriaSlices</key>
|
31
|
+
<array>
|
32
|
+
<dict>
|
33
|
+
<key>criteria</key>
|
34
|
+
<array>
|
35
|
+
<string>com_apple_UserSearchStringAttribute</string>
|
36
|
+
<integer>104</integer>
|
37
|
+
</array>
|
38
|
+
<key>displayValues</key>
|
39
|
+
<array>
|
40
|
+
<string>Items matching text</string>
|
41
|
+
<string>test</string>
|
42
|
+
</array>
|
43
|
+
<key>rowType</key>
|
44
|
+
<integer>0</integer>
|
45
|
+
<key>subrows</key>
|
46
|
+
<array/>
|
47
|
+
</dict>
|
48
|
+
<dict>
|
49
|
+
<key>criteria</key>
|
50
|
+
<array>
|
51
|
+
<string>kMDItemKind</string>
|
52
|
+
<integer>300</integer>
|
53
|
+
<integer>400</integer>
|
54
|
+
</array>
|
55
|
+
<key>displayValues</key>
|
56
|
+
<array>
|
57
|
+
<string>Kind</string>
|
58
|
+
<string>is</string>
|
59
|
+
<string>any</string>
|
60
|
+
</array>
|
61
|
+
<key>rowType</key>
|
62
|
+
<integer>0</integer>
|
63
|
+
<key>subrows</key>
|
64
|
+
<array/>
|
65
|
+
</dict>
|
66
|
+
</array>
|
67
|
+
<key>FXScope</key>
|
68
|
+
<integer>1396925814</integer>
|
69
|
+
<key>FXScopeArrayOfPaths</key>
|
70
|
+
<array>
|
71
|
+
<string>kMDQueryScopeComputer</string>
|
72
|
+
</array>
|
73
|
+
</dict>
|
74
|
+
<key>ViewOptions</key>
|
75
|
+
<dict>
|
76
|
+
<key>SidebarWidth</key>
|
77
|
+
<integer>242</integer>
|
78
|
+
<key>ToolbarVisible</key>
|
79
|
+
<true/>
|
80
|
+
<key>ViewStyle</key>
|
81
|
+
<string>icnv</string>
|
82
|
+
<key>WindowBounds</key>
|
83
|
+
<dict>
|
84
|
+
<key>bottom</key>
|
85
|
+
<integer>0</integer>
|
86
|
+
<key>left</key>
|
87
|
+
<integer>0</integer>
|
88
|
+
<key>right</key>
|
89
|
+
<integer>0</integer>
|
90
|
+
<key>top</key>
|
91
|
+
<integer>0</integer>
|
92
|
+
</dict>
|
93
|
+
</dict>
|
94
|
+
</dict>
|
95
|
+
</plist>
|
data/spec/md_item_native_spec.rb
CHANGED
@@ -26,6 +26,6 @@ describe Spotlight::MDItemNative do
|
|
26
26
|
it "should get attribute names" do
|
27
27
|
attribute_names = @item.attribute_names
|
28
28
|
attribute_names.should be_an_instance_of(Array)
|
29
|
-
attribute_names.should be_include(
|
29
|
+
attribute_names.should be_include(:kMDItemKind)
|
30
30
|
end
|
31
31
|
end
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,19 @@
|
|
1
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
|
3
|
+
require 'rubygems'
|
3
4
|
require 'spotlight'
|
4
|
-
require 'spec'
|
5
|
-
require 'spec/autorun'
|
6
5
|
|
7
|
-
|
6
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
7
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
8
|
+
# Require this file using `require "spec_helper.rb"` to ensure that it is only
|
9
|
+
# loaded once.
|
10
|
+
#
|
11
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.filter_run :focus
|
8
16
|
|
9
|
-
Spec::Runner.configure do |config|
|
10
17
|
def fixture(filename)
|
11
18
|
File.dirname(__FILE__) + '/fixtures/' + filename
|
12
19
|
end
|
data/spotlight.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#require File.expand_path(__FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["youpy"]
|
6
|
+
gem.email = ["youpy@buycheapviagraonlinenow.com"]
|
7
|
+
gem.description = %q{Library to use Spotlight from Ruby}
|
8
|
+
gem.summary = %q{Library to use Spotlight from Ruby}
|
9
|
+
gem.homepage = ""
|
10
|
+
|
11
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
|
+
gem.files = `git ls-files`.split("\n")
|
13
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
+
gem.name = "spotlight"
|
15
|
+
gem.extensions = ["ext/md_item_native/extconf.rb", "ext/md_query_native/extconf.rb"]
|
16
|
+
gem.require_paths = ["lib"]
|
17
|
+
gem.version = '0.0.6'
|
18
|
+
|
19
|
+
gem.add_dependency('plist')
|
20
|
+
|
21
|
+
gem.add_development_dependency('rake')
|
22
|
+
gem.add_development_dependency('rspec', ['~> 2.8.0'])
|
23
|
+
gem.add_development_dependency('spotlight')
|
24
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spotlight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- youpy
|
@@ -9,87 +15,134 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
13
|
-
default_executable:
|
18
|
+
date: 2012-11-16 00:00:00 Z
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
17
|
-
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
+
none: false
|
20
23
|
requirements:
|
21
24
|
- - ">="
|
22
25
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
26
|
+
hash: 3
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
prerelease: false
|
31
|
+
type: :runtime
|
32
|
+
name: plist
|
33
|
+
requirement: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
|
-
|
27
|
-
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
35
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
30
37
|
requirements:
|
31
38
|
- - ">="
|
32
39
|
- !ruby/object:Gem::Version
|
40
|
+
hash: 3
|
41
|
+
segments:
|
42
|
+
- 0
|
33
43
|
version: "0"
|
34
|
-
|
44
|
+
prerelease: false
|
45
|
+
type: :development
|
46
|
+
name: rake
|
47
|
+
requirement: *id002
|
35
48
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
49
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 47
|
55
|
+
segments:
|
56
|
+
- 2
|
57
|
+
- 8
|
58
|
+
- 0
|
59
|
+
version: 2.8.0
|
60
|
+
prerelease: false
|
37
61
|
type: :development
|
38
|
-
|
39
|
-
|
62
|
+
name: rspec
|
63
|
+
requirement: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
40
67
|
requirements:
|
41
68
|
- - ">="
|
42
69
|
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
43
73
|
version: "0"
|
44
|
-
|
74
|
+
prerelease: false
|
75
|
+
type: :development
|
76
|
+
name: spotlight
|
77
|
+
requirement: *id004
|
45
78
|
description: Library to use Spotlight from Ruby
|
46
|
-
email:
|
79
|
+
email:
|
80
|
+
- youpy@buycheapviagraonlinenow.com
|
47
81
|
executables: []
|
48
82
|
|
49
83
|
extensions:
|
50
84
|
- ext/md_item_native/extconf.rb
|
51
85
|
- ext/md_query_native/extconf.rb
|
52
|
-
extra_rdoc_files:
|
86
|
+
extra_rdoc_files: []
|
87
|
+
|
88
|
+
files:
|
89
|
+
- .document
|
90
|
+
- .gitignore
|
91
|
+
- Gemfile
|
53
92
|
- LICENSE
|
54
93
|
- README.rdoc
|
55
|
-
|
94
|
+
- Rakefile
|
95
|
+
- ext/md_item_native/extconf.rb
|
56
96
|
- ext/md_item_native/md_item_native.c
|
57
97
|
- ext/md_item_native/md_item_native.h
|
98
|
+
- ext/md_query_native/extconf.rb
|
58
99
|
- ext/md_query_native/md_query_native.c
|
59
100
|
- lib/spotlight.rb
|
60
101
|
- lib/spotlight/query.rb
|
61
|
-
-
|
62
|
-
-
|
63
|
-
|
64
|
-
|
102
|
+
- spec/fixtures/test.savedSearch
|
103
|
+
- spec/md_item_native_spec.rb
|
104
|
+
- spec/md_query_native_spec.rb
|
105
|
+
- spec/spec.opts
|
106
|
+
- spec/spec_helper.rb
|
107
|
+
- spec/spotlight_query_spec.rb
|
108
|
+
- spotlight.gemspec
|
109
|
+
homepage: ""
|
65
110
|
licenses: []
|
66
111
|
|
67
112
|
post_install_message:
|
68
|
-
rdoc_options:
|
69
|
-
|
113
|
+
rdoc_options: []
|
114
|
+
|
70
115
|
require_paths:
|
71
116
|
- lib
|
72
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
73
119
|
requirements:
|
74
120
|
- - ">="
|
75
121
|
- !ruby/object:Gem::Version
|
122
|
+
hash: 3
|
123
|
+
segments:
|
124
|
+
- 0
|
76
125
|
version: "0"
|
77
|
-
version:
|
78
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
79
128
|
requirements:
|
80
129
|
- - ">="
|
81
130
|
- !ruby/object:Gem::Version
|
131
|
+
hash: 3
|
132
|
+
segments:
|
133
|
+
- 0
|
82
134
|
version: "0"
|
83
|
-
version:
|
84
135
|
requirements: []
|
85
136
|
|
86
137
|
rubyforge_project:
|
87
|
-
rubygems_version: 1.
|
138
|
+
rubygems_version: 1.8.24
|
88
139
|
signing_key:
|
89
140
|
specification_version: 3
|
90
|
-
summary: Spotlight
|
141
|
+
summary: Library to use Spotlight from Ruby
|
91
142
|
test_files:
|
143
|
+
- spec/fixtures/test.savedSearch
|
92
144
|
- spec/md_item_native_spec.rb
|
93
145
|
- spec/md_query_native_spec.rb
|
146
|
+
- spec/spec.opts
|
94
147
|
- spec/spec_helper.rb
|
95
148
|
- spec/spotlight_query_spec.rb
|