This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
| a913af57 » | flavorjones | 2009-04-23 | 1 | # -*- coding: utf-8 -*- | |
| 7f2ae51a » | tenderlove | 2009-02-13 | 2 | # Modify the PATH on windows so that the external DLLs will get loaded. | |
| 3 | ENV['PATH'] = [File.expand_path( | ||||
| 4 | File.join(File.dirname(__FILE__), "..", "ext", "nokogiri") | ||||
| 454c543f » | tenderlove | 2009-05-07 | 5 | ), ENV['PATH']].compact.join(';') if RUBY_PLATFORM =~ /(mswin|mingw)/i | |
| 7f2ae51a » | tenderlove | 2009-02-13 | 6 | ||
| 836e526a » | flavorjones | 2009-04-30 | 7 | if ENV['NOKOGIRI_FFI'] || RUBY_PLATFORM =~ /java/ | |
| b2975514 » | flavorjones | 2009-05-11 | 8 | gem 'ffi', '>=0.4.0' unless RUBY_PLATFORM =~ /java/ | |
| 836e526a » | flavorjones | 2009-04-30 | 9 | require 'ffi' | |
| 10 | require 'nokogiri/ffi/libxml' | ||||
| 11 | else | ||||
| 2dd18529 » | tenderlove | 2009-05-24 | 12 | require 'nokogiri/nokogiri' | |
| 836e526a » | flavorjones | 2009-04-30 | 13 | end | |
| 7f2ae51a » | tenderlove | 2009-02-13 | 14 | ||
| 08450f39 » | tenderlove | 2008-08-19 | 15 | require 'nokogiri/version' | |
| 1f2d6372 » | tenderlove | 2009-05-13 | 16 | require 'nokogiri/version_warning' | |
| 597861f0 » | jmhodges | 2009-02-03 | 17 | require 'nokogiri/syntax_error' | |
| 34102644 » | tenderlove | 2008-07-18 | 18 | require 'nokogiri/xml' | |
| 5ff03ff3 » | tenderlove | 2008-08-24 | 19 | require 'nokogiri/xslt' | |
| 34102644 » | tenderlove | 2008-07-18 | 20 | require 'nokogiri/html' | |
| 221a44e7 » | tenderlove | 2008-09-15 | 21 | require 'nokogiri/decorators' | |
| 38d3bfbd » | tenderlove | 2008-09-17 | 22 | require 'nokogiri/css' | |
| 221a44e7 » | tenderlove | 2008-09-15 | 23 | require 'nokogiri/html/builder' | |
| 8a45571f » | flavorjones | 2008-09-15 | 24 | require 'nokogiri/hpricot' | |
| 35cace6b » | tenderlove | 2008-10-29 | 25 | ||
| 9d4a78eb » | tenderlove | 2009-03-13 | 26 | # Nokogiri parses and searches XML/HTML very quickly, and also has | |
| 27 | # correctly implemented CSS3 selector support as well as XPath support. | ||||
| 28 | # | ||||
| 29 | # Parsing a document returns either a Nokogiri::XML::Document, or a | ||||
| 30 | # Nokogiri::HTML::Document depending on the kind of document you parse. | ||||
| 31 | # | ||||
| 32 | # Here is an example: | ||||
| 33 | # | ||||
| 34 | # require 'nokogiri' | ||||
| 35 | # require 'open-uri' | ||||
| 36 | # | ||||
| 37 | # # Get a Nokogiri::HTML:Document for the page we’re interested in... | ||||
| 38 | # | ||||
| 39 | # doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove')) | ||||
| 40 | # | ||||
| 41 | # # Do funky things with it using Nokogiri::XML::Node methods... | ||||
| 42 | # | ||||
| 43 | # #### | ||||
| 44 | # # Search for nodes by css | ||||
| 45 | # doc.css('h3.r a.l').each do |link| | ||||
| 46 | # puts link.content | ||||
| 47 | # end | ||||
| 48 | # | ||||
| 49 | # See Nokogiri::XML::Node#css for more information about CSS searching. | ||||
| 50 | # See Nokogiri::XML::Node#xpath for more information about XPath searching. | ||||
| 9eebaa08 » | tenderlove | 2008-07-14 | 51 | module Nokogiri | |
| e7f98b6c » | tenderlove | 2008-07-14 | 52 | class << self | |
| 8b9daefb » | tenderlove | 2008-11-30 | 53 | ### | |
| 54 | # Parse an HTML or XML document. +string+ contains the document. | ||||
| 93761f99 » | tenderlove | 2008-10-15 | 55 | def parse string, url = nil, encoding = nil, options = nil | |
| 449e7c5a » | tenderlove | 2008-07-18 | 56 | doc = | |
| 57 | if string =~ /^\s*<[^Hh>]*html/i # Probably html | ||||
| 9a18d602 » | flavorjones | 2009-06-08 | 58 | Nokogiri::HTML::Document.parse(string, url, encoding, options || XML::ParseOptions::DEFAULT_HTML) | |
| 449e7c5a » | tenderlove | 2008-07-18 | 59 | else | |
| 9a18d602 » | flavorjones | 2009-06-08 | 60 | Nokogiri::XML::Document.parse(string, url, encoding, options || XML::ParseOptions::DEFAULT_XML) | |
| 449e7c5a » | tenderlove | 2008-07-18 | 61 | end | |
| 62 | yield doc if block_given? | ||||
| 63 | doc | ||||
| e7f98b6c » | tenderlove | 2008-07-14 | 64 | end | |
| 8a45571f » | flavorjones | 2008-09-15 | 65 | ||
| acddc4a8 » | tenderlove | 2009-04-25 | 66 | ### | |
| 67 | # Create a new Nokogiri::XML::DocumentFragment | ||||
| 93761f99 » | tenderlove | 2008-10-15 | 68 | def make input = nil, opts = {}, &blk | |
| 1c4e553b » | flavorjones | 2008-09-16 | 69 | if input | |
| 0dfe0255 » | tenderlove | 2009-02-05 | 70 | Nokogiri::HTML.fragment(input).children.first | |
| 1c4e553b » | flavorjones | 2008-09-16 | 71 | else | |
| 903a28d3 » | tenderlove | 2008-09-25 | 72 | Nokogiri(&blk) | |
| 1c4e553b » | flavorjones | 2008-09-16 | 73 | end | |
| 74 | end | ||||
| acddc4a8 » | tenderlove | 2009-04-25 | 75 | ||
| 8b9daefb » | tenderlove | 2008-11-30 | 76 | ### | |
| 77 | # Parse a document and add the Slop decorator. The Slop decorator | ||||
| 78 | # implements method_missing such that methods may be used instead of CSS | ||||
| 79 | # or XPath. For example: | ||||
| 80 | # | ||||
| 81 | # doc = Nokogiri::Slop(<<-eohtml) | ||||
| 82 | # <html> | ||||
| 83 | # <body> | ||||
| 84 | # <p>first</p> | ||||
| 85 | # <p>second</p> | ||||
| 86 | # </body> | ||||
| 87 | # </html> | ||||
| 88 | # eohtml | ||||
| 89 | # assert_equal('second', doc.html.body.p[1].text) | ||||
| 90 | # | ||||
| 46be2582 » | jbarnette | 2008-11-26 | 91 | def Slop(*args, &block) | |
| 92 | Nokogiri(*args, &block).slop! | ||||
| 93 | end | ||||
| 8a45571f » | flavorjones | 2008-09-15 | 94 | end | |
| 95 | end | ||||
| 96 | |||||
| acddc4a8 » | tenderlove | 2009-04-25 | 97 | ### | |
| 98 | # Parser a document contained in +args+. Nokogiri will try to guess what | ||||
| 99 | # type of document you are attempting to parse. For more information, see | ||||
| 100 | # Nokogiri.parse | ||||
| 101 | # | ||||
| 102 | # To specify the type of document, use Nokogiri.XML or Nokogiri.HTML. | ||||
| 8a45571f » | flavorjones | 2008-09-15 | 103 | def Nokogiri(*args, &block) | |
| 104 | if block_given? | ||||
| 1c4e553b » | flavorjones | 2008-09-16 | 105 | builder = Nokogiri::HTML::Builder.new(&block) | |
| a02964e4 » | tenderlove | 2009-02-13 | 106 | return builder.doc.root | |
| 8a45571f » | flavorjones | 2008-09-15 | 107 | else | |
| 33ab946e » | tenderlove | 2008-11-22 | 108 | Nokogiri.parse(*args) | |
| e7f98b6c » | tenderlove | 2008-07-14 | 109 | end | |
| 110 | end | ||||







