rexle 1.5.2 → 1.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/rexle.rb +18 -8
  5. metadata +45 -45
  6. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f239257d410072638cef76f46df1b34c82e48a3943a26d3986a860348ae68851
4
- data.tar.gz: f25ca91df0ff0d6834dad5f299aa28c3092304cfba4255c1d8843da5155c20ef
3
+ metadata.gz: f618c9f7362740fab8dd51fa97118b695effd37a7b1254992eb7bc45075256a9
4
+ data.tar.gz: 8fd18092107575476f66e8f46fc8251bd42a2bc9d0819867f2ba2ac4b292f47c
5
5
  SHA512:
6
- metadata.gz: 4e932b40fac8bea0781aa09100ca290b20e570d7555fde08c479501c83545bb60ca83aab475153c7699907f6c93eb732c159980e5140def6849ff4853b3ebac1
7
- data.tar.gz: e2d417076d437e471f8be50704767de864c0b4e7ebdb120551099aef9591d8b3c6a9a24513377055340e43647a7eea156db0b4493f8467b76b3e90ebbe29ab58
6
+ metadata.gz: b98a5b59400eb42f562725e87c982e086446fe5ed8fafa777ac68214e345350efe567bab0b0da3e3d43eed2283cf2f550cb59a8ed3f0b44ce5c62a5298193a78
7
+ data.tar.gz: d3ef38f3a5bb0cba758d98d5f7ef8618f93af4e40edea315a557c6133a7d3fdbb0420ea7441bdea06df8e787abf43314b3f1970ec05e1f2340a8676df734cc1a
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -13,6 +13,10 @@ require 'backtrack-xpath'
13
13
 
14
14
  # modifications:
15
15
 
16
+ # 11-May-2020: bug fix: Rexle#css now responds correctly to valid selectors
17
+ # 23-Apr-2020: feature: Added public method *plaintext*.
18
+ # 04-Feb-2020: minor bug fix: Element A is now defined as a non self-closing tag
19
+ # 18-Sep-2019: minor bug fix: &apos is now unescaped properly
16
20
  # 09-Jul-2019: minor improvement: A comment tag now has a
17
21
  # new line when pretty printed
18
22
  # 02-Feb-2019: feature: A comment tag can now have nested elements
@@ -99,7 +103,7 @@ module XMLhelper
99
103
 
100
104
  tag = x.name + (a.empty? ? '' : ' ' + a.join(' '))
101
105
 
102
- non_self_closing_tags = %w(script textarea iframe div object)
106
+ non_self_closing_tags = %w(script textarea iframe div object a)
103
107
 
104
108
  if (x.children and x.children.length > 0 \
105
109
  and not x.children.is_an_empty_string?) or \
@@ -205,6 +209,7 @@ class Rexle
205
209
  def initialize(x=nil, rexle: self, debug: false)
206
210
 
207
211
  @rexle, @debug = rexle, debug
212
+ $debug = @debug
208
213
 
209
214
  puts 'inside Rexle'.debug if debug
210
215
 
@@ -253,9 +258,7 @@ class Rexle
253
258
  a = selector.split(',').flat_map do |x|
254
259
  @doc.root.xpath RexleCSS.new(x).to_xpath
255
260
  end
256
-
257
- a.shift if self.kind_of? Rexle
258
-
261
+
259
262
  return a
260
263
  end
261
264
 
@@ -646,6 +649,7 @@ class Rexle
646
649
  attr_search = format_condition(condition) if condition \
647
650
  and condition.length > 0
648
651
 
652
+ puts ('1. attr_search: ' + attr_search.inspect).debug if $debug
649
653
  #@log.debug 'attr_search2 : ' + attr_search.inspect
650
654
  attr_search2 = xpath_value[/^\[(.*)\]$/,1]
651
655
 
@@ -710,6 +714,7 @@ class Rexle
710
714
  end
711
715
 
712
716
  elsif element_name.nil?
717
+ puts ('attr_search: ' + attr_search.inspect).debug if $debug
713
718
  return eval attr_search
714
719
  else
715
720
 
@@ -995,6 +1000,11 @@ class Rexle
995
1000
  def insert_before(node) insert(node) end
996
1001
  def last(a) a.last end
997
1002
  def map(&blk) self.children.map(&blk) end
1003
+
1004
+ def plaintext()
1005
+ xml().gsub(/<\/?[^>]+>/,'').gsub('&nbsp;',' ').gsub(/\n\s+/,' ')
1006
+ end
1007
+
998
1008
  def root() self end
999
1009
 
1000
1010
  def text(s='')
@@ -1016,7 +1026,7 @@ class Rexle
1016
1026
  r.map do |x|
