prefix-cmd 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +32 -0
- data/Rakefile +58 -0
- data/bin/prefix-cmd +42 -0
- data/lib/prefix.rb +44 -0
- metadata +98 -0
data/README.rdoc
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
A simple command-line tool for working with the data collected by
|
2
|
+
Richard Cyganiak's excellent service http://prefix.cc.
|
3
|
+
|
4
|
+
I rely on the service as the easiest way to remember URIs for RDF vocabularies.
|
5
|
+
But I often find myself working on a train or a plane and so the service is
|
6
|
+
accessible.
|
7
|
+
|
8
|
+
What I really wanted is a way to query the knowledge base both on and offline.
|
9
|
+
|
10
|
+
Prefix command provides you with a simple command-line tool to do exactly that.
|
11
|
+
|
12
|
+
The command caches a local copy of the data available from:
|
13
|
+
|
14
|
+
http://prefix.cc/popular/all
|
15
|
+
|
16
|
+
The data is fetched and cached in:
|
17
|
+
|
18
|
+
~/.prefix-cmd/prefixes.json
|
19
|
+
|
20
|
+
There are three options:
|
21
|
+
|
22
|
+
prefix-cmd init #initialise or refresh your local cache
|
23
|
+
|
24
|
+
To lookup a URI:
|
25
|
+
|
26
|
+
prefix-cmd uri [prefix]
|
27
|
+
|
28
|
+
To suggest a prefix:
|
29
|
+
|
30
|
+
prefix-cmd prefix [uri]
|
31
|
+
|
32
|
+
Thats all!
|
data/Rakefile
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
require 'rake/testtask'
|
6
|
+
require 'rake/clean'
|
7
|
+
|
8
|
+
require "redis"
|
9
|
+
require "digest/md5"
|
10
|
+
|
11
|
+
NAME = "prefix-cmd"
|
12
|
+
VER = "0.1"
|
13
|
+
|
14
|
+
PKG_FILES = %w( README.rdoc Rakefile ) +
|
15
|
+
Dir.glob("{bin,lib}/**/*")
|
16
|
+
|
17
|
+
CLEAN.include ['*.gem', 'pkg']
|
18
|
+
SPEC =
|
19
|
+
Gem::Specification.new do |s|
|
20
|
+
s.name = NAME
|
21
|
+
s.version = VER
|
22
|
+
s.platform = Gem::Platform::RUBY
|
23
|
+
s.required_ruby_version = ">= 1.8.7"
|
24
|
+
s.has_rdoc = true
|
25
|
+
s.extra_rdoc_files = ["README.rdoc"]
|
26
|
+
s.summary = "Prefix.cc Command"
|
27
|
+
s.description = s.summary
|
28
|
+
s.author = "Leigh Dodds"
|
29
|
+
s.email = 'leigh.dodds@talis.com'
|
30
|
+
s.homepage = 'http://github.org/ldodds/prefix-cmd'
|
31
|
+
s.files = PKG_FILES
|
32
|
+
s.require_path = "lib"
|
33
|
+
s.bindir = "bin"
|
34
|
+
s.executables = ["prefix-cmd"]
|
35
|
+
# s.test_file = "tests/unit/ts_api.rb"
|
36
|
+
s.add_dependency("hpricot")
|
37
|
+
s.add_dependency("json_pure")
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
Rake::GemPackageTask.new(SPEC) do |pkg|
|
42
|
+
pkg.need_tar = true
|
43
|
+
end
|
44
|
+
|
45
|
+
Rake::TestTask.new do |test|
|
46
|
+
test.test_files = FileList['tests/unit/tc_*.rb']
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Install from a locally built copy of the gem"
|
50
|
+
task :install do
|
51
|
+
sh %{rake package}
|
52
|
+
sh %{sudo gem install pkg/#{NAME}-#{VER}}
|
53
|
+
end
|
54
|
+
|
55
|
+
desc "Uninstall the gem"
|
56
|
+
task :uninstall => [:clean] do
|
57
|
+
sh %{sudo gem uninstall #{NAME}}
|
58
|
+
end
|
data/bin/prefix-cmd
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'rubygems'
|
3
|
+
require 'prefix'
|
4
|
+
|
5
|
+
PROGRAM = File::basename $0
|
6
|
+
|
7
|
+
USAGE = <<-EOL
|
8
|
+
SYNOPSIS
|
9
|
+
|
10
|
+
#{ PROGRAM } mode [args]*
|
11
|
+
|
12
|
+
DESCRIPTION
|
13
|
+
|
14
|
+
MODE
|
15
|
+
|
16
|
+
init
|
17
|
+
Initializes your local cache of data, or refreshes a previously cached copy
|
18
|
+
The data is stored in ~/.prefix-cmd/prefixes.json
|
19
|
+
|
20
|
+
uri [prefix]
|
21
|
+
Lookup the uri for a given prefix
|
22
|
+
|
23
|
+
prefix [uri]
|
24
|
+
Lookup the prefix for a given vocabulary URI
|
25
|
+
|
26
|
+
EOL
|
27
|
+
|
28
|
+
mode = ARGV.shift
|
29
|
+
|
30
|
+
case mode
|
31
|
+
when "init"
|
32
|
+
Prefix.init
|
33
|
+
when "uri"
|
34
|
+
Prefix.uri ARGV.shift
|
35
|
+
when "prefix"
|
36
|
+
Prefix.prefix ARGV.shift
|
37
|
+
when "help"
|
38
|
+
USAGE.display
|
39
|
+
else
|
40
|
+
puts "Unknown command"
|
41
|
+
USAGE.display
|
42
|
+
end
|
data/lib/prefix.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'hpricot'
|
3
|
+
require 'open-uri'
|
4
|
+
require 'json/pure'
|
5
|
+
|
6
|
+
class Prefix
|
7
|
+
|
8
|
+
HOME = ENV["HOME"] || ENV["HOMEPATH"] || File::expand_path("~")
|
9
|
+
CONFIG_DIR = File::join HOME, ".prefix-cmd"
|
10
|
+
CONFIG_FILE = File::join CONFIG_DIR, "prefixes.json"
|
11
|
+
|
12
|
+
def Prefix.init()
|
13
|
+
puts "Initializing prefix cache"
|
14
|
+
doc = Hpricot( open("http://prefix.cc/popular/all") )
|
15
|
+
|
16
|
+
prefixes = {}
|
17
|
+
doc.search("a").each do |el|
|
18
|
+
prefixes[ el.inner_html ] = el["resource"] if el["rel"] && el["rel"].match("rdfs:seeAlso")
|
19
|
+
end
|
20
|
+
|
21
|
+
FileUtils::mkdir_p CONFIG_DIR unless test ?d, CONFIG_DIR
|
22
|
+
test ?e, CONFIG_FILE and FileUtils::mv CONFIG_FILE, "#{CONFIG_FILE}.bak"
|
23
|
+
|
24
|
+
File.open(CONFIG_FILE, "w") do |f|
|
25
|
+
f.puts( prefixes.to_json )
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def Prefix.uri(prefix)
|
31
|
+
init() unless test ?e, CONFIG_FILE
|
32
|
+
json = JSON.load( File.open(CONFIG_FILE, "r") )
|
33
|
+
puts json[prefix] || "Unknown prefix #{prefix}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def Prefix.prefix(uri)
|
37
|
+
init() unless test ?e, CONFIG_FILE
|
38
|
+
json = JSON.load( File.open(CONFIG_FILE, "r") )
|
39
|
+
json.each do |k,v|
|
40
|
+
puts k if v == uri
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
metadata
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: prefix-cmd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: "0.1"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Leigh Dodds
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-08-26 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: hpricot
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: json_pure
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
description: Prefix.cc Command
|
49
|
+
email: leigh.dodds@talis.com
|
50
|
+
executables:
|
51
|
+
- prefix-cmd
|
52
|
+
extensions: []
|
53
|
+
|
54
|
+
extra_rdoc_files:
|
55
|
+
- README.rdoc
|
56
|
+
files:
|
57
|
+
- README.rdoc
|
58
|
+
- Rakefile
|
59
|
+
- bin/prefix-cmd
|
60
|
+
- lib/prefix.rb
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: http://github.org/ldodds/prefix-cmd
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 57
|
76
|
+
segments:
|
77
|
+
- 1
|
78
|
+
- 8
|
79
|
+
- 7
|
80
|
+
version: 1.8.7
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
requirements: []
|
91
|
+
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 1.3.7
|
94
|
+
signing_key:
|
95
|
+
specification_version: 3
|
96
|
+
summary: Prefix.cc Command
|
97
|
+
test_files: []
|
98
|
+
|