legislation-uk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +1 -0
- data/Manifest +5 -0
- data/README +37 -0
- data/Rakefile +32 -0
- data/legislation-uk.gemspec +37 -0
- data/lib/legislation_uk.rb +79 -0
- metadata +89 -0
data/CHANGELOG
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v0.0.1 initial alpha release
|
data/Manifest
ADDED
data/README
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Ruby API to the restful UK legislation XML service hosted at: http://www.legislation.gov.uk/
|
|
2
|
+
|
|
3
|
+
= Warning: API under development
|
|
4
|
+
|
|
5
|
+
The legislation-uk API is in early development so it may change slightly over
|
|
6
|
+
time. It should be in working order, so please give it a test spin!
|
|
7
|
+
|
|
8
|
+
The source code is hosted at github. Feel free to fork the code if you have
|
|
9
|
+
something to contribute:
|
|
10
|
+
|
|
11
|
+
http://github.com/robmckinnon/legislation-uk
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
== Install as a Gem
|
|
15
|
+
|
|
16
|
+
Should be up at rubyforge, so to install:
|
|
17
|
+
|
|
18
|
+
sudo gem install legislation-uk
|
|
19
|
+
|
|
20
|
+
== To use
|
|
21
|
+
|
|
22
|
+
Can be used from command line if you run irb:
|
|
23
|
+
|
|
24
|
+
irb
|
|
25
|
+
|
|
26
|
+
require 'rubygems'
|
|
27
|
+
require 'legislation_uk'
|
|
28
|
+
|
|
29
|
+
legislation = Legislation::UK.find('Channel Tunnel Rail Link Act 1996')
|
|
30
|
+
|
|
31
|
+
legislation.parts.size #=> 3
|
|
32
|
+
|
|
33
|
+
legislation.parts.collect(&:number) #=> ["Part I", "Part II", "Part III"]
|
|
34
|
+
|
|
35
|
+
legislation.parts.collect(&:title) #=> ["The Channel Tunnel Rail Link",
|
|
36
|
+
# "The A2 and M2 Improvement Works",
|
|
37
|
+
# "Miscellaneous and General"]
|
data/Rakefile
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'lib/legislation_uk'
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'spec'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
puts "\nYou need to install the rspec gem to perform meta operations on this gem"
|
|
8
|
+
puts " sudo gem install rspec\n"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
require 'echoe'
|
|
13
|
+
|
|
14
|
+
Echoe.new("legislation-uk", Legislation::UK::VERSION) do |m|
|
|
15
|
+
m.author = ["Rob McKinnon"]
|
|
16
|
+
m.email = ["rob ~@nospam@~ rubyforge.org"]
|
|
17
|
+
m.description = File.readlines("README").first
|
|
18
|
+
m.rubyforge_name = "legislation-uk"
|
|
19
|
+
m.rdoc_options << '--inline-source'
|
|
20
|
+
m.dependencies = ["morph >=0.2.7", "activesupport >=2.0.2"]
|
|
21
|
+
m.rdoc_pattern = ["README", "CHANGELOG"] #, "LICENSE"]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
rescue LoadError
|
|
25
|
+
puts "\nYou need to install the echoe gem to perform meta operations on this gem"
|
|
26
|
+
puts " sudo gem install echoe\n\n"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
desc "Open an irb session preloaded with this library"
|
|
30
|
+
task :console do
|
|
31
|
+
sh "irb -rubygems -r ./lib/legislation_uk.rb"
|
|
32
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = %q{legislation-uk}
|
|
5
|
+
s.version = "0.0.1"
|
|
6
|
+
|
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
|
+
s.authors = ["Rob McKinnon"]
|
|
9
|
+
s.date = %q{2009-09-24}
|
|
10
|
+
s.description = %q{Ruby API to the restful UK legislation XML service hosted at: http://www.legislation.gov.uk/
|
|
11
|
+
}
|
|
12
|
+
s.email = ["rob ~@nospam@~ rubyforge.org"]
|
|
13
|
+
s.extra_rdoc_files = ["README", "CHANGELOG"]
|
|
14
|
+
s.files = ["README", "CHANGELOG", "Rakefile", "lib/legislation_uk.rb", "Manifest", "legislation-uk.gemspec"]
|
|
15
|
+
s.homepage = %q{}
|
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Legislation-uk", "--main", "README", "--inline-source"]
|
|
17
|
+
s.require_paths = ["lib"]
|
|
18
|
+
s.rubyforge_project = %q{legislation-uk}
|
|
19
|
+
s.rubygems_version = %q{1.3.5}
|
|
20
|
+
s.summary = %q{Ruby API to the restful UK legislation XML service hosted at: http://www.legislation.gov.uk/}
|
|
21
|
+
|
|
22
|
+
if s.respond_to? :specification_version then
|
|
23
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
24
|
+
s.specification_version = 3
|
|
25
|
+
|
|
26
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
27
|
+
s.add_runtime_dependency(%q<morph>, [">= 0.2.7"])
|
|
28
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.0.2"])
|
|
29
|
+
else
|
|
30
|
+
s.add_dependency(%q<morph>, [">= 0.2.7"])
|
|
31
|
+
s.add_dependency(%q<activesupport>, [">= 2.0.2"])
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
s.add_dependency(%q<morph>, [">= 0.2.7"])
|
|
35
|
+
s.add_dependency(%q<activesupport>, [">= 2.0.2"])
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'activesupport'
|
|
2
|
+
require 'morph'
|
|
3
|
+
require 'open-uri'
|
|
4
|
+
|
|
5
|
+
module LegislationUK
|
|
6
|
+
|
|
7
|
+
module Title
|
|
8
|
+
def title
|
|
9
|
+
contents_title.is_a?(String) ? contents_title.strip : contents_title.title.strip
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Legislation
|
|
14
|
+
include Morph
|
|
15
|
+
def parts
|
|
16
|
+
contents ? contents.contents_parts : []
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class ContentsPart
|
|
21
|
+
include Morph
|
|
22
|
+
include Title
|
|
23
|
+
def number
|
|
24
|
+
contents_number
|
|
25
|
+
end
|
|
26
|
+
def blocks
|
|
27
|
+
contents_pblocks ? contents_pblocks : []
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class ContentsPblock
|
|
32
|
+
include Morph
|
|
33
|
+
include Title
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# See README for usage documentation.
|
|
39
|
+
module Legislation
|
|
40
|
+
module UK
|
|
41
|
+
VERSION = "0.0.1"
|
|
42
|
+
|
|
43
|
+
def self.open_uri uri
|
|
44
|
+
open(uri).read
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.to_object xml
|
|
48
|
+
xml.gsub!(' Type=',' TheType=')
|
|
49
|
+
xml.gsub!('dc:type','dc:the_type')
|
|
50
|
+
hash = Hash.from_xml(xml)
|
|
51
|
+
namespace = LegislationUK
|
|
52
|
+
Morph.from_hash(hash, namespace)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def self.find title, number=nil
|
|
56
|
+
number_part = number ? "&number=#{number}" : ''
|
|
57
|
+
search_url = "http://www.legislation.gov.uk/id?title=#{URI.escape(title)}#{number_part}"
|
|
58
|
+
begin
|
|
59
|
+
xml = Legislation::UK.open_uri(search_url)
|
|
60
|
+
to_object(xml)
|
|
61
|
+
rescue Exception => e
|
|
62
|
+
puts 'error retrieving: ' + search_url
|
|
63
|
+
puts e.class.name
|
|
64
|
+
puts e.to_s
|
|
65
|
+
raise e
|
|
66
|
+
nil
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def self.find_uri title, number=nil
|
|
71
|
+
legislation = find(title, number)
|
|
72
|
+
if legislation
|
|
73
|
+
legislation.document_uri
|
|
74
|
+
else
|
|
75
|
+
nil
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: legislation-uk
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Rob McKinnon
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
|
|
12
|
+
date: 2009-09-24 00:00:00 +01:00
|
|
13
|
+
default_executable:
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: morph
|
|
17
|
+
type: :runtime
|
|
18
|
+
version_requirement:
|
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
20
|
+
requirements:
|
|
21
|
+
- - ">="
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 0.2.7
|
|
24
|
+
version:
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: activesupport
|
|
27
|
+
type: :runtime
|
|
28
|
+
version_requirement:
|
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 2.0.2
|
|
34
|
+
version:
|
|
35
|
+
description: |
|
|
36
|
+
Ruby API to the restful UK legislation XML service hosted at: http://www.legislation.gov.uk/
|
|
37
|
+
|
|
38
|
+
email:
|
|
39
|
+
- rob ~@nospam@~ rubyforge.org
|
|
40
|
+
executables: []
|
|
41
|
+
|
|
42
|
+
extensions: []
|
|
43
|
+
|
|
44
|
+
extra_rdoc_files:
|
|
45
|
+
- README
|
|
46
|
+
- CHANGELOG
|
|
47
|
+
files:
|
|
48
|
+
- README
|
|
49
|
+
- CHANGELOG
|
|
50
|
+
- Rakefile
|
|
51
|
+
- lib/legislation_uk.rb
|
|
52
|
+
- Manifest
|
|
53
|
+
- legislation-uk.gemspec
|
|
54
|
+
has_rdoc: true
|
|
55
|
+
homepage: ""
|
|
56
|
+
licenses: []
|
|
57
|
+
|
|
58
|
+
post_install_message:
|
|
59
|
+
rdoc_options:
|
|
60
|
+
- --line-numbers
|
|
61
|
+
- --inline-source
|
|
62
|
+
- --title
|
|
63
|
+
- Legislation-uk
|
|
64
|
+
- --main
|
|
65
|
+
- README
|
|
66
|
+
- --inline-source
|
|
67
|
+
require_paths:
|
|
68
|
+
- lib
|
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - ">="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: "0"
|
|
74
|
+
version:
|
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: "1.2"
|
|
80
|
+
version:
|
|
81
|
+
requirements: []
|
|
82
|
+
|
|
83
|
+
rubyforge_project: legislation-uk
|
|
84
|
+
rubygems_version: 1.3.5
|
|
85
|
+
signing_key:
|
|
86
|
+
specification_version: 3
|
|
87
|
+
summary: "Ruby API to the restful UK legislation XML service hosted at: http://www.legislation.gov.uk/"
|
|
88
|
+
test_files: []
|
|
89
|
+
|