legislation-uk 0.0.1 → 0.0.2

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 CHANGED
@@ -1 +1,2 @@
1
+ v0.0.2 now returns opsi url, statutelaw url and legislation url
1
2
  v0.0.1 initial alpha release
data/README CHANGED
@@ -21,16 +21,24 @@ Should be up at rubyforge, so to install:
21
21
 
22
22
  Can be used from command line if you run irb:
23
23
 
24
- irb
24
+ > irb
25
25
 
26
26
  require 'rubygems'
27
27
  require 'legislation_uk'
28
28
 
29
29
  legislation = Legislation::UK.find('Channel Tunnel Rail Link Act 1996')
30
30
 
31
- legislation.parts.size #=> 3
31
+ legislation.title #=> "Channel Tunnel Rail Link Act 1996"
32
32
 
33
- legislation.parts.collect(&:number) #=> ["Part I", "Part II", "Part III"]
33
+ legislation.legislation_url #=> "http://www.legislation.gov.uk/ukpga/1996/61"
34
+
35
+ legislation.opsi_url #=> "http://www.opsi.gov.uk/acts/acts1996/ukpga_19960061_en_1"
36
+
37
+ legislation.statutelaw_url #=> "http://www.statutelaw.gov.uk/documents/1996/61/ukpga/c61"
38
+
39
+ legislation.parts.size #=> 3
40
+
41
+ legislation.parts.collect(&:number) #=> ["Part I", "Part II", "Part III"]
34
42
 
35
43
  legislation.parts.collect(&:title) #=> ["The Channel Tunnel Rail Link",
36
44
  # "The A2 and M2 Improvement Works",
@@ -1,5 +1,5 @@
1
- require 'activesupport'
2
1
  require 'morph'
2
+ require 'hpricot'
3
3
  require 'open-uri'
4
4
 
5
5
  module LegislationUK
@@ -10,19 +10,71 @@ module LegislationUK
10
10
  end
11
11
  end
12
12
 
13
+ module ItemNumber
14
+ def number
15
+ contents_number
16
+ end
17
+ end
18
+
13
19
  class Legislation
14
20
  include Morph
21
+
22
+ def self.open_uri uri
23
+ open(uri).read
24
+ end
25
+
26
+ def legislation_url
27
+ document_uri
28
+ end
29
+
30
+ def statutelaw_url
31
+ if legislation_url[%r|http://www.legislation.gov.uk/(.+)/(\d\d\d\d)/(\d+)|]
32
+ type = $1
33
+ year = $2
34
+ chapter = $3
35
+ "http://www.statutelaw.gov.uk/documents/#{year}/#{chapter}/#{type}/c#{chapter}"
36
+ else
37
+ nil
38
+ end
39
+ end
40
+
41
+ def title
42
+ metadata.title
43
+ end
44
+
15
45
  def parts
16
46
  contents ? contents.contents_parts : []
17
47
  end
48
+
49
+ def opsi_url
50
+ unless @opsi_url
51
+ search_url = "http://search.opsi.gov.uk/search?q=#{URI.escape(title)}&output=xml_no_dtd&client=opsisearch_semaphore&site=opsi_collection"
52
+ begin
53
+ doc = Hpricot.XML Legislation.open_uri(search_url)
54
+ url = nil
55
+
56
+ (doc/'R/T').each do |result|
57
+ unless url
58
+ term = result.inner_text.gsub(/<[^>]+>/,'').strip
59
+ url = result.at('../U/text()').to_s if(title == term || term.starts_with?(title))
60
+ end
61
+ end
62
+
63
+ @opsi_url = url
64
+ rescue Exception => e
65
+ puts 'error retrieving: ' + search_url
66
+ puts e.class.name
67
+ puts e.to_s
68
+ end
69
+ end
70
+ @opsi_url
71
+ end
18
72
  end
19
73
 
20
74
  class ContentsPart
21
75
  include Morph
22
76
  include Title
23
- def number
24
- contents_number
25
- end
77
+ include ItemNumber
26
78
  def blocks
27
79
  contents_pblocks ? contents_pblocks : []
28
80
  end
@@ -31,6 +83,16 @@ module LegislationUK
31
83
  class ContentsPblock
32
84
  include Morph
33
85
  include Title
86
+
87
+ def sections
88
+ contents_items
89
+ end
90
+ end
91
+
92
+ class ContentsItem
93
+ include Morph
94
+ include Title
95
+ include ItemNumber
34
96
  end
35
97
  end
36
98
 
@@ -38,7 +100,7 @@ end
38
100
  # See README for usage documentation.
39
101
  module Legislation
40
102
  module UK
41
- VERSION = "0.0.1"
103
+ VERSION = "0.0.2"
42
104
 
43
105
  def self.open_uri uri
44
106
  open(uri).read
@@ -53,9 +115,9 @@ module Legislation
53
115
  end
54
116
 
55
117
  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
118
  begin
119
+ number_part = number ? "&number=#{number}" : ''
120
+ search_url = "http://www.legislation.gov.uk/id?title=#{URI.escape(title)}#{number_part}"
59
121
  xml = Legislation::UK.open_uri(search_url)
60
122
  to_object(xml)
61
123
  rescue Exception => e
@@ -67,13 +129,5 @@ module Legislation
67
129
  end
68
130
  end
69
131
 
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
132
  end
79
133
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legislation-uk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob McKinnon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-24 00:00:00 +01:00
12
+ date: 2009-09-29 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -23,47 +23,45 @@ dependencies:
23
23
  version: 0.2.7
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
- name: activesupport
26
+ name: hpricot
27
27
  type: :runtime
28
28
  version_requirement:
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.2
33
+ version: 0.8.1
34
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
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ description: Ruby API for accessing UK Legislation hosted at http://www.legislation.gov.uk/
46
+ email: rob ~@nospam@~ rubyforge.org
40
47
  executables: []
41
48
 
42
49
  extensions: []
43
50
 
44
51
  extra_rdoc_files:
45
52
  - README
46
- - CHANGELOG
47
53
  files:
48
- - README
49
54
  - CHANGELOG
50
- - Rakefile
55
+ - README
51
56
  - lib/legislation_uk.rb
52
- - Manifest
53
- - legislation-uk.gemspec
54
57
  has_rdoc: true
55
- homepage: ""
58
+ homepage: http://github.com/robmckinnon/legislation-uk
56
59
  licenses: []
57
60
 
58
61
  post_install_message:
59
62
  rdoc_options:
60
- - --line-numbers
61
- - --inline-source
62
- - --title
63
- - Legislation-uk
64
63
  - --main
65
64
  - README
66
- - --inline-source
67
65
  require_paths:
68
66
  - lib
69
67
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -76,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
74
  requirements:
77
75
  - - ">="
78
76
  - !ruby/object:Gem::Version
79
- version: "1.2"
77
+ version: "0"
80
78
  version:
81
79
  requirements: []
82
80
 
@@ -84,6 +82,6 @@ rubyforge_project: legislation-uk
84
82
  rubygems_version: 1.3.5
85
83
  signing_key:
86
84
  specification_version: 3
87
- summary: "Ruby API to the restful UK legislation XML service hosted at: http://www.legislation.gov.uk/"
85
+ summary: Ruby API for http://www.legislation.gov.uk/
88
86
  test_files: []
89
87
 
data/Manifest DELETED
@@ -1,5 +0,0 @@
1
- README
2
- CHANGELOG
3
- Rakefile
4
- lib/legislation_uk.rb
5
- Manifest
data/Rakefile DELETED
@@ -1,32 +0,0 @@
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
@@ -1,37 +0,0 @@
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