Yorick Peterse
62488e7291
Download Bundler manually on AppVeyor
2015-03-23 13:34:38 +01:00
Yorick Peterse
3cdcdf6daa
Corrected YARD formatting
2015-03-23 00:31:56 +01:00
Yorick Peterse
66fa9f62ef
Added LRU#maximum=/maximum
...
This allows one to change the maximum amount of keys stored in the
XPath/CSS caches, for example:
Oga::XPath::Parser::CACHE.maximum = 2056
2015-03-23 00:26:48 +01:00
Yorick Peterse
12aa21fb50
Use parse_with_cache when querying xpath/css
2015-03-23 00:23:46 +01:00
Yorick Peterse
2c4e490614
Added CSS/XPath Parser.parse_with_cache
...
This method parses and caches ASTs using Oga::LRU. Currently the default
of 1024 keys is used.
See #71 for more information.
2015-03-23 00:22:59 +01:00
Yorick Peterse
67d7d9af88
Added thread-safe LRU class
...
This class will be used for storing parser XPath/CSS ASTs.
See #71 for more information.
2015-03-23 00:21:52 +01:00
Yorick Peterse
45d84d31da
Renamed rspec helper files
2015-03-22 22:50:03 +01:00
Yorick Peterse
3bb67ddf28
XPath evaluation bench to test parsing times
...
This benchmark is simple enough that the overhead of evaluation is not
far greater than parsing. This makes it suitable for benchmarking the
performance increase of caching XPath ASTs.
2015-03-22 18:31:42 +01:00
Yorick Peterse
ad26446a5f
Removed Ragel Ruby patches
...
These are included in Ragel 6.9.
2015-03-22 15:32:29 +01:00
Yorick Peterse
88f3dfc749
Setup devkit for rake-compiler/Windows
2015-03-22 15:26:59 +01:00
Yorick Peterse
9efe1e7a41
CI section in the contributing guide
2015-03-22 14:04:51 +01:00
Yorick Peterse
ffe24bd991
Added AppVeyor config file
2015-03-22 14:04:04 +01:00
Yorick Peterse
2bf5fe3061
Updated extconf.rb for Windows support
2015-03-22 14:03:37 +01:00
Yorick Peterse
076d82507a
Added require 'bundler' for Bundler 1.9
...
See https://github.com/bundler/bundler/issues/3492 for more info.
2015-03-21 20:24:07 +01:00
Yorick Peterse
3969b5ef51
Expanded XPath/CSS examples in the README
...
Fixes #83
2015-03-21 01:36:10 +01:00
Yorick Peterse
31e93e54f9
Removed Mutex usage from XML::Text
...
Instead of trying to make this class thread-safe I'm going with the
option of simply declaring it unsafe to mutate instances of XML::Text
while reading it in parallel. This removes the need for Mutex
allocations and keeps the code simple.
Fixes #82
2015-03-21 01:27:00 +01:00
Yorick Peterse
c647f064b5
Remove remaining Racc parsing bits
2015-03-21 01:23:00 +01:00
Yorick Peterse
ed14981044
Ported the CSS parser to ruby-ll
2015-03-21 01:23:00 +01:00
Yorick Peterse
70e4942d3e
CSS parser spec for "+ b"
2015-03-21 01:23:00 +01:00
Yorick Peterse
2714dbe419
Use the ? operator in the XPath parser
2015-03-21 01:23:00 +01:00
Yorick Peterse
3b74a55d73
Use the ? operator in the XML parser
2015-03-21 01:23:00 +01:00
Yorick Peterse
a4be89aca7
Use ruby-ll 2.1 or newer
2015-03-21 01:23:00 +01:00
Yorick Peterse
2bbb7d2b10
Use new operators in the XML parser
...
This allows the removal of quite a bit of recursion based code.
2015-03-21 01:23:00 +01:00
Yorick Peterse
02da47c1f0
Replaced some XPath parser recursion with *
2015-03-21 01:23:00 +01:00
Yorick Peterse
3b06780802
Removed Racc based XPath parser
2015-03-21 01:23:00 +01:00
Yorick Peterse
588c225c53
Proper XPath operator parsing precedence
2015-03-21 01:23:00 +01:00
Yorick Peterse
6039e1dbeb
XPath parsing spec for axes with predicates
2015-03-21 01:23:00 +01:00
Yorick Peterse
7b8c596ccc
Require ruby-ll 2.0 or newer
2015-03-21 01:23:00 +01:00
Yorick Peterse
62fa2a9cc5
Spec for XPath functions inside predicates.
2015-03-21 01:23:00 +01:00
Yorick Peterse
0fa9d4df88
Ported remaining XPath parsing bits to ruby-ll.
...
Currently all operators are left-associative with no particular precedence. This
causes a few specs to fail for now. Outside of that the new parser should be
able to parse the same input as the Racc based parser.
2015-03-21 01:22:59 +01:00
Yorick Peterse
194d981996
XPath specs for paths with multiple members.
2015-03-21 01:22:59 +01:00
Yorick Peterse
4ebfc849a4
Start porting the XPath parser to ruby-ll.
...
There are still a few bits left to do such as supporting parenthesis and
assigning the correct precedence to the others.
2015-03-21 01:22:59 +01:00
Yorick Peterse
cbdaeb21f4
Unwrap a few lines in the XML parser.
2015-03-21 01:22:59 +01:00
Yorick Peterse
cfc6749556
Use splat instead of Array#unshift for attributes.
2015-03-21 01:22:59 +01:00
Yorick Peterse
c528a0d6a7
Build all branches on Travis.
2015-03-21 01:22:59 +01:00
Yorick Peterse
d210c9fb57
Compacted a few XML parser rules.
2015-03-21 01:22:59 +01:00
Yorick Peterse
a5cd75cb7e
Removed useless string allocs from the XML parser.
2015-03-21 01:22:59 +01:00
Yorick Peterse
fdcd712ffe
Don't use Array#uniq in NodeSet#initialize.
...
Removing this makes the process of parsing larger XML documents a bit faster.
The downside is that NodeSet#initialize will no longer filter out duplicate
nodes, though this is not something Oga itself relies upon.
Methods such as NodeSet#push still do ignore elements already present.
2015-03-21 01:22:59 +01:00
Yorick Peterse
c36b35ac0f
Skip ownership iteration when there's no owner.
...
There's no point in iterating over all the nodes and assigning ownership if
there's no owner to begin with.
2015-03-21 01:22:59 +01:00
Yorick Peterse
f83c03aaec
Fixed typo in NodeSet spec.
2015-03-21 01:22:59 +01:00
Yorick Peterse
9621fe1fc8
Moved changelog to the root directory.
2015-03-21 01:22:59 +01:00
Yorick Peterse
006ef4d51a
Port over most of the old XML error handling.
...
Some messages are a bit different due to ruby-ll's error handling, other than
that it's largely the same stuff as before.
2015-03-21 01:22:59 +01:00
Yorick Peterse
1a326fc516
Remove Racc based XML parser.
2015-03-21 01:22:59 +01:00
Yorick Peterse
1b9a4db268
Depend on ruby-ll 1.1 or newer.
2015-03-21 01:22:59 +01:00
Yorick Peterse
d8b9725b82
Fixed SAX parsing of XML attributes.
...
This was utterly broken, mainly due to me overlooking it. There are now 2 new
callbacks to handle this properly:
* on_attribute: to handle a single attribute/value pair
* on_attributes: to handle a collection of attributes (as returned by
on_attribute)
By default on_attribut returns a Hash, on_attributes in turn merges all
attribute hashes into a single one. This ensures that on_element _actually_
receives the attributes as a Hash, instead of an Array with random
nil/XML::Attribute values.
2015-03-21 01:22:59 +01:00
Yorick Peterse
605d565104
Use sax_parse_html for HTML documents.
...
I suspect the only reason this test ever passed due to Racc's error handling.
Either way this was using the wrong method.
2015-03-21 01:22:59 +01:00
Yorick Peterse
dd626c10d3
Use Array#unshift in the LL XML grammar.
...
Using Array#+ for large sets (e.g. in the benchmarks) is _really_ slow.
Interesting enough Array#unshift uses as much memory as the Racc parser and is
about as fast, even though it has to move memory around.
2015-03-21 01:22:59 +01:00
Yorick Peterse
f94407ee9d
Parser callback for XML attributes.
2015-03-21 01:22:59 +01:00
Yorick Peterse
a023b35e78
Fixed the pull parser for the XML LL parser.
2015-03-21 01:22:59 +01:00
Yorick Peterse
5eed0d31d6
Ported over most of the XML parser to ruby-ll.
...
This is still missing the error handling previously present.
2015-03-21 01:22:59 +01:00