| Module | RSS::BaseModel |
| In: |
lib/rss/rss.rb
|
# File lib/rss/rss.rb, line 213
213: def install_date_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
214: name ||= tag_name
215: type ||= :w3cdtf
216: disp_name ||= name
217: self::ELEMENTS << name
218: add_need_initialize_variable(name)
219: install_model(tag_name, uri, occurs, name)
220:
221: # accessor
222: convert_attr_reader name
223: date_writer(name, type, disp_name)
224:
225: install_element(name) do |n, elem_name|
226: "if @\#{n}\nrv = \"\\\#{indent}<\#{elem_name}>\"\nvalue = html_escape(@\#{n}.\#{type})\nif need_convert\nrv << convert(value)\nelse\nrv << value\nend\nrv << \"</\#{elem_name}>\"\nrv\nelse\n''\nend\n"
227: end
228:
229: end
Alias for install_have_child_element
# File lib/rss/rss.rb, line 144
144: def install_have_child_element(tag_name, uri, occurs, name=nil)
145: name ||= tag_name
146: add_need_initialize_variable(name)
147: install_model(tag_name, uri, occurs, name)
148:
149: attr_accessor name
150: install_element(name) do |n, elem_name|
151: "if @\#{n}\n\"\\\#{@\#{n}.to_s(need_convert, indent)}\"\nelse\n''\nend\n"
152: end
153: end
# File lib/rss/rss.rb, line 163
163: def install_have_children_element(tag_name, uri, occurs, name=nil, plural_name=nil)
164: name ||= tag_name
165: plural_name ||= "#{name}s"
166: add_have_children_element(name, plural_name)
167: add_plural_form(name, plural_name)
168: install_model(tag_name, uri, occurs, plural_name)
169:
170: def_children_accessor(name, plural_name)
171: install_element(name, "s") do |n, elem_name|
172: "rv = []\n@\#{n}.each do |x|\nvalue = \"\\\#{x.to_s(need_convert, indent)}\"\nrv << value if /\\\\A\\\\s*\\\\z/ !~ value\nend\nrv.join(\"\\n\")\n"
173: end
174: end
# File lib/rss/rss.rb, line 184
184: def install_text_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
185: name ||= tag_name
186: disp_name ||= name
187: self::ELEMENTS << name
188: add_need_initialize_variable(name)
189: install_model(tag_name, uri, occurs, name)
190:
191: def_corresponded_attr_writer name, type, disp_name
192: convert_attr_reader name
193: install_element(name) do |n, elem_name|
194: "if @\#{n}\nrv = \"\\\#{indent}<\#{elem_name}>\"\nvalue = html_escape(@\#{n})\nif need_convert\nrv << convert(value)\nelse\nrv << value\nend\nrv << \"</\#{elem_name}>\"\nrv\nelse\n''\nend\n"
195: end
196: end
# File lib/rss/rss.rb, line 356
356: def boolean_writer(name, disp_name=name)
357: module_eval("def \#{name}=(new_value)\nif new_value.nil?\n@\#{name} = new_value\nelse\nif @do_validate and\n![true, false, \"true\", \"false\"].include?(new_value)\nraise NotAvailableValueError.new('\#{disp_name}', new_value)\nend\nif [true, false].include?(new_value)\n@\#{name} = new_value\nelse\n@\#{name} = new_value == \"true\"\nend\nend\nend\n", *get_file_and_line_from_caller(2))
358: end
# File lib/rss/rss.rb, line 260
260: def convert_attr_reader(*attrs)
261: attrs.each do |attr|
262: attr = attr.id2name if attr.kind_of?(Integer)
263: module_eval("def \#{attr}\nif @converter\n@converter.convert(@\#{attr})\nelse\n@\#{attr}\nend\nend\n", *get_file_and_line_from_caller(2))
264: end
265: end
# File lib/rss/rss.rb, line 276
276: def date_writer(name, type, disp_name=name)
277: module_eval("def \#{name}=(new_value)\nif new_value.nil? or new_value.kind_of?(Time)\n@\#{name} = new_value\nelse\nif @do_validate\nbegin\n@\#{name} = Time.__send__('\#{type}', new_value)\nrescue ArgumentError\nraise NotAvailableValueError.new('\#{disp_name}', new_value)\nend\nelse\n@\#{name} = nil\nif /\\\\A\\\\s*\\\\z/ !~ new_value.to_s\nbegin\n@\#{name} = Time.parse(new_value)\nrescue ArgumentError\nend\nend\nend\nend\n\n# Is it need?\nif @\#{name}\nclass << @\#{name}\nundef_method(:to_s)\nalias_method(:to_s, :\#{type})\nend\nend\n\nend\n", *get_file_and_line_from_caller(2))
278: end
# File lib/rss/rss.rb, line 377
377: def def_children_accessor(accessor_name, plural_name)
378: module_eval("def \#{plural_name}\n@\#{accessor_name}\nend\n\ndef \#{accessor_name}(*args)\nif args.empty?\n@\#{accessor_name}.first\nelse\n@\#{accessor_name}[*args]\nend\nend\n\ndef \#{accessor_name}=(*args)\nwarn(\"Warning:\\\#{caller.first.sub(/:in `.*'\\z/, '')}: \" \\\n\"Don't use `\#{accessor_name} = XXX'/`set_\#{accessor_name}(XXX)'. \" \\\n\"Those APIs are not sense of Ruby. \" \\\n\"Use `\#{plural_name} << XXX' instead of them.\")\nif args.size == 1\n@\#{accessor_name}.push(args[0])\nelse\n@\#{accessor_name}.__send__(\"[]=\", *args)\nend\nend\nalias_method(:set_\#{accessor_name}, :\#{accessor_name}=)\n", *get_file_and_line_from_caller(2))
379: end
# File lib/rss/rss.rb, line 247
247: def install_element(name, postfix="")
248: elem_name = name.sub('_', ':')
249: method_name = "#{name}_element#{postfix}"
250: add_to_element_method(method_name)
251: module_eval("def \#{method_name}(need_convert=true, indent='')\n\#{yield(name, elem_name)}\nend\nprivate :\#{method_name}\n", *get_file_and_line_from_caller(2))
252: end
# File lib/rss/rss.rb, line 312
312: def integer_writer(name, disp_name=name)
313: module_eval("def \#{name}=(new_value)\nif new_value.nil?\n@\#{name} = new_value\nelse\nif @do_validate\nbegin\n@\#{name} = Integer(new_value)\nrescue ArgumentError\nraise NotAvailableValueError.new('\#{disp_name}', new_value)\nend\nelse\n@\#{name} = new_value.to_i\nend\nend\nend\n", *get_file_and_line_from_caller(2))
314: end
# File lib/rss/rss.rb, line 333
333: def positive_integer_writer(name, disp_name=name)
334: module_eval("def \#{name}=(new_value)\nif new_value.nil?\n@\#{name} = new_value\nelse\nif @do_validate\nbegin\ntmp = Integer(new_value)\nraise ArgumentError if tmp <= 0\n@\#{name} = tmp\nrescue ArgumentError\nraise NotAvailableValueError.new('\#{disp_name}', new_value)\nend\nelse\n@\#{name} = new_value.to_i\nend\nend\nend\n", *get_file_and_line_from_caller(2))
335: end