asip-meteor 0.9.3.2 → 0.9.3.3

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.
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