<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: verse code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Thu, 28 Aug 2008 21:12:15 GMT</pubDate>
    <description>DZone Snippets: verse code</description>
    <item>
      <title>Get a bible passage from the Living Stones / Seek-First Web Service with Ruby</title>
      <link>http://snippets.dzone.com/posts/show/2185</link>
      <description>&lt;code&gt;&lt;br /&gt;require 'net/http'&lt;br /&gt;&lt;br /&gt;LS_BASE_URL = 'http://www.seek-first.com/Bible.php?q=&amp;passage=Seek'&lt;br /&gt;&lt;br /&gt;def lookup_ls(reference, translation) # living stones (KJV, ASV, YLT, AKJV, WEB)&lt;br /&gt;  return if reference.nil? or reference.empty?&lt;br /&gt;  url = LS_BASE_URL + '&amp;p=' + URI.escape(reference) + '&amp;version=' + translation&lt;br /&gt;  result = Net::HTTP.get(URI.parse(url))&lt;br /&gt;  url = /&lt;!\-\-\s*(http:\/\/api\.seek\-first\.com.+?)\s*\-\-&gt;/.match(result)[1]&lt;br /&gt;  result = Net::HTTP.get(URI.parse(url)).gsub(/\s+/, ' ').gsub(/&#226;&#8364;&#339;|&#226;&#8364;?/, '"').gsub(/&#226;&#8364;&#732;|&#226;&#8364;&#8482;/, "'").gsub('*', '')&lt;br /&gt;  text = result.scan(/&lt;Text&gt;(.+?)&lt;\/Text&gt;/).map { |p| p[0].strip.gsub(/&lt;.+?&gt;/, '') }.join(' ') rescue nil&lt;br /&gt;  return {:reference =&gt; reference, :text =&gt; text}&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 14 Jun 2006 20:53:11 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2185</guid>
      <author>timmorgan (Tim Morgan)</author>
    </item>
    <item>
      <title>Get a Bible passage from the ESV Web Service with Ruby</title>
      <link>http://snippets.dzone.com/posts/show/2068</link>
      <description>&lt;code&gt;&lt;br /&gt;require 'net/http'&lt;br /&gt;&lt;br /&gt;BASE_URL = 'http://www.gnpcb.org/esv/share/get/'&lt;br /&gt;OPTIONS = {&lt;br /&gt;  'key' =&gt; 'IP',&lt;br /&gt;  'action' =&gt; 'doPassageQuery',&lt;br /&gt;  'include-verse-numbers' =&gt; '0',&lt;br /&gt;  'include-short-copyright' =&gt; '0',&lt;br /&gt;  'output-format' =&gt; 'plain-text',&lt;br /&gt;  'include-passage-horizontal-lines' =&gt; '0',&lt;br /&gt;  'include-heading-horizontal-lines' =&gt; '0',&lt;br /&gt;  'include-passage-references' =&gt; '1',&lt;br /&gt;  'include-first-verse-numbers' =&gt; '0',&lt;br /&gt;  'include-footnotes' =&gt; '0',&lt;br /&gt;  'include-footnote-links' =&gt; '0',&lt;br /&gt;  'include-headings' =&gt; '0',&lt;br /&gt;  'include-subheadings' =&gt; '0',&lt;br /&gt;  'line-length' =&gt; '0',&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;def combine_refs(refs)&lt;br /&gt;  combined = refs.first&lt;br /&gt;  refs[1..-1].each do |ref|&lt;br /&gt;    if combined.index(ref.gsub(/\:.*$/, '')) == 0&lt;br /&gt;      combined += ',' + /\:(.*)$/.match(ref)[1]&lt;br /&gt;    elsif combined.index(ref.gsub(/\d+\:.*$/, '')) == 0&lt;br /&gt;      combined += ';' + /\d+\:.*$/.match(ref)[0]&lt;br /&gt;    else&lt;br /&gt;      return nil # couldn't do it - fail *not* gracefully&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  combined&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def lookup_esv(reference)&lt;br /&gt;  return if reference.nil? or reference.empty?&lt;br /&gt;  url = BASE_URL + '?' + OPTIONS.map { |name, value| "#{name}=#{value}" }.join('&amp;') + '&amp;passage=' + URI.escape(reference)&lt;br /&gt;  result = Net::HTTP.get(URI.parse(url))&lt;br /&gt;  if result =~ /^ERROR/&lt;br /&gt;    puts 'Error retrieving verse from web service'&lt;br /&gt;    nil&lt;br /&gt;  else&lt;br /&gt;    refs = []&lt;br /&gt;    result.scan(/^\S.+$/) {|ref| refs &lt;&lt; ref }&lt;br /&gt;    refs.each {|ref| result.gsub! ref, '' }&lt;br /&gt;    reference = combine_refs(refs)&lt;br /&gt;    text = result.gsub(/\s+/, ' ').strip&lt;br /&gt;    text = text.gsub(/"/, '') if (text.count('"') == 1 and text[0..0] == '"')&lt;br /&gt;    return {:reference =&gt; reference, :text =&gt; text}&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt; lookup_esv('John 3:16')&lt;br /&gt;=&gt; {:text=&gt;"For God so loved the world, that he gave his only Son, that whoever&lt;br /&gt;believes in him should not perish but have eternal life.", :reference=&gt;"John 3:16"}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 18 May 2006 03:24:42 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2068</guid>
      <author>timmorgan (Tim Morgan)</author>
    </item>
  </channel>
</rss>
