brilliant_web_scraper 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/README.md +31 -0
  4. data/brilliant_web_scraper-1.0.0.gem +0 -0
  5. data/brilliant_web_scraper-1.0.gem +0 -0
  6. data/brilliant_web_scraper.gemspec +30 -0
  7. data/lib/brilliant_web_scraper.rb +55 -0
  8. data/lib/parsers/description_helper.rb +28 -0
  9. data/lib/parsers/emails.rb +30 -0
  10. data/lib/parsers/facebook_profile.rb +11 -0
  11. data/lib/parsers/instagram_profile.rb +11 -0
  12. data/lib/parsers/linkedin_profile.rb +11 -0
  13. data/lib/parsers/meta_description.rb +13 -0
  14. data/lib/parsers/org_description.rb +13 -0
  15. data/lib/parsers/phone_numbers.rb +34 -0
  16. data/lib/parsers/pinterest_profile.rb +11 -0
  17. data/lib/parsers/redirected_to.rb +29 -0
  18. data/lib/parsers/title.rb +13 -0
  19. data/lib/parsers/twitter_description.rb +13 -0
  20. data/lib/parsers/twitter_profile.rb +11 -0
  21. data/lib/parsers/unescape_html_helper.rb +17 -0
  22. data/lib/parsers/vimeo_profile.rb +11 -0
  23. data/lib/parsers/youtube_channel.rb +29 -0
  24. data/lib/scraper/errors.rb +19 -0
  25. data/lib/scraper/scrape_exceptions.rb +49 -0
  26. data/lib/scraper/scrape_helper.rb +59 -0
  27. data/lib/scraper/scrape_request.rb +29 -0
  28. data/lib/version.rb +6 -0
  29. data/spec/lib/parsers/description_helper_spec.rb +24 -0
  30. data/spec/lib/parsers/emails_spec.rb +60 -0
  31. data/spec/lib/parsers/facebook_profile_spec.rb +77 -0
  32. data/spec/lib/parsers/instagram_profile_spec.rb +45 -0
  33. data/spec/lib/parsers/linkedin_profile_spec.rb +43 -0
  34. data/spec/lib/parsers/meta_description_spec.rb +321 -0
  35. data/spec/lib/parsers/org_description_spec.rb +316 -0
  36. data/spec/lib/parsers/phone_numbers_spec.rb +69 -0
  37. data/spec/lib/parsers/pinterest_profile_spec.rb +44 -0
  38. data/spec/lib/parsers/redirected_to_spec.rb +207 -0
  39. data/spec/lib/parsers/title_spec.rb +87 -0
  40. data/spec/lib/parsers/twitter_description_spec.rb +314 -0
  41. data/spec/lib/parsers/twitter_profile_spec.rb +59 -0
  42. data/spec/lib/parsers/unescape_html_helper_spec.rb +0 -0
  43. data/spec/lib/parsers/vimeo_profile_spec.rb +43 -0
  44. data/spec/lib/parsers/youtube_profile_spec.rb +82 -0
  45. data/spec/lib/scraper/brilliant_web_scrape_test.rb +66 -0
  46. data/spec/lib/scraper/scrape_request_test.rb +34 -0
  47. data/spec/spec_helper.rb +111 -0
  48. data/spec/vcr/encoding_compatibility_error.yml +316 -0
  49. data/spec/vcr/invalid_byte_sequence_utf_8.yml +2383 -0
  50. data/spec/vcr/no_valid_data_to_scrape.yml +109 -0
  51. data/spec/vcr/non_html_scrape.yml +163 -0
  52. data/spec/vcr/valid_scrape_response.yml +696 -0
  53. metadata +250 -0
