rmtools 1.2.7 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.txt CHANGED
@@ -1,5 +1,5 @@
1
- Copyright (c) 2010-2011
2
- Shinku <tinbka@gmail.com>
1
+ Copyright (c) 2010-2012
2
+ Baev Sergey <tinbka@gmail.com>
3
3
 
4
4
  This work is licensed under the same license as Ruby language.
5
5
 
@@ -8,6 +8,28 @@ Methods for basic classes addon collection.
8
8
 
9
9
  == CHANGES
10
10
 
11
+ == Version 1.2.8
12
+
13
+ * StringScanner#each changed to compare `cbs' keys with @matched by number in ruby 1.8 and by first character in ruby 1.9, since ?x in 1.9 returns string instead of a charcode
14
+ * Updated LibXML::XML::XPath to search elements with multiple classes
15
+
16
+ == Version 1.2.7
17
+
18
+ * String#hl and #ghl: console-highlight pattern in string
19
+ * True#call and False#call in order to pass boolean values as callable argument
20
+ * ActiveRecord::Relation#any? and #empty?, ActiveRecord::Base.insert_unless_exist (using execute) and .select_rand
21
+ * Added couple of handlers into Array#method_missing
22
+ * File.modify now can process files by glob-patterns and correctly use multiple gsub! inside passed block
23
+ * RMTools.read now can read from list of files in order
24
+ * Upped RMTools.timer accuracy
25
+ * Optimized Array#-, #+, #& and #| for when one of arrays is empty; added Array#diff
26
+ * Optimized Object#to_json and String#from_json: use JSON stdlib for ruby 1.9. Object#to_json_safe: timeout'ed conversion
27
+ * String#cut_line and #split_to_lines optimized for use in Ruby 1.9
28
+ * Removed String#bytes because it duplicate ruby 1.9 method
29
+ * static VALUE rb_ary_count_items moved from Array#count to Array#arrange
30
+ * Fixed Module#self_name
31
+ * RMTools::CodeReader is still unstable though
32
+
11
33
  == Version 1.2.0
12
34
 
13
35
  * Renamed debug/ to dev/, slightly restructured lib/rmtools/ and require handlers: requrie 'rmtools' for common applications and 'rmtools_dev' for irb and maybe dev environment
data/Rakefile CHANGED
@@ -2,11 +2,11 @@ require 'rake'
2
2
  require 'lib/rmtools/install'
3
3
  compile_manifest
4
4
 
5
- RMTOOLS_VERSION = '1.2.7'
5
+ RMTOOLS_VERSION = '1.2.8'
6
6
  begin
7
7
  require 'hoe'
8
8
  config = Hoe.spec 'rmtools' do
9
- developer("Shinku", "tinbka@gmail.com")
9
+ developer("Sergey Baev", "tinbka@gmail.com")
10
10
 
11
11
  self.summary = 'Yet another Ruby applied lib'
12
12
  self.description = 'Applied library primarily for debug and text/arrays/files processing purposes.'
@@ -3,19 +3,19 @@ require 'active_support/core_ext/array'
3
3
  RMTools::require 'functional/fold'
4
4
 
5
5
  class Array
6
- # core methods overwrite
7
- # sometimes we cannot afford do zillions of cycles just for ensure A | [] = A - [] = A or A & [] = []
6
+ # builtin methods overwrite
7
+ # why should we do zillions of cycles just for ensure A | [] = A - [] = A or A & [] = []
8
8
  # though - and & should be improved within C-extension to break loop when no items have lost in self
9
9
  alias union |
10
- alias induction +
10
+ alias coallition +
11
11
  alias subtraction -
12
12
  alias intersection &
13
- private :union, :induction, :subtraction, :intersection
13
+ private :union, :coallition, :subtraction, :intersection
14
14
 
15
15
  def |(ary)
16
16
  if empty?
17
17
  ary.uniq
18
- elsif ary.respond_to?:empty? and ary.empty?
18
+ elsif ary.respond_to? :empty? and ary.empty?
19
19
  dup
20
20
  else union(ary)
21
21
  end
@@ -23,27 +23,27 @@ class Array
23
23
 
