Class: MathMetadata::Site
- Inherits:
-
Object
- Object
- MathMetadata::Site
- Defined in:
- lib/math_metadata_lookup/site.rb
Overview
Abstract class. Inherit in your sites definition.
Class Method Summary collapse
-
.inherited(site) ⇒ Object
register new site class.
Instance Method Summary collapse
-
#article(args = {}) ⇒ Object
search for articles.
-
#author(args = {}) ⇒ Object
search for authors.
-
#initialize(opts = {}) ⇒ Site
constructor
A new instance of Site.
- #to_json ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Site
Returns a new instance of Site.
16 17 18 |
# File 'lib/math_metadata_lookup/site.rb', line 16 def initialize( opts={} ) @options = { :verbose => true }.merge(opts) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args) ⇒ Object (protected)
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/math_metadata_lookup/site.rb', line 68 def method_missing(meth, *args) page = args.first case meth.to_s when /^list_of_(.*)\?$/ re = eval("self.class::LIST_OF_#{$1.upcase}_RE") return page =~ re when /^get_(.*)_m$/ re = eval("self.class::#{$1.upcase}_RE") re_s = eval("self.class::#{$1.upcase}S_RE") m, n = args[1,2] m ||= 1 n ||= 1 res = [] page.scan(re_s) do |match| entry = [] m.times {|i| entry << match[i].to_s.strip} entry << [] match[m].scan(re) do |form| n.times {|i| entry[m] << form[i]} end if match[m] res << entry end return res when /^get_(.*)_s$/ res = [] what = $1 re = eval("self.class::#{what.upcase}_RE") re_s = eval("self.class::#{what.upcase}S_RE") page =~ re_s entries = $1 entries.to_s.strip.scan(re) do |match| res << match[0].to_s.strip end return res when /^get_(.*)$/ match = eval("self.class::#{$1.upcase}_RE").match(page).to_a.map{|x| x.to_s.strip} match.shift return match.first if args[1].to_i <= 1 return match end end |
Class Method Details
.inherited(site) ⇒ Object
register new site class
21 22 23 |
# File 'lib/math_metadata_lookup/site.rb', line 21 def self.inherited( site ) SITES << site end |
Instance Method Details
#article(args = {}) ⇒ Object
search for articles
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/math_metadata_lookup/site.rb', line 42 def article( args={} ) opts = {:id => nil, :title => "", :year => "", :authors => [], :references => true}.merge(args) page = fetch_article(opts) articles = [] return articles unless page if list_of_articles?(page) articles = get_article_list(page) else a = get_article(page, opts) articles << a unless a[:title].to_s.strip.empty? end #return [] if articles.size == 0 articles end |
#author(args = {}) ⇒ Object
search for authors
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/math_metadata_lookup/site.rb', line 27 def ( args={} ) opts = {:name => nil}.merge(args) anf = opts[:name] = [] anf.each do |af| entry = Author.new({:id => af[1], :preferred => af[0], :forms => af[2]}) << entry unless entry[:id].to_s.strip.empty? end end |
#to_json ⇒ Object
61 62 63 |
# File 'lib/math_metadata_lookup/site.rb', line 61 def to_json "" end |