# # Copyright (c) 2005 Richard Cameron, CiteULike.org # All rights reserved. # # This code is derived from software contributed to CiteULike.org # by # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by # CiteULike and its # contributors. # 4. Neither the name of CiteULike nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY CITEULIKE.ORG AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # Each plugin needs a description so the driver can advertise the details # to the users on the site plugin { # Integer version number for the plugin code. When this number is incremented, # CiteULike may reparse all existing articles with the new code. version {2} # The name of the plugin, as displayed on the "CiteULike supports..." page name {MathSciNet} # The link the front page of this service url {http://www.ams.org/mathscinet/} # Any additional information which needs to be displayed to the user. # E.g. "Experimental support" blurb {} # Your name author {Richard Cameron} # Your email address email {camster@citeulike.org} # Language you wrote the plugin in language {tcl} # Regular expression to match URLs that the plugin is # *potentially* interested in. Any URL matching this regexp # will cause your parser to be invoked. Currently, this will # require fork()ing a process, so you should try to reduce the number # of false positives by making your regexp as restrictive as possible. # # If it is not possible to determine whether or not your plugin is # interested purely on the basis of the URL, you will have a chance # to refine this decision in your code. For now, try to make a reasonable # approximation - like, check for URLs on the right hostname # # Note: Some universities provide mirrors of commericial publishers' sites # with different hostnames, so you should provide some leeway in your # regexp if that applies to you.x regexp {http://www.ams.org/(msnmain|mathsci)} } # # Linkout formatting # # CiteULike doesn't store URLs for articles. # Instead it stores the raw ingredients required to build the dynamically. # Each plugin is required to define a small procedure which does this formatting # See the HOWTO file for more details. # # The variables following variables are defined for your use # in the function: type ikey_1 ckey_1 ikey_2 ckey_2 # format_linkout MSCI { return [list "MathSciNet" \ "http://www.ams.org/mathscinet-getitem?mr=$ikey_1" \ ] } # # TESTS # # Each plugin MUST provide a set of tests. The motivation behind this is # that web scraping code is inherently fragile, and is likely to break whenever # the provider decides to redisign their site. CiteULike will periodically # run tests to see if anything has broken. # Please provide as comprehensive a set of tests as possible. # If you ever fix a bug in the parser, it is highly recommended that # you add the offending page as a test case. test {http://www.ams.org/mathscinet/search/publdoc.html?=r=2&pg1=ISSI&s1=238619&r=1&l=20} { volume 79 linkout {MSCI 2206712 {} {} {}} year 2006 start_page 3 type JOUR end_page 13 formatted_url {MathSciNet http://www.ams.org/mathscinet-getitem?mr=2206712} issue 1 title "A bent for magic" journal "Math. Mag." author {Pasles Paul PC {Paul C. Pasles}} status ok } test {http://www.ams.org/mathscinet-getitem?mr=2262784} { volume 337 linkout {DOI {} 10.1007/s00208-006-0033-7 {} {}} linkout {MSCI 2262784 {} {} {}} year 2007 start_page 253 type JOUR end_page 293 formatted_url {DOI http://dx.doi.org/10.1007/s00208-006-0033-7} formatted_url {MathSciNet http://www.ams.org/mathscinet-getitem?mr=2262784} issue 2 title "Existence and uniqueness for $p$-area minimizers in the {H}eisenberg group" journal "Math. Ann." author {Cheng Jih JH {Jih Hsin Cheng}} author {Hwang Jenn JF {Jenn Fang Hwang}} author {Yang Paul P {Paul Yang}} status ok }