File without changes
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Vimeo Profile' do
4
+
5
+ class DummyTestClass
6
+ include VimeoProfile
7
+ end
8
+ let(:dummy_object) { DummyTestClass.new }
9
+
10
+ it 'should return nil for invalid input' do
11
+ expect(dummy_object.grep_vimeo_profile(nil)).to be_nil
12
+ expect(dummy_object.grep_vimeo_profile('')).to be_nil
13
+ end
14
+
15
+ it 'should not grep any non profile url' do
16
+ html = <<~HTML
17
+ <a href="https://vimeo.com/" target="_blank">
18
+ <a href="https://vimeo.com/upgrade" target="_blank">
19
+ <a href="https://vimeo.com/features" target="_blank">
20
+ <a href="https://vimeo.com/enterprise/" target="_blank">
21
+ <a href="https://vimeo.com/upload" target="_blank">
22
+ <a href="https://vimeo.com/api/v2/" target="_blank">
23
+ HTML
24
+ expect(dummy_object.grep_vimeo_profile(html.to_s)).to eq([])
25
+ end
26
+
27
+ it 'should grep valid urls' do
28
+ html = <<~HTML
29
+ <a href="https://vimeo.com/107578087" target="_blank">
30
+ <a href="https://vimeo.com/channels/332103" target="_blank">
31
+ <a href="https://vimeo.com/talech" target="_blank">
32
+ <a href="https://vimeo.com/292173295/fdb8634a35/" target="_blank">
33
+ HTML
34
+ vimeo_profiles = dummy_object.grep_vimeo_profile(html.to_s)
35
+ expected_profiles = [
36
+ 'https://vimeo.com/107578087',
37
+ 'https://vimeo.com/channels/332103',
38
+ 'https://vimeo.com/talech',
39
+ 'https://vimeo.com/292173295/fdb8634a35/',
40
+ ]
41
+ expect(vimeo_profiles).to eq(expected_profiles)
42
+ end
43
+ end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Youtube Profile' do
4
+
5
+ class DummyTestClass
6
+ include YoutubeChannel
7
+ end
8
+ let(:dummy_object) { DummyTestClass.new }
9
+
10
+ it 'should return nil for invalid input' do
11
+ expect(dummy_object.grep_youtube_channel(nil)).to be_nil
12
+ expect(dummy_object.grep_youtube_channel('')).to be_nil
13
+ end
14
+
15
+ it 'should not grep any non profile url' do
16
+ html = <<~HTML
17
+ <a href="https://www.youtube.com/embed/" target="_blank">
18
+ <a href="http://www.youtube.com/player_api?ver=1" target="_blank">
19
+ <a href="https://www.youtube.com/embed/" target="_blank">
20
+ <a href="https://www.youtube.com/feeds/videos.xml" target="_blank">
21
+ <a href="https://www.youtube.com/embed/{{video-id-yt}}" target="_blank">
22
+ <a href="https://www.youtube.com/embed/$1$3" target="_blank">
23
+ <a href="https://www.youtube.com/embed/[field_banner_video]" target="_blank">
24
+ <a href="http://www.youtube.com/" target="_blank">
25
+ <a href="https://www.youtube.com/?gl=IN&hl=en-GB" target="_blank">
26
+ <a href="http://www.youtube.com/watch?\\" target="_blank">
27
+ <a href="http://www.youtube.com/watch?'" target="_blank">
28
+ <a href="http://www.youtube.com/watch?" target="_blank">
29
+ <a href="http://www.youtube.com/watch? " target="_blank">
30
+ <a href="http://www.youtube.com/watch?+" target="_blank">
31
+ HTML
32
+ expect(dummy_object.grep_youtube_channel(html.to_s)).to eq([])
33
+ end
34
+
35
+ it 'should bring channel starting with id url as channel url' do
36
+ html = <<~HTML
37
+ <a href="http://www.youtube.com/idtsemiconductor" target="_blank">
38
+ HTML
39
+ expect(dummy_object.grep_youtube_channel(html.to_s)).to eq(['http://www.youtube.com/idtsemiconductor'])
40
+
41
+ end
42
+
43
+ describe 'Enforce order of YouTube channel url preferce' do
44
+ it 'should grep /channel-name as channel url(prefered channel url)' do
45
+ html = <<~HTML
46
+ <a href="https://www.youtube.com/watch?v=ZPV0JOMX-KI?ie=UTF-8&oe=UTF-8&q=prettyphoto&iframe=true&width=100%&height=100%" target="_blank">
47
+ <a href="http://www.youtube.com/10Thmagnitude" target="_blank">
48
+ <a href="https://www.youtube.com/watch?v=TorCiltsk6E&feature=youtu.be" target="_blank">
49
+ <a href="https://www.youtube.com/embed/D9ZPdSyud2Q" target="_blank">
50
+ <a href="https://www.youtube.com/channel/UCrwE8kVqtIUVUzKui2WVpuQ" target="_blank">
51
+ <a href="http://www.youtube.com/c/AnneMariaBello" target="_blank">
52
+ <a href="https://www.youtube.com/user/BJP4India" target="_blank">
53
+ <a href="https://www.youtube.com/playlist?list=PLPMCnAPD5b54hbt2JpyOSFdwm_uc2zpzG" target="_blank">
54
+ <a href="http://youtube.com/subscription_center?add_user=SunnybrookMedia" target="_blank">
55
+ HTML
56
+ expected_profiles = [
57
+ "http://www.youtube.com/10Thmagnitude",
58
+ "https://www.youtube.com/channel/UCrwE8kVqtIUVUzKui2WVpuQ",
59
+ "http://www.youtube.com/c/AnneMariaBello",
60
+ "https://www.youtube.com/user/BJP4India",
61
+ "https://www.youtube.com/playlist?list=PLPMCnAPD5b54hbt2JpyOSFdwm_uc2zpzG",
62
+ "http://youtube.com/subscription_center?add_user=SunnybrookMedia"
63
+ ]
64
+ profiles = dummy_object.grep_youtube_channel(html.to_s)
65
+ expect(profiles).to eq(expected_profiles)
66
+ end
67
+ it 'should grep /watch? url as channel url(2nd choice)' do
68
+ html = <<~HTML
69
+ <a href="https://www.youtube.com/embed/D9ZPdSyud2Q" target="_blank">
70
+ <a href="https://www.youtube.com/watch?v=TorCiltsk6E&feature=youtu.be" target="_blank">
71
+ <a href="https://www.youtube.com/watch?v=ZPV0JOMX-KI?ie=UTF-8&oe=UTF-8&q=prettyphoto&iframe=true&width=100%&height=100%" target="_blank">
72
+ HTML
73
+ expect(dummy_object.grep_youtube_channel(html.to_s)).to eq(["https://www.youtube.com/watch?v=TorCiltsk6E", "https://www.youtube.com/watch?v=ZPV0JOMX-KI?ie=UTF-8"])
74
+ end
75
+ it 'should grep /embed/ url as channel url(3r choice)' do
76
+ html = <<~HTML
77
+ <a href="https://www.youtube.com/embed/D9ZPdSyud2Q" target="_blank">
78
+ HTML
79
+ expect(dummy_object.grep_youtube_channel(html.to_s)).to eq(['https://www.youtube.com/embed/D9ZPdSyud2Q'])
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'BrilliantWebScraper' do
4
+ it 'should get valid scraped data' do
5
+ VCR.use_cassette('valid_scrape_response') do
6
+ data = BrilliantWebScraper.new('unisourceworldwide.com')
7
+ expect(data[:scrape_data]).to eq(
8
+ { :title=>'Leading North American Distributor | Veritiv Corporation',
9
+ :meta_description=>'Full-service distribution services including warehousing, paper and packaging distribution, publishing, facility solutions and logistics.',
10
+ :org_description=>'packaging design wide format commercial cleaning solutions careers logistics paper samples news about Veritiv investor relations',
11
+ :twitter_description=>nil,
12
+ :twitter_profile=>['http://twitter.com/Veritiv'],
13
+ :linkedin_profile=>['https://www.linkedin.com/company/veritiv'],
14
+ :facebook_profile=>['http://facebook.com/VeritivCorp'],
15
+ :instagram_profile=>[],
16
+ :vimeo_profile=>[],
17
+ :pinterest_profile=>[],
18
+ :youtube_channel=>['http://youtube.com/user/VeritivCorp'],
19
+ :emails=>[],
20
+ :phone_numbers=>[],
21
+ :redirected_to=>'https://www.veritivcorp.com/veritiv-homepage'
22
+ }
23
+ )
24
+ end
25
+ end
26
+
27
+ it 'should return {} when no valid data available' do
28
+ VCR.use_cassette('no_valid_data_to_scrape') do
29
+ data = BrilliantWebScraper.new('objectivemanager.com')
30
+ expect(data).to eq({})
31
+ end
32
+ end
33
+
34
+ describe 'parse exceptions' do
35
+ it 'should enforce UTF-8 encoding and retry parsing' do
36
+ VCR.use_cassette('invalid_byte_sequence_utf_8') do
37
+ data = BrilliantWebScraper.new('mzaabudhabi.ae')
38
+ expect(data[:scrape_data]).to eq(
39
+ { :title=>"Media Zone Authority",
40
+ :meta_description=>"Find out what the Media Zone Authority is about",
41
+ :org_description=>nil,
42
+ :twitter_description=>nil,
43
+ :twitter_profile=>[],
44
+ :linkedin_profile=>[],
45
+ :facebook_profile=>[],
46
+ :instagram_profile=>[],
47
+ :vimeo_profile=>[],
48
+ :pinterest_profile=>[],
49
+ :youtube_channel=>nil,
50
+ :emails=>["regulatoryaffairs@mzaabudhabi.ae"],
51
+ :phone_numbers=>["+971 2 401 2454"],
52
+ :redirected_to=>"https://www.mzaabudhabi.ae/en/"
53
+ }
54
+ )
55
+ end
56
+ end
57
+
58
+ it 'should raise parse exception' do
59
+ VCR.use_cassette('encoding_compatibility_error') do
60
+ expect {
61
+ BrilliantWebScraper.new('ablesolicitors.ie')
62
+ }.to raise_error(WebScraper::ParserError)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'ScrapeRequest' do
4
+ it 'should get valid response' do
5
+ VCR.use_cassette("valid_scrape_response") do
6
+ response = ScrapeRequest.new('unisourceworldwide.com', 10, 10)
7
+ expect(response.code).to eq(200)
8
+ end
9
+ end
10
+
11
+ describe 'exceptions' do
12
+ it 'should raise WebScraper::NonHtmlError' do
13
+ VCR.use_cassette("non_html_scrape") do
14
+ expect {
15
+ ScrapeRequest.new('https://www.lexisnexis.ca/images/common/logo-lexisnexis.png', 10, 10)
16
+ }.to raise_error(WebScraper::NonHtmlError)
17
+ end
18
+ end
19
+
20
+ it 'should raise TIMEOUT_EXCEPTION' do
21
+ stub_request(:any, 'constellationrg.com').to_timeout
22
+ expect {
23
+ ScrapeRequest.new('constellationrg.com', 10, 10)
24
+ }.to raise_error(WebScraper::TimeoutError)
25
+ end
26
+
27
+ it 'should raise GENERAL_EXCEPTION' do
28
+ stub_request(:any, 'canadiansprings.com').to_raise(WebScraper::RequestError)
29
+ expect {
30
+ ScrapeRequest.new('canadiansprings.com', 10, 10)
31
+ }.to raise_error(WebScraper::RequestError)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,111 @@
1
+ $: << File.join(File.dirname(__FILE__), "/../lib")
2
+ require 'brilliant_web_scraper'
3
+ require 'webmock/rspec'
4
+ require 'pry'
5
+ require 'vcr'
6
+
7
+ # This file was generated by the `rspec --init` command. Conventionally, all
8
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
9
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
10
+ # this file to always be loaded, without a need to explicitly require it in any
11
+ # files.
12
+ #
13
+ # Given that it is always loaded, you are encouraged to keep this file as
14
+ # light-weight as possible. Requiring heavyweight dependencies from this file
15
+ # will add to the boot time of your test suite on EVERY test run, even for an
16
+ # individual file that may not need all of that loaded. Instead, consider making
17
+ # a separate helper file that requires the additional dependencies and performs
18
+ # the additional setup, and require it from the spec files that actually need
19
+ # it.
20
+ #
21
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
22
+ RSpec.configure do |config|
23
+ # rspec-expectations config goes here. You can use an alternate
24
+ # assertion/expectation library such as wrong or the stdlib/minitest
25
+ # assertions if you prefer.
26
+ config.expect_with :rspec do |expectations|
27
+ # This option will default to `true` in RSpec 4. It makes the `description`
28
+ # and `failure_message` of custom matchers include text for helper methods
29
+ # defined using `chain`, e.g.:
30
+ # be_bigger_than(2).and_smaller_than(4).description
31
+ # # => "be bigger than 2 and smaller than 4"
32
+ # ...rather than:
33
+ # # => "be bigger than 2"
34
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
35
+ end
36
+
37
+ # rspec-mocks config goes here. You can use an alternate test double
38
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
39
+ config.mock_with :rspec do |mocks|
40
+ # Prevents you from mocking or stubbing a method that does not exist on
41
+ # a real object. This is generally recommended, and will default to
42
+ # `true` in RSpec 4.
43
+ mocks.verify_partial_doubles = true
44
+ end
45
+
46
+ VCR.configure do |c|
47
+ c.cassette_library_dir = "spec/vcr"
48
+ c.hook_into :webmock
49
+ end
50
+
51
+ # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
52
+ # have no way to turn it off -- the option exists only for backwards
53
+ # compatibility in RSpec 3). It causes shared context metadata to be
54
+ # inherited by the metadata hash of host groups and examples, rather than
55
+ # triggering implicit auto-inclusion in groups with matching metadata.
56
+ config.shared_context_metadata_behavior = :apply_to_host_groups
57
+
58
+ # The settings below are suggested to provide a good initial experience
59
+ # with RSpec, but feel free to customize to your heart's content.
60
+ =begin
61
+ # This allows you to limit a spec run to individual examples or groups
62
+ # you care about by tagging them with `:focus` metadata. When nothing
63
+ # is tagged with `:focus`, all examples get run. RSpec also provides
64
+ # aliases for `it`, `describe`, and `context` that include `:focus`
65
+ # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
66
+ config.filter_run_when_matching :focus
67
+
68
+ # Allows RSpec to persist some state between runs in order to support
69
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
70
+ # you configure your source control system to ignore this file.
71
+ config.example_status_persistence_file_path = "spec/examples.txt"
72
+
73
+ # Limits the available syntax to the non-monkey patched syntax that is
74
+ # recommended. For more details, see:
75
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
76
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
77
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
78
+ config.disable_monkey_patching!
79
+
80
+ # This setting enables warnings. It's recommended, but in some cases may
81
+ # be too noisy due to issues in dependencies.
82
+ config.warnings = true
83
+
84
+ # Many RSpec users commonly either run the entire suite or an individual
85
+ # file, and it's useful to allow more verbose output when running an
86
+ # individual spec file.
87
+ if config.files_to_run.one?
88
+ # Use the documentation formatter for detailed output,
89
+ # unless a formatter has already been configured
90
+ # (e.g. via a command-line flag).
91
+ config.default_formatter = "doc"
92
+ end
93
+
94
+ # Print the 10 slowest examples and example groups at the
95
+ # end of the spec run, to help surface which specs are running
96
+ # particularly slow.
97
+ config.profile_examples = 10
98
+
99
+ # Run specs in random order to surface order dependencies. If you find an
100
+ # order dependency and want to debug it, you can fix the order by providing
101
+ # the seed, which is printed after each run.
102
+ # --seed 1234
103
+ config.order = :random
104
+
105
+ # Seed global randomization in this process using the `--seed` CLI option.
106
+ # Setting this allows you to use `--seed` to deterministically reproduce
107
+ # test failures related to randomization by passing the same `--seed` value
108
+ # as the one that triggered the failure.
109
+ Kernel.srand config.seed
110
+ =end
111
+ end
@@ -0,0 +1,316 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://ablesolicitors.ie/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ Accept-Encoding:
13
+ - identity
14
+ User-Agent:
15
+ - rest-client/2.0.2 (darwin18.6.0 x86_64) ruby/2.3.1p112
16
+ Host:
17
+ - ablesolicitors.ie
18
+ response:
19
+ status:
20
+ code: 301
21
+ message: Moved Permanently
22
+ headers:
23
+ Date:
24
+ - Fri, 09 Aug 2019 15:10:53 GMT
25
+ Server:
26
+ - Apache
27
+ X-Powered-By:
28
+ - PHP/5.3.3
29
+ X-Pingback:
30
+ - http://www.ablesolicitors.ie/xmlrpc.php
31
+ X-Server:
32
+ - '3103'
33
+ Location:
34
+ - http://www.ablesolicitors.ie/
35
+ Content-Length:
36
+ - '0'
37
+ Content-Type:
38
+ - text/html; charset=UTF-7
39
+ body:
40
+ encoding: UTF-8
41
+ string: ''
42
+ http_version:
43
+ recorded_at: Fri, 09 Aug 2019 15:10:54 GMT
44
+ - request:
45
+ method: get
46
+ uri: http://www.ablesolicitors.ie/
47
+ body:
48
+ encoding: US-ASCII
49
+ string: ''
50
+ headers:
51
+ Accept:
52
+ - "*/*"
53
+ Accept-Encoding:
54
+ - identity
55
+ User-Agent:
56
+ - rest-client/2.0.2 (darwin18.6.0 x86_64) ruby/2.3.1p112
57
+ Host:
58
+ - www.ablesolicitors.ie
59
+ response:
60
+ status:
61
+ code: 200
62
+ message: OK
63
+ headers:
64
+ Date:
65
+ - Fri, 09 Aug 2019 15:10:55 GMT
66
+ Server:
67
+ - Apache
68
+ X-Powered-By:
69
+ - PHP/5.3.3
70
+ X-Pingback:
71
+ - http://www.ablesolicitors.ie/xmlrpc.php
72
+ X-Server:
73
+ - '3103'
74
+ Transfer-Encoding:
75
+ - chunked
76
+ Content-Type:
77
+ - text/html; charset=UTF-7
78
+ body:
79
+ encoding: UTF-8
80
+ string: "<!DOCTYPE html >\n<!--[if lt IE 7 ]> <html class=\"no-js ie6\" lang=\"en-US\">
81
+ <![endif]-->\n<!--[if IE 7 ]> <html class=\"no-js ie7\" lang=\"en-US\">
82
+ <![endif]-->\n<!--[if IE 8 ]> <html class=\"no-js ie8\" lang=\"en-US\">
83
+ <![endif]-->\n<!--[if (gte IE 9)|!(IE)]><!--> <html class=\"no-js\" lang=\"en-US\">
84
+ <!--<![endif]-->\n\n<head>\n\n\t<title> | We are ready, willing and able to
85
+ represent YOU!</title>\n\t\n\t<meta charset=\"utf-8\">\t\n\t\n\t\t\t\n\t\n\t<!--
86
+ Mobile Specific Metas\n \t==================================================
87
+ -->\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1,
88
+ maximum-scale=1\" /> \n\t\n\t<link rel=\"profile\" href=\"http://gmpg.org/xfn/11\"
89
+ />\n\t<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS 2.0\"
90
+ href=\"http://www.ablesolicitors.ie/feed/\" />\n\t<link rel=\"alternate\"
91
+ type=\"text/xml\" title=\"RSS .92\" href=\"http://www.ablesolicitors.ie/feed/rss/\"
92
+ />\n\t<link rel=\"alternate\" type=\"application/atom+xml\" title=\"Atom 0.3\"
93
+ href=\"http://www.ablesolicitors.ie/feed/atom/\" />\n\t<link rel=\"pingback\"
94
+ href=\"http://www.ablesolicitors.ie/xmlrpc.php\" />\n\t\n\n\n\t<!-- CSS\n
95
+ \ \t================================================== -->\n \t<!-- Load
96
+ the basic skeleton and plugin CSS, then the main theme stylesheet --> \n
97
+ \ <link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/base.css\"
98
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/skeleton.css\"
99
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/comments.css\"
100
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/buttons.css\"
101
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/ui.totop.css\"
102
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/superfish.css\"
103
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/flexslider.css\"
104
+ />\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/chosen/chosen.css\"
105
+ />\n\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/prettyPhoto/css/prettyPhoto.css\"
106
+ />\n\t\n\t<!-- Alternate rLightbox\n\t<link type=\"text/css\" rel=\"stylesheet\"
107
+ href=\"< ?php echo get_template_directory_uri(); ?>/assets/javascripts/rlightbox_css/ui-lightness/jquery-ui-1.8.16.custom.css\"
108
+ />\n\t<link type=\"text/css\" rel=\"stylesheet\" href=\"< ?php echo get_template_directory_uri();
109
+ ?>/assets/javascripts/rlightbox_css/lightbox.min.css\" />\n\t-->\n\t\n\t<link
110
+ rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/styles.css\"
111
+ />\n\t\n\t\n <!-- Load the font stack from the Options Panel -->\n <link
112
+ rel=\"stylesheet\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/typography-sans.css\"
113
+ />\n \n <!-- Load the default skin from the Options Panel -->\n
114
+ \ \t\t<link rel=\"stylesheet\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/stylesheets/skin-clean.css\"
115
+ />\n\t\t\n\t\n\t<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/style.css\"
116
+ />\n\t\n\t\n\t<!-- Favicons, StyleLoader, and basic WP stuff\n\t==================================================
117
+ -->\n\t<link rel=\"shortcut icon\" href=\"\" type=\"image/gif\" />\n\t\n\t<!--
118
+ THIS FILE LOADS ALL THE CUSTOMIZATIONS FROM THE THEME OPTIONS PANEL -->\n\n\n<!--
119
+ Custom CSS Modifications from the Admin Panel -->\n<style type=\"text/css\">\n\n/*
120
+ Insert the rest of the custom CSS from the admin panel */ \n \n\t \n\t \n\t/*
121
+ Add a custom bg if it exists */\n\t\t \n\t\t \n\t \n\t/* This is your link
122
+ hover color */\n\t\t\n\t\n\t/* This is your link color */\n\t\t\n\t/* This
123
+ is your visited link color */\n\t\t\t\n\t\n\t\n</style>\n\n\n<!-- ALTERNATIVE
124
+ HEADLINE FONT OVERRIDE - For TypeKit/GoogleFonts Insertion -->\t\n\n\t\t<!--
125
+ FONT REPLACEMENT LOADER 1. Checks for opt-outs, then Cufon, then Google and
126
+ loads the appropriate files. -->\n\t\t \n\t\t\t\n\t\t\t<link rel=\"stylesheet\"
127
+ type=\"text/css\" href=\"http://fonts.googleapis.com/css?family=\" />\n\t\t\t<style
128
+ type=\"text/css\">\n\t\t\th1, h2, h3, h4, h5, h6 {\n\t\t\t font-family: '';\n\t\t\t
129
+ \ -webkit-transform: rotate(-0.01deg);\n\t\t\t -moz-transform: rotate(-0.01deg);\n\t\t\t
130
+ \ text-rendering: optimizeLegibility;\n\t\t\t -webkit-font-smoothing: antialiased;\n\t\t\t}\n\t\t\t</style>\n\t\t\n\t\t\t\n<!--
131
+ // END HEADLINE FONT OVERRIDE -->\t\n\n\n\n<!-- Hide the top bar / optional
132
+ -->\n \n\n\n\n<!-- Check for Column Flipping -->\n\n\n<!-- Check for Force-Hiding
133
+ of the Breakout Row -->\n\t\n\t\t\n\t\n</head>\n\n\n<!-- Start the Markup\n==================================================
134
+ -->\n<body class=\"home blog\" >\n\n\n\t\n<!-- Super Container for entire
135
+ site -->\n<div class=\"super-container full-width\" id=\"section-header\">\n\n\t<!--
136
+ 960 Container -->\n\t<div class=\"container\">\t\t\t\n\t\t\n\t\t<!-- Header
137
+ -->\n\t\t<header>\n\t\t<div class=\"sixteen columns\">\n\t\t\t \n\t\t\t<!--
138
+ Branding -->\n\t\t\t<div class=\"three columns alpha\">\n\t\t\t\t<a href=\"http://www.ablesolicitors.ie/\"
139
+ title=\"\">\n\t\t\t\t\t<h1 id=\"logo\">\n\t\t\t\t\t\t \t\t \t\t\n\t
140
+ \ \t\t\t<img id=\"logotype\" src=\"http://www.ablesolicitors.ie/wp-content/uploads/2012/09/Adjusted-Able-Logo.jpg\"
141
+ alt=\"\" />\n\t \t\t</h1>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t\t<div
142
+ class=\"three columns alpha call\">\n\t\t\t<h4>Call Us Today</h4>\n\t\t\t01-4736963\n\t\t\t</div>\n\t\t\t<!--
143
+ /End Branding -->\n\t\t\t\n\t\t\t<div class=\"ten columns omega\">\n\t\t\t\t\t\t\t\t<!--
144
+ DEFAULT NAVIGATION -->\n\t\t\t\t<ul id=\"menu-main-menu\" class=\"sf-menu
145
+ dark\"><li id=\"menu-item-153\" class=\"menu-item menu-item-type-custom menu-item-object-custom
146
+ current-menu-item current_page_item menu-item-home\"><a href=\"http://www.ablesolicitors.ie/\"><strong>Home</strong></a></li>\n<li
147
+ id=\"menu-item-38\" class=\"menu-item menu-item-type-post_type menu-item-object-page\"><a
148
+ href=\"http://www.ablesolicitors.ie/practice-areas/\"><strong>Practice Areas</strong></a></li>\n<li
149
+ id=\"menu-item-37\" class=\"menu-item menu-item-type-post_type menu-item-object-page\"><a
150
+ href=\"http://www.ablesolicitors.ie/our-people/\"><strong>Our People</strong></a></li>\n<li
151
+ id=\"menu-item-151\" class=\"menu-item menu-item-type-post_type menu-item-object-page\"><a
152
+ href=\"http://www.ablesolicitors.ie/news/\"><strong>News</strong></a></li>\n<li
153
+ id=\"menu-item-36\" class=\"menu-item menu-item-type-post_type menu-item-object-page\"><a
154
+ href=\"http://www.ablesolicitors.ie/contact/\"><strong>Contact</strong></a></li>\n</ul>\t\t\t\t
155
+ <!-- /DEFAULT NAVIGATION -->\n\t\t\t\t \n\t\t\t\t \n\t\t\t\t <!-- RESPONSIVE
156
+ NAVIGATION FLIP -->\n\t\t\t\t<form id=\"responsive-nav\" action=\"\" method=\"post\">\n\t\t\t\t<select
157
+ class=\"chzn-select\">\n\t\t\t\t<option value=\"\">Navigation</option>\n\t\t\t\t<option
158
+ value=\"http://www.ablesolicitors.ie/\">Home</option><option value=\"http://www.ablesolicitors.ie/practice-areas/\">Practice
159
+ Areas</option><option value=\"http://www.ablesolicitors.ie/our-people/\">Our
160
+ People</option><option value=\"http://www.ablesolicitors.ie/news/\">News</option><option
161
+ value=\"http://www.ablesolicitors.ie/contact/\">Contact</option>\t\t\t\t</select>\n\t\t\t\t</form>\n\t\t\t\t<!--
162
+ /END RESPONSIVE NAV -->\t\t\t</div> \n\t\t\t\n\t\t\t<hr class=\"remove-bottom\"/>\n\t\t</div>\n\t\t\n\t\t\t\n\t\t</header>\n\t\t<!--
163
+ /End Header -->\n\t\n\t</div>\n\t<!-- End 960 Container -->\n\t\n</div>\n<!--
164
+ End SuperContainer -->\n\n\n<!-- ==============================================
165
+ -->\n\n<!-- ============================================== -->\n\n\n<!-- FlexSlider
166
+ -->\n\t<!-- Super Container -->\n<div class=\"super-container full-width main-content-area\"
167
+ id=\"section-slider\">\n\n\t<!-- 960 Container -->\n\t<div class=\"container\">\n\t\t\n\t\t<!--
168
+ FlexSlider -->\n\t\t<div class=\"sixteen columns\">\n\t\t\t\n\t\t\t\t\t\t\n\t\t\t<div
169
+ class=\"slider-shadow\">\n\t\t\t\t<div class=\"flexslider-container\">\n\t\t\t\t\t<div
170
+ class=\"flexslider\"> \n\t\t\t\t\t <ul class=\"slides\">\n\t\t\t\t\t \n\t\t\t\t\t\t
171
+ \ <li>\n\t\t\t\t\t\t <img src=\"http://ablesolicitors.ie/new/wp-content/uploads/2012/04/banner-home1.jpg\"
172
+ alt=\"\" />\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t </li> \n\t\t\t\t\t\t <li>\n\t\t\t\t\t\t
173
+ \ <img src=\"http://ablesolicitors.ie/new/wp-content/uploads/2012/04/banner-home2.jpg\"
174
+ alt=\"\" />\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t </li> \n\t\t\t\t\t\t <li>\n\t\t\t\t\t\t
175
+ \ <img src=\"http://ablesolicitors.ie/new/wp-content/uploads/2012/04/banner-home3.jpg\"
176
+ alt=\"\" />\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t </li> \n\t\t\t\t\t\t <li>\n\t\t\t\t\t\t
177
+ \ <img src=\"http://ablesolicitors.ie/new/wp-content/uploads/2012/04/banner-home4.jpg\"
178
+ alt=\"\" />\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t </li>\t\t\t\t\t </ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\t\t\t</div>\n\t\t\t\n\t\t\t\t\t\t\n\t\t</div>\t\t\n\t\t<!--
179
+ /End Full Width Slider-->\n\n\t</div>\n\t<!-- /End 960 Container -->\n\t\n</div>\n<!--
180
+ /End Super Container -->\t\n\n\n<!-- ==============================================
181
+ -->\n\n\n<!-- Super Container - Three Column Row - Content comes from OptionTree
182
+ -->\n<div class=\"super-container full-width featurerow\">\n\n\t<!-- 960 Container
183
+ -->\n\t<div class=\"container\">\t\n\t\n\t\t<div class=\"sixteen columns\">\t\n\t\n\t\t\t<div
184
+ class=\"feature\">\n\t\t\t\t\t\t \n\t\t\t\t<style type=\"text/css\">.featurerow
185
+ .feature{text-align: center;}</style>\n\t\t\t\t\t\t\n\t\t\t<h3 style=\"text-align:
186
+ center;\"><span style=\"color: #000080;\">Property, Personal Injury, Wills
187
+ &amp; Probate, </span></h3>\r\n<h3 style=\"text-align: center;\"><span style=\"color:
188
+ #000080;\">Wards of Court, Corporate Law, Employment Law,</span></h3>\r\n<h3
189
+ style=\"text-align: center;\"><span style=\"color: #000080;\">Defamation,
190
+ Family Law, Notary Public Services<br /></span></h3></div>\n\t\t\n\t\t\t<br
191
+ class=\"clearfix\" />\n\t\t\t<hr />\n\t\t\t\n\t\t\t\n\t\t</div>\n\t\t\n\t</div>\n\t<!--
192
+ /End 960 Container -->\n\n</div>\n<!-- /End Super Container -->\n\t\n\n\n\n<!--
193
+ ============================================== -->\n\n\n\n<!-- Super Container
194
+ - Three Column Row - Content comes from OptionTree -->\n<div class=\"super-container
195
+ full-width\" id=\"section-thirds\">\n\n\t<!-- 960 Container -->\n\t<div class=\"container\">\t\t\n\t\t\n\t\t\t\t\n\t\t<!--
196
+ 1/3 Columns -->\n\t\t<div class=\"one-third column\">\t\t\t\t\n\t\t\t<div
197
+ class=\"module\">\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t<div class=\"module-meta\">\n\t\t\t\t\t<h4
198
+ style=\"text-align: center; font-family: Trebuchet MS, Gill Sans, Gill Sans
199
+ MT, Helvetica, sans-serif !important;\"><a href=\"\">About Us</a></h4>\t\n\t\t\t\t\t<p><p
200
+ style=\"text-align: justify;\"><strong>Able Solicitors is an Irish law firm
201
+ situated in Inchicore, Dublin 8.</strong></p>\r\n<p style=\"text-align: justify;\"><strong>Our
202
+ Mission Statement is, <em>\"To uphold the legal rights of all our clients
203
+ before the law and to treat all clients equally with respect, integrity and
204
+ the utmost professionalism.\"</em> </strong></p>\r\n<p style=\"text-align:
205
+ justify;\">We are committed to providing a top-class legal service while ensuring
206
+ that our fees and outlays are maintained at a competitive level throughout.
207
+ Our clients are drawn from all over Ireland and internationally as we can
208
+ conduct our business with you from our friendly offices in Dublin 8 or on-line
209
+ via electronic means.</p>\r\n<p style=\"text-align: justify;\">We represent
210
+ clients of all ages, creeds and values from the purchase of their first property
211
+ to representation in the Irish Courts. We are focussed on providing expert
212
+ and efficient legal solutions while upholding our fundamental philosophy of
213
+ a client-centred approach. Why not see what we can do for you?</p></p>\n\t\t\t\t</div>\t\t\t\t\t\t\n\t\t\t</div>\t\t\t\t\n\t\t</div>\n\n\t\t<div
214
+ class=\"one-third column\">\t\t\t\t\n\t\t\t<div class=\"module\">\n\t\t\t\t\t\t\t\t<div
215
+ class=\"module-meta\">\n\t\t\t\t\t<h4 style=\"text-align: center; font-family:
216
+ Trebuchet MS, Gill Sans, Gill Sans MT, Helvetica, sans-serif !important;\"><a
217
+ href=\"\">What Our Clients Say...</a></h4>\t\n\t\t\t\t\t<p><p style=\"text-align:
218
+ justify;\"><strong>G. Redden</strong><em>~</em></p>\r\n<p style=\"text-align:
219
+ justify;\"><em>Brilliant lady solicitor, very down to earth with a no nonsense
220
+ approach. Joanne advised me of all the legal options available to me and defended
221
+ me to the last</em> <em>in my family law proceedings.</em></p>\r\n<p style=\"text-align:
222
+ justify;\"><strong>Vicky Kelly~</strong></p>\r\n<p style=\"text-align: justify;\"><em>An
223
+ expert firm of probate lawyers, who finalised the Wardship application for
224
+ my mother. I can't thank your staff enough for the kindness and efficiency
225
+ shown to my family throughout this trying time.</em></p>\r\n<p style=\"text-align:
226
+ justify;\"><strong>D.F~</strong></p>\r\n<p style=\"text-align: justify;\"><em>I
227
+ just want to express my sincere thanks for all of your hard work with my personal
228
+ injury claim. The settlement has given me some level of justice for the injuries
229
+ I suffered.</em></p></p>\n\t\t\t\t</div>\t\t\t\t\t\t\n\t\t\t</div>\t\t\t\t\n\t\t</div>\n\n\t\t<div
230
+ class=\"one-third column\">\t\t\t\t\n\t\t\t<div class=\"module\">\t\n\t\t\t\t\t\t\t\t<div
231
+ class=\"module-meta\">\n\t\t\t\t\t<h4 style=\"text-align: center; font-family:
232
+ Trebuchet MS, Gill Sans, Gill Sans MT, Helvetica, sans-serif !important;\"><a
233
+ href=\"\">We Want to Hear From You!</a></h4>\t\n\t\t\t\t\t<p><div class=\"wpcf7\"
234
+ id=\"wpcf7-f142-t1-o1\"><form action=\"/#wpcf7-f142-t1-o1\" method=\"post\"
235
+ class=\"wpcf7-form\" novalidate=\"novalidate\">\n<div style=\"display: none;\">\n<input
236
+ type=\"hidden\" name=\"_wpcf7\" value=\"142\" />\n<input type=\"hidden\" name=\"_wpcf7_version\"
237
+ value=\"3.4.2\" />\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f142-t1-o1\"
238
+ />\n<input type=\"hidden\" name=\"_wpnonce\" value=\"4f9d0007a5\" />\n</div>\n<p>Your
239
+ Name (required)<br />\n <span class=\"wpcf7-form-control-wrap your-name\"><input
240
+ type=\"text\" name=\"your-name\" value=\"\" size=\"40\" class=\"wpcf7-form-control
241
+ wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" /></span>
242
+ </p>\n<p>Your Email (required)<br />\n <span class=\"wpcf7-form-control-wrap
243
+ your-email\"><input type=\"email\" name=\"your-email\" value=\"\" size=\"40\"
244
+ class=\"wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required
245
+ wpcf7-validates-as-email\" aria-required=\"true\" /></span> </p>\n<p>Your
246
+ Message<br />\n <span class=\"wpcf7-form-control-wrap your-message\"><textarea
247
+ name=\"your-message\" cols=\"40\" rows=\"10\" class=\"wpcf7-form-control wpcf7-textarea\"></textarea></span>
248
+ </p>\n<p><input type=\"submit\" value=\"Send\" class=\"wpcf7-form-control
249
+ wpcf7-submit\" /></p>\n<div class=\"wpcf7-response-output wpcf7-display-none\"></div></form></div></p>\n\t\t\t\t</div>\t\t\t\t\t\t\n\t\t\t</div>\t\t\t\t\n\t\t</div>\t\t\n\t\t<!--
250
+ /End 1/3 Columns -->\n\t\t\n\t</div>\n\t<!-- /End 960 Container -->\n\n</div>\n<!--
251
+ /End Super Container -->\n\t\n\n\n<!-- ==============================================
252
+ -->\n\n\n<!-- Breakout Row -->\n\t\n\n\n<!-- ==============================================
253
+ -->\n\n\n<!-- Super Container | Footer Widget Space (Optional) -->\n<div class=\"super-container
254
+ full-width\" id=\"section-footer\">\t\t\n\n\t<!-- 960 Container -->\n\t<div
255
+ class=\"container\">\n\t\n\t\t<!-- footer -->\n\t\t<footer>\n\t\t<div class=\"sixteen
256
+ columns\" id=\"footer\">\n\t\t\t\n\t\t\t<hr /> \t\t\t\n\t\t\t\n\t\t\t<!--
257
+ 1/4 -->\n\t\t\t<div class=\"five columns alpha\">\n\t\t\t\t\t\t\t</div>\n\t\t\t<!--
258
+ /End 1/4 -->\n\t\t\t\n\t\t\t<!-- 2/4 -->\n\t\t\t<div class=\"five columns\">\n\t\t\t\t\t\n\t\t\t</div>\n\t\t\t<!--
259
+ /End 2/4 -->\n\t\t\t\n\t\t\t<!-- 3/4 -->\n\t\t\t<div class=\"three columns\">\n\t\t\t\t\t\t\t</div>\n\t\t\t<!--
260
+ /End 3/4 -->\t\t\n\t\t\t\n\t\t\t\n\t\t\t<!-- 4/4 -->\n\t\t\t<div class=\"three
261
+ columns omega\">\n\t\t\t\t\t\t\t</div>\n\t\t\t<!-- /End 4/4 -->\t\t\t\n\t\t\t\n\t\t\t\n\t\t</div>\n\t\t</footer>\n\t\t<!--
262
+ /End Footer -->\t\t\n\n\t</div>\n\t<!-- /End 960 Container -->\n\t\n</div>\n<!--
263
+ /End Super Container -->\n\n\n<!-- ==============================================
264
+ -->\n\n\n<!-- Super Container - SubFooter Space -->\n<div class=\"super-container
265
+ full-width\" id=\"section-sub-footer\">\t\t\n\n\t<!-- 960 Container -->\n\t<div
266
+ class=\"container\">\n\n\t\t<div class=\"sixteen columns\">\t\n\t\t\t\n\t\t\t\n\t\t\t\t<span
267
+ class=\"copyright\"><div>\r\n<h2><strong>Magdalene Laundries</strong></h2>\r\n</div>\r\n<hr
268
+ />\r\n<h2 style=\"text-align: justify;\"><strong style=\"font-size: 13px;\">21
269
+ February 2013</strong></h2>\r\n<p style=\"text-align: justify;\"><strong>The
270
+ recent publication of the McAleese Report into the</strong></p>\r\n<p style=\"text-align:
271
+ justify;\"><strong>Magdalene Laundries expressly states that there was </strong></p>\r\n<p
272
+ style=\"text-align: justify;\"><strong>widespread abuse levied against the
273
+ women within these </strong></p>\r\n<p style=\"text-align: justify;\"><strong>laundries
274
+ from 1922 to 1996 .<a href=\"http://www.ablesolicitors.ie/magdalene-laundries/
275
+ \">Read More....</a></strong></p></span>\t\t\t\t\t\t\t\t<ul class=\"social\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li><a
276
+ target=\"_blank\" href=\"http://www.facebook.com/able.solicitors\"><img src=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/images/theme/social-icons/facebook_32.png\"
277
+ alt=\"facebook\" title=\"Facebook\" /></a></li>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li><a
278
+ target=\"_blank\" href=\"http://www.linkedin.com/profile/view?id=110433579&goback=%2Enmp_*1_*1_*1_*1_*1_*1_*1_*1_*1&trk=spm_pic\"><img
279
+ src=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/images/theme/social-icons/linkedin_32.png\"
280
+ alt=\"linkedin\" title=\"LinkedIn\" /></a></li>\t\t\t\t\t<li><a target=\"_blank\"
281
+ href=\"http://www.ablesolicitors.ie/feed/\" target=\"_blank\"><img src=\"http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/images/theme/social-icons/rss_32.png\"
282
+ alt=\"RSS\" title=\"RSS\" /></a></li>\n\t\t\t\t</ul>\n\t\t\t\t\t\t\t\t<span
283
+ class=\"colophon\"><div>\r\n<h2>News</h2>\r\n</div>\r\n<hr />\r\n<h4><span
284
+ style=\"text-decoration: underline;\">Woman bringing case over defective hip
285
+ implacts</span></h4>\r\n<p style=\"text-align: justify;\">30th January 2013</p>\r\n<p
286
+ style=\"text-align: justify;\">A woman who had two hip replacement operations
287
+ intends</p>\r\n<p style=\"text-align: justify;\">to bring what is expected
288
+ to be the first of many cases over</p>\r\n<p style=\"text-align: justify;\">allegedly
289
+ defective hip implants.Irene Pierson is one of thousands</p>\r\n<p style=\"text-align:
290
+ justify;\">of people who had DePuy Orthopaedics <a href=\"http://www.ablesolicitors.ie/woman-bringing-first-case-over-allegedly-defective-hip-implants/\">Read
291
+ More </a></p></span>\t\t</div>\n\n\t</div>\n\t<!-- /End 960 Container -->\n\t\n</div>\n<!--
292
+ /End Super Container -->\n\n\n\n<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.min.js?ver=1.7'></script>\n<script
293
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/tabs.js'></script>\n<script
294
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/jquery.flexslider-min.js'></script>\n<script
295
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/filterable.pack.js'></script>\n<script
296
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/jquery.prettyPhoto.js'></script>\n<script
297
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/jquery.hoverIntent.js'></script>\n<script
298
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/superfish.js'></script>\n<script
299
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/supersubs.js'></script>\n<script
300
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/chosen/chosen.jquery.js?ver=0.9'></script>\n<script
301
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/jquery.tipsy.js'></script>\n<script
302
+ type='text/javascript' src='http://www.ablesolicitors.ie/wp-content/themes/reaction/assets/javascripts/skeleton-key.js'></script>\n\n\t<style
303
+ type=\"text/css\">\n\t\tselect.chzn-select {\n\t\theight: 30px;\n\t\tpadding:
304
+ 6px;\n\t\twidth: 100%; }\n\t</style>\n\n\n\t\t\t\t\t<!-- Default Portfolio
305
+ View - Grabs the variable set in the template-xxx.php files -->\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t<script
306
+ type=\"text/javascript\">\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t(function($) {\n\t\t\t\t\t\t\t\t
307
+ // Grid View Defaults \n\t\t\t\t\t\t\t\t //\t $(\"#portfolio-list .module-container\").removeClass(\"sixteen
308
+ columns\").addClass(\"four columns\");\n\t\t\t\t\t\t\t\t //\t $(\"#portfolio-list
309
+ .module-img\").removeClass(\"twelve columns alpha\");\n\t\t\t\t\t\t\t\t //\t
310
+ $(\"#portfolio-list .module-meta\").fadeOut(100).removeClass(\"four columns
311
+ alpha omega visible\");\n\t\t\t\t\t\t\t\t\t jQuery(\".list_btn\").css(\"opacity\",\"1\");\n\t\t\t\t\t\t\t\t\t
312
+ jQuery(\".hybrid_btn\").css(\"opacity\",\"1\");\n\t\t\t\t\t\t\t\t\t jQuery(\".grid_btn\").css(\"opacity\",\"0.5\");\n\t\t\t\t\t\t\t})(jQuery);\n\t\t\t\t\t\t</script>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t<!--
313
+ End Default Portfolio View -->\n\n</body>\n</html>"
314
+ http_version:
315
+ recorded_at: Fri, 09 Aug 2019 15:10:56 GMT
316
+ recorded_with: VCR 3.0.3