Commit Graph

556 Commits

Author SHA1 Message Date
Yorick Peterse 77bcf2f17b Generate stuff before building.
Kinda obvious.
2014-09-14 03:45:33 +02:00
Yorick Peterse ee538ddcc2 Merge pull request #34 from ttasanen/fix_comment
Fix function name in comment
2014-09-13 16:22:55 +02:00
Tero Tasanen 5979798356 Fix function name in comment 2014-09-13 16:22:06 +03:00
Yorick Peterse d082822cdc Removed the node_type method crap.
The logic this was used for now only resides in the pull parser, instead of
being exposed to the public.

This fixes #30.
2014-09-13 15:09:52 +02:00
Yorick Peterse 9ab5c302f7 Release 0.1.1. 2014-09-13 11:50:30 +02:00
Yorick Peterse b8a82b2094 Separate XML attributes by spaces.
This was originally reported by @jrochkind and partially patched by @billdueber.
My patches are built upon the latter, but without the need of using Array#map,
Array#join, etc. They also contain a few style changes.

This fixes #32 and #33.
2014-09-13 11:47:06 +02:00
Yorick Peterse dd47dd43a0 Example on querying XML namespaces. 2014-09-12 16:54:36 +02:00
Yorick Peterse 9d798ce7b9 Added XML namespaces to the features list. 2014-09-12 16:50:12 +02:00
Yorick Peterse 27d877ccce Updated the Gem description. 2014-09-12 14:40:01 +02:00
Yorick Peterse ddc6eb4819 Release 0.1.0. 2014-09-11 23:41:46 +02:00
Yorick Peterse 7a3655a43b Updated README intro + thread-safety section. 2014-09-11 23:39:10 +02:00
Yorick Peterse 019ba8c660 Set the initial version to 0.1.0. 2014-09-11 14:11:24 +02:00
Yorick Peterse 319d622fa5 Include namespaces when converting attrs to XML. 2014-09-11 14:03:04 +02:00
Yorick Peterse 32a7abd8c2 Corrected line about what kind of parser I want. 2014-09-11 01:12:18 +02:00
Yorick Peterse ad4850dfbd Corrected the contributing YARD link. 2014-09-11 00:13:44 +02:00
Yorick Peterse 9406a8651e Documentation chapter in the README. 2014-09-11 00:11:06 +02:00
Yorick Peterse 5ff7f39f08 Rake task for uploading documentation. 2014-09-11 00:10:58 +02:00
Yorick Peterse 0c61749c65 Added basic Nokogiri migration guide.
I will expand this over time, but it's a decent start for the time being.

This fixes #13.
2014-09-11 00:01:44 +02:00
Yorick Peterse c45d32a37e Methods for adding attributes to elements.
The methods XML::Element#add_attribute and XML::Element#set can be used to more
easily add attributes to elements. The first method simply adds an Attribute
instance and links it to the element. This allows for fine grained control over
what data the attribute should contain. The second method ("set") simply sets an
attribute based on a name and value, optionally creating the attribute if it
doesn't already exist.
2014-09-10 23:55:29 +02:00
Yorick Peterse 6cb2d54875 Added XML::Element#inner_text=
This method can be used to more easily set the text of an element, without
having to manually muck around with XML::Text instances.
2014-09-10 23:25:39 +02:00
Yorick Peterse cfbdf1bdb1 Removed YARD crap from Markdown files. 2014-09-10 22:46:58 +02:00
Yorick Peterse 98cd54685d Updated the Rubies to run Travis on. 2014-09-10 22:17:04 +02:00
Yorick Peterse 6d19c9b311 Added XML::Element#get
This method can be used to directly retrieve an attribute value.
2014-09-10 19:03:32 +02:00
Yorick Peterse e2dab952d0 Added XML::Node#before and XML::Node#after
These methods can be used to insert nodes before/after other nodes without
manually having to mess around with node sets.

