# [email protected] / 2013-08-21 09:38:08 +0200: > On Tue, 20 Aug 2013 12:48:26 +0200 > Lukas Ocilka <[email protected]> wrote: > > > On 08/19/2013 05:19 PM, Josef Reidinger wrote: > > > Hi, > > > because we have now ruby I want to show really simple way how we can > > > refactor existing code. I choose just simple example to be easy to > > > understand and on other hand full working. [1] > > > > > > There is two interesting points in it. > > > 1) using minitest for testing, its structure ( so you can imagine > > > how it looks ) and how it can be easy integrated with automake > > > ( nice part is that if you run `make check` then both testsuite is > > > run, old and new one > > > 2) Using ruby builtin regex, so we no longer need our own. > > > > Just to add some more info on this refactoring piece. Josef has used > > a standard Ruby Resolv [1] class to replace our built-in > > functionality. This will save our time in the future as we don't need > > to care about our own implementation and saves some space as well as > > our implementation was a duplicate to standard Ruby library which > > will be installed anyway. > > > > I like the idea and I expect that you will identify and replace > > more ;) This is actually something that anyone with a basic Ruby > > knowledge can do. It's could even be marked as, so called, junior job. > > > > Well, it is questionable if it is junior job, as there can be small > differences between ruby and our implementation, so it needs a lot of > testing of corner cases and good knowledge both implementations if > there is differences.
it's not exactly a groundbreaking job, and anybody doing it will need to know (through tests) behavior of both implementations. > And to be honest in this change I heavily believe in tests because > compare these two regexp is too much for my brain :) [1][2] expanding the quantifiers into branches, we get resolv.rb: /0 |1 |1[0-9] |1[0-9][0-9] |2 |2[0-4] |2[0-4][0-9] |25 |25[0-5] |2[6-9] |[3-9] |[3-9][0-9] /x IP.rb: /[0-9] |[1-9][0-9] |1[0-9][0-9] |2[0-4][0-9] |25[0-5] /x with a bit of shuffling around, resolv.rb version becomes /0 |1 |2 |[3-9] |1[0-9] |2[0-4] |25 |2[6-9] |[3-9][0-9] |1[0-9][0-9] |2[0-4][0-9] |25[0-5] /x which reduces to /[0-9] |[1-9][0-9] |1[0-9][0-9] |2[0-4][0-9] |25[0-5] /x => they're the same. > [1] https://github.com/ruby/ruby/blob/ruby_2_0_0/lib/resolv.rb#L2172 > [2] > https://github.com/yast/yast-yast2/blob/0e08c9b93c2c730e79ea36451ea715a5746dc5b2/library/types/src/modules/IP.rb#L63 -- roman -- To unsubscribe, e-mail: [email protected] To contact the owner, e-mail: [email protected]