24
24
  def +(ary)
25
25
  if empty?
26
- if ary.respond_to?:empty? and ary.empty?
26
+ if ary.respond_to? :empty? and ary.empty?
27
27
  []
28
28
  else ary.dup
29
29
  end
30
- elsif ary.respond_to?:empty? and ary.empty?
30
+ elsif ary.respond_to? :empty? and ary.empty?
31
31
  dup
32
- else induction(ary)
32
+ else coallition(ary)
33
33
  end
34
34
  end
35
35
 
36
36
  def -(ary)
37
37
  if empty?
38
38
  []
39
- elsif ary.respond_to?:empty? and ary.empty?
39
+ elsif ary.respond_to? :empty? and ary.empty?
40
40
  dup
41
41
  else subtraction(ary)
42
42
  end
43
43
  end
44
44
 
45
45
  def &(ary)
46
- if empty? or (ary.respond_to?:empty? and ary.empty?)
46
+ if empty? or (ary.respond_to? :empty? and ary.empty?)
47
47
  []
48
48
  else intersection(ary)
49
49
  end
@@ -27,7 +27,7 @@ class StringScanner
27
27
  if cbs
28
28
  if cbs.is Hash
29
29
  while res
30
- if cb = cbs[matched.ord] || cbs[:~]
30
+ if cb = cbs[matched[0]] || cbs[:~]
31
31
  cb[self]
32
32
  @last = pos
33
33
  res = !eos? && scan_until(re)
@@ -5,16 +5,17 @@ module LibXML
5
5
  Finders = {}
6
6
 
7
7
  def self.filter(xpath)
8
- return xpath if xpath.ord == ?!
8
+ xpath = xpath.strip
9
+ return xpath[1..-1] if xpath[0] == ?!
9
10
  if x = Finders[xpath]; return x end
10
11
  if xpath[%r{\[@?\w+([^\w!]=).+?\]}]
11
12
  raise XML::Error, "can't process '#{$1}' operator"
12
13
  end
13
14
  x = xpath.dup
14
- x.gsub! %r{([^\\])\s*>\s*}, '\1/'
15
+ x.gsub! %r{([^\\]|\A)\s*>\s*}, '\1/'
15
16
  x.gsub! %r{([^\\])\s+}, '\1//'
16
- x.gsub! %r{\.([\w-]+)([\[\{/]|\Z)}, '[@class="\1"]\2'
17
- x.gsub! %r{#([\w-]+)([\[\{/]|\Z)}, '[@id="\1"]\2'
17
+ x.gsub! %r{(\.([\w-]+))+(?=[\[\{/]|\Z)} do |m| "[@class=\"#{m.split('.')[1..-1]*' '}\"]" end
18
+ x.gsub! %r{#([\w-]+)([\[\{/.]|\Z)}, '[@id="\1"]\2'
18
19
  x.gsub! %r{(^|/)([^.#\w*/'"])}, '\1*\2'
19
20
  x.gsub! %r{\[([a-z]+)}, '[@\1'
20
21
  x.gsub! %r{(\[(?:@\w+!?=)?)['"]?([^'"\]@]+)['"]?\]}, '\1"\2"]'
@@ -24,7 +25,7 @@ module LibXML
24
25
  }(\[(@\w+(!?="[^"]+")?|"[^"]+")\])*#{# attributes [@href!="pics/xynta.jpeg"]
25
26
  }(\[-?\d+\]|\{[^\}]+\})?#{ # inruby-filters (see finder functions ^)
26
27
  })+$}
27
- raise XML::Error, "can't process `#{xpath}`"
28
+ raise XML::Error, "can't process `#{xpath}`; #{x}"
28
29
  end
29
30
  x = '//'+x if x !~ %r{^[./]}
30
31
  x.sub! %r{^/}, './'
metadata CHANGED
@@ -1,21 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rmtools
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 7
10
- version: 1.2.7
9
+ - 8
10
+ version: 1.2.8
11
11
  platform: ruby
12
12
  authors:
13
- - Shinku
13
+ - Sergey Baev
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-18 00:00:00 Z
18
+ date: 2012-07-27 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rake