Sha256: 427ce3a8c170fcb64103fe82102ad16afbba66ad7609fc2d60731643251426b3
Contents?: true
Size: 1.68 KB
Versions: 1
Compression:
Stored size: 1.68 KB
Contents
module SoFarSoGood class Clause attr_reader :node def initialize(node) @node = node normalize! end def number @number ||= node.css("SECTNO").text.strip end def subject @subject ||= node.css("SUBJECT, RESERVED").text.strip end def reserved? @reserved ||= !node.css("RESERVED").text.empty? end alias_method :reserved, :reserved? def citation @citation ||= node.css("CITA").text.strip end def link @link ||= "http://www.law.cornell.edu/cfr/text/48/#{number}" end def extract(options = {}) options = {:format => :html}.merge(options) @extract ||= node.css("EXTRACT").inner_html if options[:format] == :markdown ReverseMarkdown.convert @extract else @extract end end def body(options = {}) options = {:format => :html}.merge(options) @body ||= node.css("> P").to_html if options[:format] == :markdown ReverseMarkdown.convert @body else @body end end def to_hash(options={}) { :number => number, :subject => subject, :reserverd => reserved, :citation => citation, :extract => extract(options), :body => body(options), :link => link } end def to_json(options = {}) to_hash(options).to_json(options) end def inspect "#<SoFarSoGood::Clause @number=\"#{@number}\" @subject=\"#{@subject}\" @reserved=\"#{@reserved}\"" end private def normalize! node.children.css("E").each { |n| n.name = "em" } node.children.css("HD").each { |n| n.name = "h3" } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
so_far_so_good-0.0.3 | lib/so_far_so_good/clause.rb |