This fixes #28.
2014-09-09 22:48:31 +02:00
Yorick Peterse e0f8965616 Rephrased parts of the README. 2014-09-09 21:04:50 +02:00
Yorick Peterse fccc6359e1 Corrected YARD formatting. 2014-09-09 00:47:51 +02:00
Yorick Peterse ef03a12f99 Optimize descendant-or-self and child axes.
By using NodeSet#concat we can further reduce the amount of object allocations.
This in turn greatly reduces the time it takes to query large documents using
descendant-or-self.
2014-09-05 20:20:13 +02:00
Yorick Peterse 9f6035e784 Reduce object allocations in on_axis_descendant
By using Traversal#each_node and _not_ calling on_test() (which was only called
for node_matches?) we can save ourselves a few object allocations.
2014-09-05 19:58:37 +02:00
Yorick Peterse 98984de540 Moved Document#each_node into a separate module.
This allows it to be re-used by XML::Node.
2014-09-05 19:42:38 +02:00
Yorick Peterse 8f562c24dd Use NodeSet#concat for descendant-or-self.
In a sample XML file this removes around 3400 NodeSet allocations.
2014-09-05 10:56:49 +02:00
Yorick Peterse bcdce306e5 Added NodeSet#concat.
This method allows two sets to be concatenated together without the need of
creating a 3rd node set (as is the case with NodeSet#+).
2014-09-05 10:07:22 +02:00
Yorick Peterse 8601cf6e74 Removed manifest from the Gemspec. 2014-09-04 14:02:56 +02:00
Yorick Peterse 1fdf876a93 Tweaked docs of the XPath code a bit. 2014-09-04 10:17:32 +02:00
Yorick Peterse d8e2b97031 Tweaked docs of the XML parsers. 2014-09-04 09:34:59 +02:00
Yorick Peterse 89689d9bb6 Basic example for the pull parser. 2014-09-04 00:32:39 +02:00
Yorick Peterse 404ae51fd5 Added a basic set of examples on using Oga. 2014-09-04 00:24:13 +02:00
Yorick Peterse 6c90749ec6 Updated XPath node in the README. 2014-09-04 00:15:41 +02:00
Yorick Peterse fbf3ae6e36 Manually increment XPath indexes.
This ensures that the index is only incremented for elements that match a node
test.
2014-09-03 23:56:13 +02:00
Yorick Peterse 81a62a6f00 Added XML::Attribute#text
This allows attributes to also be used for axes such as "=".
2014-09-03 23:38:00 +02:00
Yorick Peterse 9b8e9f49c6 Support for lexing empty attribute values.
This ensures that Oga can lex the following properly:

    <input value="" />

Previously Ragel would stop upon finding the empty string. This was caused due
to the string rules being declared as following:

    string_dquote = (dquote ^dquote+ dquote);
    string_squote = (squote ^squote+ squote);

These rules only match strings _with_ content, not without. Since Ragel stops
consuming input the moment it finds unhandled data this resulted in incorrect
tokens being emitted.
2014-09-03 23:10:50 +02:00
Yorick Peterse dc5874f5aa Show XML parsing errors when using IO as input.
Previously this wouldn't display anything due to the IO object being exhausted.
To fix this the input has to be wound back to the start, which means re-reading
it. Sadly I can't think of a way around this that doesn't require buffering
lines while parsing them (which massively increases memory usage).
2014-09-03 22:52:59 +02:00
Yorick Peterse d67f43508d Use #each_line instead of #lines.
IO#each_line is deprecated so lets not rely on it.
2014-09-03 22:31:54 +02:00
Yorick Peterse bd31379c85 Fixed processing of nested predicates.
This ensures that nested predicates and functions that depend on predicates are
processed correctly.
2014-09-03 20:56:07 +02:00
Yorick Peterse 3196050978 Specs for nested predicates & self axis. 2014-09-03 20:55:55 +02:00
Yorick Peterse e858b54c58 Use nested node stacks for predicates.
This ensures the current context node is set correctly when using the "self"
axis inside a path that's inside a predicate, e.g.

    foo/bar[baz/. = "something"]

Here the "self" axis should refer to foo/bar/baz, _not_ foo/bar.
2014-09-03 19:54:16 +02:00
Yorick Peterse 2b96d65103 XPath "self" axis inside predicates.
The "self" axis should use the current context node when inside a predicate.
2014-09-03 09:40:17 +02:00
Yorick Peterse 71f2b42074 Convenience methods for parsing XML/HTML. 2014-09-03 09:31:48 +02:00
Yorick Peterse efc3827865 Extended the inline JS lexer spec. 2014-09-03 09:26:12 +02:00
Yorick Peterse 49ddebf358 Tighten lexing of T_TEXT nodes.
Thanks to some heavy rubberducking with @whitequark the lexer is now a little
bit better at lexing T_TEXT nodes. For example, previously the following could
not be lexed properly:

    "foo < bar"

There might still be some tweaking to do but we're getting there.
2014-09-03 00:51:13 +02:00
Yorick Peterse 145315c26a Spec for inline JS and CDATA tags. 2014-09-03 00:34:10 +02:00