asip-meteor 0.9.3.2 → 0.9.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README +3 -3
  2. data/lib/meteor.rb +150 -140
  3. metadata +4 -3
data/README CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  = meteor - A lightweight (X)HTML & XML Parser
3
3
 
4
- by asip <ys.ashida@gmail.com>
4
+ by Yasumasa Ashida<ys.ashida@gmail.com>
5
5
 
6
6
  == Description
7
7
 
@@ -25,6 +25,6 @@ by asip <ys.ashida@gmail.com>
25
25
 
26
26
  == Copyright
27
27
 
28
- Author:: asip <ys.ashida@gmail.com>
29
- Copyright:: Copyright (c) 2009 asip
28
+ Author:: Yasumasa Ashida <ys.ashida@gmail.com>
29
+ Copyright:: Copyright (c) 2008-2009 asip
30
30
  License:: LGPL V2.1
@@ -18,12 +18,12 @@
18
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
19
  #
20
20
  # @author Yasumasa Ashida
21
- # @version 0.9.3.2
21
+ # @version 0.9.3.3
22
22
  #
23
23
 
24
24
  module Meteor
25
25
 
26
- VERSION = "0.9.3.2"
26
+ VERSION = "0.9.3.3"
27
27
 
28
28
  RUBY_VERSION_1_9_0 = '1.9.0'
29
29
 
@@ -837,7 +837,7 @@ module Meteor
837
837
  # @param [Meteor::Parser] ps パーサ
838
838
  #
839
839
  def []=(key,ps)
840
- @cache[path] = ps
840
+ @cache[key] = ps
841
841
  end
842
842
 
843
843
  #
@@ -1150,11 +1150,12 @@ module Meteor
1150
1150
  #@pattern = nil
1151
1151
  #ルート要素
1152
1152
  @root = RootElement.new
1153
- if RUBY_VERSION >= RUBY_VERSION_1_9_0 then
1153
+ #if RUBY_VERSION >= RUBY_VERSION_1_9_0 then
1154
1154
  @element_cache = Hash.new()
1155
- else
1156
- @element_cache = Meteor::Core::Util::OrderHash.new
1157
- end
1155
+ #else
1156
+ # @element_cache = Meteor::Core::Util::OrderHash.new
1157
+ #end
1158
+
1158
1159
  #@res = nil
1159
1160
  #@_attributes = nil
1160
1161
  #@_mixed_content = nil
@@ -1204,7 +1205,7 @@ module Meteor
1204
1205
  end
1205
1206
 
1206
1207
  attr_accessor :element_cache #[Hash] 要素キャッシュ
1207
- attr_accessor :doc_type #[String] ドキュメントタイプ
1208
+ attr_accessor :doc_type #[Fixnum] ドキュメントタイプ
1208
1209
 
1209
1210
  #
1210
1211
  # 文字エンコーディングをセットする
@@ -1500,7 +1501,7 @@ module Meteor
1500
1501
  @res2 = @pattern.match(@root.document)
1501
1502
 
1502
1503
  if !@res2 then
1503
- @res2 = element_with_3_2(elm_name)
1504
+ @res2 = element_with_3_2
1504
1505
  @pattern_cc_2 = @pattern_cc
1505
1506
  end
1506
1507
 
@@ -1579,7 +1580,7 @@ module Meteor
1579
1580
  end
1580
1581
  private :element_with_3_1
1581
1582
 
1582
- def element_with_3_2(elm_name)
1583
+ def element_with_3_2
1583
1584
 
1584
1585
  #@pattern_cc_1 = '' << TAG_OPEN << @_elm_name << TAG_SEARCH_2_1 << @_attr_name << ATTR_EQ
1585
1586
  #@pattern_cc_1 << @_attr_value << TAG_SEARCH_2_4_2
@@ -1945,11 +1946,11 @@ module Meteor
1945
1946
 
1946
1947
  if @position > @position2 then
1947
1948
 
1948
- if @cnt == ZERO then
1949
- @sbuf << @pattern_cc_1_1
1950
- else
1951
- @sbuf << @pattern_cc_1_2
1952
- end
1949
+ #if @cnt == ZERO then
1950
+ #@sbuf << @pattern_cc_1_1
1951
+ #else
1952
+ @sbuf << @pattern_cc_1_2
1953
+ #end
1953
1954
 
