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
permalink #initialize(opts = {}) ⇒ Site
Returns a new instance of Site.
16 17 18 |
# File 'lib/math_metadata_lookup/site.rb', line 16 def initialize( opts={} ) = { :verbose => true }.merge(opts) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
permalink #method_missing(meth, *args) ⇒ Object (protected)
[View source]
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
permalink .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
permalink #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 |
permalink #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 |
permalink #to_json ⇒ Object
[View source]
61 62 63 |
# File 'lib/math_metadata_lookup/site.rb', line 61 def to_json "" end |