1017
1027
  def x.unescape()
1018
1028
  s = self.to_s.clone
1019
- %w(&lt; < &gt; > &amp; & &pos; ').each_slice(2){|x| s.gsub!(*x)}
1029
+ %w(&lt; < &gt; > &amp; & &apos; ').each_slice(2){|x| s.gsub!(*x)}
1020
1030
  s
1021
1031
  end
1022
1032
  end
@@ -1031,7 +1041,7 @@ class Rexle
1031
1041
 
1032
1042
  def r.unescape()
1033
1043
  s = self.clone
1034
- %w(&lt; < &gt; > &amp; & &pos; ').each_slice(2){|x| s.gsub!(*x)}
1044
+ %w(&lt; < &gt; > &amp; & &apos; ').each_slice(2){|x| s.gsub!(*x)}
1035
1045
  s
1036
1046
  end
1037
1047
 
@@ -1042,7 +1052,7 @@ class Rexle
1042
1052
 
1043
1053
  val = Value.new(raw_s.to_s.clone)
1044
1054
 
1045
- escape_chars = %w(& &amp; < &lt; > &gt;).each_slice(2).to_a
1055
+ escape_chars = %w(& &amp; ' &apos; < &lt; > &gt;).each_slice(2).to_a
1046
1056
  escape_chars.each{|x| val.gsub!(*x)}
1047
1057
 
1048
1058
  t = val
@@ -1323,7 +1333,7 @@ class Rexle
1323
1333
 
1324
1334
  def unescape()
1325
1335
  s = @value.clone
1326
- %w(&lt; < &gt; > &amp; & &pos; ').each_slice(2){|x| s.gsub!(*x)}
1336
+ %w(&lt; < &gt; > &amp; & &apos; ').each_slice(2){|x| s.gsub!(*x)}
1327
1337
  s
1328
1338
  end
1329
1339
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rexle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgxMDAyMjEwMjM4WhcN
15
- MTkxMDAyMjEwMjM4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC1X6zL
17
- G+ytuYkQsPOKreuUt/gsYlNSAw5D8VDCUdOScMLcytoL5Ssf3CBBr2LM1QJrkQ5M
18
- 2J4bF0uTDFmegNK44hIpPPYAYuMHL3IjSawvdyBHgl7GRqv84Y7ys7kD+X+TtxqK
19
- jP3icaTau5+DQMe3lIjqlS7KhI0GhUmjiGlL1X/WOaxf3gHTRWtiMktv3VElekAj
20
- cOL+hZtRICwLq6yrixODLIt9OyAZ8t+U3XpYZIHkMAswGGo05Pkf4FlDnIzm+VJ0
21
- J+dTw+FVx/kPL7y4FNTN8Akl45dAFADuHHNAuOKlCWT+CkKBdDhEWNJQC/cX8nxf
22
- XHwKna6YPnuAbt1IBwX/eZIDDrFrTApa6nQVWgyUWyt7z9ntslVCd1rW6K1siJ9F
23
- nrW/LPUUgVhTCMwFXYaPWoBaVbiZqGlVn2cFJF9MS9bB4pPbCSU9YVJ4qtYGAatD
24
- MBl0kiJdq8exmm0f9WqOvXmVWXWYlhMv5LfAH1ECbK4pIdh5DolK3NB/70sCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUYY6jhDbE
26
- YQSrL+8T3vNoEqjmOXowJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwMjA0MTMxMjIzWhcN
15
+ MjEwMjAzMTMxMjIzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCyVLqC
17
+ gVJ+P/zFnjtoyxfgcrc5US5+G7mDdNq/Q2GDm2zIZjVAnUHLZCcKLBlwMY0Vusqq
18
+ sNzbiSHqVqaXtrFq2jivmbJsKUxJMTIuErXQnpfVsmapQsYJ7U8+byHgFRf8ysTc
19
+ Op90xKUkroJdO+Ls0SMcFXUGqybH5d4Dxhb+3f/rAThPC8V9EWRWF/SlosXvE/sw
20
+ VzsGkxLQug3xJkSvN2rQQZi4RgOP37jgeEToeLTIu43npNF6H9nSV/lxUriqPyva
21
+ OMQYIpK+1SS42J9rSD1/1q1FscsKT2koP9Uf4zHzIeuiQ4wmAMpqYS80eNzaeAEx
22
+ p3Z4HLBHseWKNWSDrgW0YvuYBAEMcq+XdBMT66n+xKL5GUlsXptrFQ4QP6oOxK4K
23
+ UZXN94qwi54m+EIexo5ADKtrwRuQl+X9pRpOmFNJAny8vWIz6U1SZs2nBysPLj2g
24
+ lnKLGetPlgBVoKAPZoFu//CYQKIO+erQoAGRoA05TGrBAq2cNkNFvQJ9XM0CAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUCCDebAbe
26
+ pZaniHSTxRjAZLUsoQswJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAjUIY0ulHDqBKjbrn3mxutbu0fzMLo0TBmpvvuG2S
29
- j4nitZZVmcjiEtJ9br8qjKg0Ycfkt2GTKjeJ7NwrwS0oBtOSsvrDFA+x/YoO5cuk
30
- RNhiEC9tk+IF/xN9N0+eyiRBfWFtZ8yHG1d5Ql0DirzspiYLX5sVQG/8hA3s9Jbn
31
- gO0fnWowD9LP+jbZr6yw/rnU1Mhb3UAI2W9LSXGslpxvtMS0yKsrHPR9/qQ3fIKH
32
- teZlGb8tw9RXEKExP6zSR+ZRXpnNyZQ7flRf4lusqUNvtkguF9dL8RNd8QMV2PJw
33
- IHeJbMdyTmYQb8XIAR5zXu0BHfqKRT1GLg94u03RBsBcno5YqNJ5OU42C+j8GEQt
34
- nFb3gCj4YFPzQa6OVdSIi/kKW2J8wFxUvI8muMt7lbTaxFJLyK9Qdt/oKxwxXM1t
35
- Zdf6ufm6l1fXtBUvl0XuKmNH8p6u/7SmI2oqJoV7Oiarx5i1LrpWL8Zc3q9MFaT4
36
- pzftGMNXyXUyb9mSx4krfsRT
28
+ BgkqhkiG9w0BAQsFAAOCAYEAEdNcc2nDj8v6FdY75tULXii+F0m1pnfxri+wtd/1
29
+ wnRqNqmaKQGwAUhx4qLhs8MbGU5H4xe18Hmf7n6P++HSCKaFDwE3mo38vwnPmPr8
30
+ J+4+CWaB+avp9/wztZS3oQ0k/w9bN4b1RUk18z4rpG9Y8KH3v7L+b4rAzzBhs60S
31
+ Q2+963e3C7PFkFODn1vfGMRmBK2nuekE6RdzzxzRuUBwKHMggxPsHRQzaz8cy4fB
32
+ UWC8eX0y59rd/gA0WunPXgpuV24SHBtIqTLk76Z1Oz3P27Hwx2JPhURtzc3bNfSg
33
+ gvwYrdF1dTOwourN6uqQLksl7AjcCVUV+6hyoa5Fo9HcfURnlPdjVFax/KIQj3lA
34
+ X0bOYG6opdA3I0zyDHGx+mC9QuhM6oKYq3fu7i8RsVsihVImOovRYVagGbULBLDZ
35
+ yK32Ci6By/qMCdJdE8pLLZhHuZGIkoYJK7EN7OKPznwuXRCOq7jb44HAIDi4RZST
36
+ J+lqIOqNxqRJkYpuYSZr+tyd
37
37
  -----END CERTIFICATE-----
38
- date: 2019-07-10 00:00:00.000000000 Z
38
+ date: 2020-06-22 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: c32
@@ -63,60 +63,60 @@ dependencies:
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '0.8'
66
+ version: '0.9'
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.8.1
69
+ version: 0.9.3
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '0.8'
76
+ version: '0.9'
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 0.8.1
79
+ version: 0.9.3
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rexle-builder
82
82
  requirement: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 0.4.0
87
84
  - - "~>"
88
85
  - !ruby/object:Gem::Version
89
- version: '0.4'
86
+ version: '1.0'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 1.0.2
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 0.4.0
97
94
  - - "~>"
98
95
  - !ruby/object:Gem::Version
99
- version: '0.4'
96
+ version: '1.0'
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 1.0.2
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: rexle-css
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
105
- - !ruby/object:Gem::Version
106
- version: '0.1'
107
104
  - - ">="
108
105
  - !ruby/object:Gem::Version
109
- version: 0.1.6
106
+ version: 0.2.0
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '0.2'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '0.1'
117
114
  - - ">="
118
115
  - !ruby/object:Gem::Version
119
- version: 0.1.6
116
+ version: 0.2.0
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.2'
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: backtrack-xpath
122
122
  requirement: !ruby/object:Gem::Requirement
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  - !ruby/object:Gem::Version
164
164
  version: '0'
165
165
  requirements: []
166
- rubygems_version: 3.0.1
166
+ rubygems_version: 3.0.3
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: Rexle is an XML parser written purely in Ruby
metadata.gz.sig CHANGED
Binary file