1954
1955
  @cnt += 1
1955
1956
 
@@ -1970,11 +1971,11 @@ module Meteor
1970
1971
  end
1971
1972
  else
1972
1973
 
1973
- if @cnt == ZERO then
1974
- @sbuf << @pattern_cc_1_1
1975
- else
1976
- @sbuf << @pattern_cc_1_2
1977
- end
1974
+ #if @cnt == ZERO then
1975
+ # @sbuf << @pattern_cc_1_1
1976
+ #else
1977
+ @sbuf << @pattern_cc_1_2
1978
+ #end
1978
1979
 
1979
1980
  @cnt += 1
1980
1981
 
@@ -1983,11 +1984,11 @@ module Meteor
1983
1984
  else
1984
1985
  @position = @res.end(0)
1985
1986
 
1986
- if @cnt == ZERO then
1987
- @sbuf << @pattern_cc_1_1
1988
- else
1989
- @sbuf << @pattern_cc_1_2
1990
- end
1987
+ #if @cnt == ZERO then
1988
+ @sbuf << @pattern_cc_1_1
1989
+ #else
1990
+ # @sbuf << @pattern_cc_1_2
1991
+ #end
1991
1992
 
1992
1993
  @cnt += ONE
1993
1994
  end
@@ -2003,18 +2004,21 @@ module Meteor
2003
2004
  @sbuf << @pattern_cc_2_1
2004
2005
  else
2005
2006
  @sbuf << @pattern_cc_2_2
2007
+ break
2006
2008
  end
2007
2009
 
2008
2010
  @position = @res.end(0)
2009
- end
2010
-
2011
- if @cnt == ZERO then
2011
+ else
2012
2012
  break
2013
2013
  end
2014
2014
 
2015
- if !@res then
2016
- break
2017
- end
2015
+ #if @cnt == ZERO then
2016
+ # break
2017
+ #end
2018
+
2019
+ #if !@res then
2020
+ # break
2021
+ #end
2018
2022
  end
2019
2023
 
2020
2024
  @pattern = @pattern_1b
@@ -2039,11 +2043,11 @@ module Meteor
2039
2043
 
2040
2044
  if @rx_document2.length > @rx_document.length then
2041
2045
 
2042
- if @cnt == ZERO then
2043
- @sbuf << @pattern_cc_1_1
2044
- else
2045
- @sbuf << @pattern_cc_1_2
2046
- end
2046
+ #if @cnt == ZERO then
2047
+ # @sbuf << @pattern_cc_1_1
2048
+ #else
2049
+ @sbuf << @pattern_cc_1_2
2050
+ #end
2047
2051
 
2048
2052
  @cnt += ONE
2049
2053
 
@@ -2056,19 +2060,20 @@ module Meteor
2056
2060
  @sbuf << @pattern_cc_2_1
2057
2061
  else
2058
2062
  @sbuf << @pattern_cc_2_2
2059
- end
2060
-
2061
- if @cnt == ZERO then
2062
2063
  break
2063
2064
  end
2065
+
2066
+ #if @cnt == ZERO then
2067
+ # break
2068
+ #end
2064
2069
  end
2065
2070
  else
2066
2071
 
2067
- if @cnt == ZERO then
2068
- @sbuf << @pattern_cc_1_1
2069
- else
2070
- @sbuf << @pattern_cc_1_2
2071
- end
2072
+ #if @cnt == ZERO then
2073
+ # @sbuf << @pattern_cc_1_1
2074
+ #else
2075
+ @sbuf << @pattern_cc_1_2
2076
+ #end
2072
2077
 
2073
2078
  @cnt += ONE
2074
2079
 
@@ -2077,11 +2082,11 @@ module Meteor
2077
2082
  else
2078
2083
  @rx_document = @res.post_match
2079
2084
 
2080
- if @cnt == ZERO then
2081
- @sbuf << @pattern_cc_1_1
2082
- else
2083
- @sbuf << @pattern_cc_1_2
2084
- end
2085
+ #if @cnt == ZERO then
2086
+ @sbuf << @pattern_cc_1_1
2087
+ #else
2088
+ #@sbuf << @pattern_cc_1_2
2089
+ #end
2085
2090
 
