periodic_table 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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
+ # development environment upon cd'ing into the directory
5
+
6
+ # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
7
+ environment_id="ruby-1.9.3-p0@periodic_table"
8
+
9
+ #
10
+ # Uncomment following line if you want options to be set only for given project.
11
+ #
12
+ # PROJECT_JRUBY_OPTS=( --1.9 )
13
+
14
+ #
15
+ # First we attempt to load the desired environment directly from the environment
16
+ # file. This is very fast and efficient compared to running through the entire
17
+ # CLI and selector. If you want feedback on which environment was used then
18
+ # insert the word 'use' after --create as this triggers verbose mode.
19
+ #
20
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
21
+ && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
22
+ then
23
+ \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
24
+
25
+ if [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]]
26
+ then
27
+ . "${rvm_path:-$HOME/.rvm}/hooks/after_use"
28
+ fi
29
+ else
30
+ # If the environment file has not yet been created, use the RVM CLI to select.
31
+ if ! rvm --create use "$environment_id"
32
+ then
33
+ echo "Failed to create RVM environment '${environment_id}'."
34
+ return 1
35
+ fi
36
+ fi
37
+
38
+ #
39
+ # If you use an RVM gemset file to install a list of gems (*.gems), you can have
40
+ # it be automatically loaded. Uncomment the following and adjust the filename if
41
+ # necessary.
42
+ #
43
+ # filename=".gems"
44
+ # if [[ -s "$filename" ]]
45
+ # then
46
+ # rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
47
+ # fi
48
+
49
+ # If you use bundler, this might be useful to you:
50
+ # if [[ -s Gemfile ]] && ! command -v bundle >/dev/null
51
+ # then
52
+ # printf The
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in periodic_table.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # Periodic Table
2
+
3
+ ## Installation
4
+
5
+ gem install periodic_table
6
+
7
+ ## Usage
8
+
9
+ require 'periodic_table'
10
+
11
+ # Lookup data for an element by name
12
+ PeriodicTable.lookup 'oxygen'
13
+
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
@@ -0,0 +1,8 @@
1
+ require 'periodic_table/version'
2
+ require 'periodic_table/periodic_table_api'
3
+
4
+ module PeriodicTable
5
+ def self.lookup(element_name)
6
+ PeriodicTableApi.new.query(element_name)
7
+ end
8
+ end
@@ -0,0 +1,47 @@
1
+ require 'savon'
2
+
3
+ module PeriodicTable
4
+ class PeriodicTableApi
5
+ def initialize
6
+ @client = Savon::Client.new do
7
+ wsdl.document = 'http://www.webservicex.net/periodictable.asmx?WSDL'
8
+ end
9
+ end
10
+
11
+ def query(element_name)
12
+ api_response = @client.request :get_atomic_number do
13
+ soap.body = {'ElementName' => element_name}
14
+ end
15
+ result = api_response.to_hash[:get_atomic_number_response][:get_atomic_number_result]
16
+ ApiResponse.new(result)
17
+ end
18
+ end
19
+
20
+ # Wow, this is ugly. I did not expect nested XML.
21
+ class ApiResponse
22
+ attr_reader :atomic_weight,
23
+ :symbol,
24
+ :atomic_number,
25
+ :element_name,
26
+ :boiling_point,
27
+ :ionisation_potential,
28
+ :electro_negativity,
29
+ :atomic_radius,
30
+ :melting_point,
31
+ :density
32
+
33
+ def initialize(result)
34
+ xml = Nokogiri::XML.parse(result)
35
+ @atomic_weight = xml.at('AtomicWeight').text
36
+ @symbol = xml.at('Symbol').text
37
+ @atomic_number = xml.at('AtomicNumber').text
38
+ @element_name = xml.at('ElementName').text
39
+ @boiling_point = xml.at('BoilingPoint').text
40
+ @ionisation_potential = xml.at('IonisationPotential').text
41
+ @electro_negativity = xml.at('EletroNegativity').text
42
+ @atomic_radius = xml.at('AtomicRadius').text
43
+ @melting_point = xml.at('MeltingPoint').text
44
+ @density = xml.at('Density').text
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ module PeriodicTable
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "periodic_table/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "periodic_table"
7
+ s.version = PeriodicTable::VERSION
8
+ s.authors = ["Stephen Ball"]
9
+ s.email = ["sdball@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Provide periodic table data.}
12
+ s.description = %q{Provide data on elements in the periodic table.}
13
+
14
+ s.rubyforge_project = "periodic_table"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency 'rake'
23
+ s.add_development_dependency 'rspec'
24
+
25
+ s.add_runtime_dependency 'savon'
26
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe PeriodicTable do
4
+ it "should return data for a named element" do
5
+ element_data = PeriodicTable.lookup('oxygen')
6
+ element_data.should_not be_nil
7
+ element_data.symbol.should == 'O'
8
+ element_data.atomic_weight.should == '15.9994'
9
+ end
10
+ end
@@ -0,0 +1 @@
1
+ require 'periodic_table'
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: periodic_table
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Stephen Ball
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &2152161260 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *2152161260
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &2152160420 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2152160420
36
+ - !ruby/object:Gem::Dependency
37
+ name: savon
38
+ requirement: &2152159060 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2152159060
47
+ description: Provide data on elements in the periodic table.
48
+ email:
49
+ - sdball@gmail.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - .gitignore
55
+ - .rvmrc
56
+ - Gemfile
57
+ - README.md
58
+ - Rakefile
59
+ - lib/periodic_table.rb
60
+ - lib/periodic_table/periodic_table_api.rb
61
+ - lib/periodic_table/version.rb
62
+ - periodic_table.gemspec
63
+ - spec/lib/periodic_table_spec.rb
64
+ - spec/spec_helper.rb
65
+ homepage: ''
66
+ licenses: []
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ requirements: []
84
+ rubyforge_project: periodic_table
85
+ rubygems_version: 1.8.10
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: Provide periodic table data.
89
+ test_files:
90
+ - spec/lib/periodic_table_spec.rb
91
+ - spec/spec_helper.rb