2086
2091
  @cnt += ONE
2087
2092
  end
@@ -2097,18 +2102,21 @@ module Meteor
2097
2102
  @sbuf << @pattern_cc_2_1
2098
2103
  else
2099
2104
  @sbuf << @pattern_cc_2_2
2105
+ break
2100
2106
  end
2101
2107
 
2102
2108
  @rx_document = @res.post_match
2103
- end
2104
-
2105
- if @cnt == ZERO then
2109
+ else
2106
2110
  break
2107
2111
  end
2108
2112
 
2109
- if !@res then
2110
- break
2111
- end
2113
+ #if @cnt == ZERO then
2114
+ # break
2115
+ #end
2116
+
2117
+ #if !@res then
2118
+ # break
2119
+ #end
2112
2120
  end
2113
2121
 
2114
2122
  @pattern = @pattern_1b
@@ -2818,13 +2826,13 @@ module Meteor
2818
2826
  def create(pif)
2819
2827
  case pif.doc_type
2820
2828
  when Parser::HTML then
2821
- pif = Meteor::Core::Html::ParserImpl.new
2829
+ Meteor::Core::Html::ParserImpl.new
2822
2830
  when Parser::XHTML then
2823
- pif = Meteor::Core::Xhtml::ParserImpl.new
2831
+ Meteor::Core::Xhtml::ParserImpl.new
2824
2832
  when Parser::XML then
2825
- pif = Meteor::Core::Xml::ParserImpl.new
2833
+ Meteor::Core::Xml::ParserImpl.new
2826
2834
  else
2827
- pif = nil
2835
+ nil
2828
2836
  end
2829
2837
  end
2830
2838
  private :create
@@ -2981,85 +2989,85 @@ module Meteor
2981
2989
  #end
2982
2990
  end
2983
2991
 
2984
- class OrderHash < Hash
2985
-
2986
- def initialize
2987
- @keys = Array.new
2988
- @values = Array.new
2989
- end
2990
-
2991
- attr_accessor :keys
2992
- attr_accessor :values
2993
-
2994
- def store(key, value)
2995
- unless @keys.include?(key)
2996
- @keys << key
2997
- @values << value
2998
- end
2999
- super(key, value)
3000
- end
3001
-
3002
- def clear
3003
- @keys.clear
3004
- @values.clear
3005
- super
3006
- end
3007
-
3008
- def delete(key)
3009
- if @keys.include?(key)
3010
- @keys.delete(key)
3011
- @values.delete(fetch(key))
3012
- super(key)
3013
- elsif yield(key)
3014
- end
3015
- end
3016
-
3017
- #superとして、Hash#[]=を呼び出す
3018
-
3019
- def []=(key, value)
3020
- store(key, value)
3021
- end
3022
-
3023
- def each
3024
- @keys.each do |k|
3025
- arr_tmp = Array.new
3026
- arr_tmp << k
3027
- arr_tmp << self[k]
3028
- yield(arr_tmp)
3029
- end
3030
- return self
3031
- end
3032
-
3033
- def each_pair
3034
- @keys.each do |k|
3035
- yield(k, self[k])
3036
- end
3037
- return self
3038
- end
3039
-
3040
- def map
3041
- arr_tmp = Array.new
3042
- @keys.each do |k|
3043
- arg_arr = Array.new
3044
- arg_arr << k
3045
- arg_arr << self[k]
3046
- arr_tmp << yield(arg_arr)
3047
- end
3048
- return arr_tmp
3049
- end
3050
-
3051
- def sort_hash(&block)
3052
- if block_given?
3053
- arr_tmp = self.sort(&block)
3054
- elsif arr_tmp = self.sort
3055
- end
3056
- hash_tmp = OrderHash.new
3057
- arr_tmp.each do |item|
3058
- hash_tmp[item[0]] = item[1]
3059
- end
3060
- return hash_tmp
3061
- end
3062
- end
2992
+ #class OrderHash < Hash
2993
+ #
2994
+ # def initialize
2995
+ # @keys = Array.new
2996
+ # @values = Array.new
2997
+ # end
2998
+ #
2999
+ # attr_accessor :keys
3000
+ # attr_accessor :values
3001
+ #
3002
+ # def store(key, value)
3003
+ # unless @keys.include?(key)
3004
+ # @keys << key
3005
+ # @values << value
3006
+ # end
3007
+ # super(key, value)
3008
+ # end
3009
+ #
3010
+ # def clear
3011
+ # @keys.clear
3012
+ # @values.clear
3013
+ # super
3014
+ # end
3015
+ #
3016
+ # def delete(key)
3017
+ # if @keys.include?(key)
3018
+ # @keys.delete(key)
3019
+ # @values.delete(fetch(key))
3020
+ # super(key)
3021
+ # elsif yield(key)
3022
+ # end
3023
+ # end
3024
+ #
3025
+ # #superとして、Hash#[]=を呼び出す
3026
+ #
3027
+ # def []=(key, value)
3028
+ # store(key, value)
3029
+ # end
3030
+ #
3031
+ # def each
3032
+ # @keys.each do |k|
3033
+ # arr_tmp = Array.new
3034
+ # arr_tmp << k
3035
+ # arr_tmp << self[k]
3036
+ # yield(arr_tmp)
3037
+ # end
3038
+ # return self
3039
+ # end
3040
+ #
3041
+ # def each_pair
3042
+ # @keys.each do |k|
3043
+ # yield(k, self[k])
3044
+ # end
3045
+ # return self
3046
+ # end
3047
+ #
3048
+ # def map
3049
+ # arr_tmp = Array.new
3050
+ # @keys.each do |k|
3051
+ # arg_arr = Array.new
3052
+ # arg_arr << k
3053
+ # arg_arr << self[k]
3054
+ # arr_tmp << yield(arg_arr)
3055
+ # end
3056
+ # return arr_tmp
3057
+ # end
3058
+ #
3059
+ # def sort_hash(&block)
3060
+ # if block_given?
3061
+ # arr_tmp = self.sort(&block)
3062
+ # elsif arr_tmp = self.sort
3063
+ # end
3064
+ # hash_tmp = OrderHash.new
3065
+ # arr_tmp.each do |item|
3066
+ # hash_tmp[item[0]] = item[1]
3067
+ # end
3068
+ # return hash_tmp
3069
+ # end
3070
+ #end
3063
3071
 
3064
3072
  end
3065
3073
 
@@ -3085,6 +3093,8 @@ module Meteor
3085
3093
  #MATCH_TAG_2 = "textarea|option|pre"
3086
3094
  MATCH_TAG_2 =['textarea','option','pre']
3087
3095
 
3096
+ MATCH_TAG_SNG = ['texarea','option','form']
3097
+
3088
3098
  HTTP_EQUIV = 'http-equiv'
3089
3099
  CONTENT_TYPE = 'Content-Type'
3090
3100
  CONTENT = 'content'
@@ -3435,7 +3445,7 @@ module Meteor
3435
3445
  #内容あり要素検索
3436
3446
  @res = @pattern.match(@root.document)
3437
3447
 
3438
- if !@res then
3448
+ if !@res && !is_match(MATCH_TAG_SNG) then
3439
3449
  @res = element_with_3_2(elm_name)
3440
3450
  end
3441
3451
 
@@ -3537,7 +3547,7 @@ module Meteor
3537
3547
  #内容あり要素検索
3538
3548
  @res = @pattern.match(@root.document)
3539
3549
 
3540
- if !@res then
3550
+ if !@res && !is_match(MATCH_TAG_SNG) then
3541
3551
  @res = element_with_5_2(elm_name)
3542
3552
  end
3543
3553
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asip-meteor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3.2
4
+ version: 0.9.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - asip
@@ -9,7 +9,7 @@ autorequire: meteor
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-19 00:00:00 -07:00
12
+ date: 2009-07-31 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -31,6 +31,7 @@ files:
31
31
  - lib/meteor.rb
32
32
  has_rdoc: false
33
33
  homepage: http://meteor.rubyforge.org
34
+ licenses:
34
35
  post_install_message:
35
36
  rdoc_options:
36
37
  - --title
@@ -62,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
63
  requirements: []
63
64
 
64
65
  rubyforge_project: meteor
65
- rubygems_version: 1.2.0
66
+ rubygems_version: 1.3.5
66
67
  signing_key:
67
68
  specification_version: 3
68
69
  summary: A lightweight (X)HTML & XML parser