| Module | RSS::BaseModel |
| In: |
lib/rss/rss.rb
|
# File lib/rss/rss.rb, line 243
243: def install_date_element(tag_name, uri, occurs, name=nil, type=nil, disp_name=nil)
244: name ||= tag_name
245: type ||= :w3cdtf
246: disp_name ||= name
247: self::ELEMENTS << name
248: add_need_initialize_variable(name)
249: install_model(tag_name, uri, occurs, name)
250:
251: # accessor
252: convert_attr_reader name
253: date_writer(name, type, disp_name)
254:
255: install_element(name) do |n, elem_name|
256: "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"
257: end
258:
259: end
Alias for install_have_child_element
# File lib/rss/rss.rb, line 166
166: def install_have_child_element(tag_name, uri, occurs, name=nil, type=nil)
167: name ||= tag_name
168: add_need_initialize_variable(name)
169: install_model(tag_name, uri, occurs, name)
170:
171: writer_type, reader_type = type
172: def_corresponded_attr_writer name, writer_type
173: def_corresponded_attr_reader name, reader_type
174: install_element(name) do |n, elem_name|
175: "if @\#{n}\n\"\\\#{@\#{n}.to_s(need_convert, indent)}\"\nelse\n''\nend\n"
176: end
177: end
# File lib/rss/rss.rb, line 187
187: def install_have_children_element(tag_name, uri, occurs, name=nil, plural_name=nil)
188: name ||= tag_name
189: plural_name ||= "#{name}s"
190: add_have_children_element(name, plural_name)
191: add_plural_form(name, plural_name)
192: install_model(tag_name, uri, occurs, plural_name, true)
193:
194: def_children_accessor(name, plural_name)
195: install_element(name, "s") do |n, elem_name|
196: "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"
197: end
198: end
# File lib/rss/rss.rb, line 208
208: def install_text_element(tag_name, uri, occurs, name=nil, type=nil,
209: disp_name=nil)
210: name ||= tag_name
211: disp_name ||= name
212: self::ELEMENTS << name unless self::ELEMENTS.include?(name)
213: add_need_initialize_variable(name)
214: install_model(tag_name, uri, occurs, name)
215:
216: def_corresponded_attr_writer(name, type, disp_name)
217: def_corresponded_attr_reader(name, type || :convert)
218: install_element(name) do |n, elem_name|
219: "if respond_to?(:\#{n}_content)\ncontent = \#{n}_content\nelse\ncontent = @\#{n}\nend\nif content\nrv = \"\\\#{indent}<\#{elem_name}>\"\nvalue = html_escape(content)\nif need_convert\nrv << convert(value)\nelse\nrv << value\nend\nrv << \"</\#{elem_name}>\"\nrv\nelse\n''\nend\n"
220: end
221: end
# File lib/rss/rss.rb, line 479
479: def boolean_writer(name, disp_name=name)
480: 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))
481: end
# File lib/rss/rss.rb, line 513
513: def content_writer(name, disp_name=name)
514: klass_name = "self.class::#{Utils.to_class_name(name)}"
515: module_eval("def \#{name}=(new_value)\nif new_value.is_a?(\#{klass_name})\n@\#{name} = new_value\nelse\n@\#{name} = \#{klass_name}.new\n@\#{name}.content = new_value\nend\nend\n", *get_file_and_line_from_caller(2))
516: end
# File lib/rss/rss.rb, line 334
334: def convert_attr_reader(*attrs)
335: attrs.each do |attr|
336: attr = attr.id2name if attr.kind_of?(Integer)
337: module_eval("def \#{attr}\nconvert(@\#{attr})\nend\n", *get_file_and_line_from_caller(2))
338: end
339: end
# File lib/rss/rss.rb, line 372
372: def csv_attr_reader(*attrs)
373: separator = nil
374: if attrs.last.is_a?(Hash)
375: options = attrs.pop
376: separator = options[:separator]
377: end
378: separator ||= ", "
379: attrs.each do |attr|
380: attr = attr.id2name if attr.kind_of?(Integer)
381: module_eval("attr_reader(:\#{attr})\ndef \#{attr}_content\nif @\#{attr}.nil?\n@\#{attr}\nelse\n@\#{attr}.join(\#{separator.dump})\nend\nend\n", __FILE__, __LINE__ + 1)
382: end
383: end
# File lib/rss/rss.rb, line 559
559: def csv_integer_writer(name, disp_name=name)
560: module_eval("def \#{name}=(new_value)\n@\#{name} = Utils::CSV.parse(new_value) {|v| Integer(v)}\nend\n", __FILE__, __LINE__ + 1)
561: end
# File lib/rss/rss.rb, line 550
550: def csv_writer(name, disp_name=name)
551: module_eval("def \#{name}=(new_value)\n@\#{name} = Utils::CSV.parse(new_value)\nend\n", __FILE__, __LINE__ + 1)
552: end
# File lib/rss/rss.rb, line 395
395: def date_writer(name, type, disp_name=name)
396: module_eval("def \#{name}=(new_value)\nif new_value.nil?\n@\#{name} = new_value\nelsif new_value.kind_of?(Time)\n@\#{name} = new_value.dup\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\nunless Date._parse(new_value, false).empty?\n@\#{name} = Time.parse(new_value)\nend\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))
397: end
# File lib/rss/rss.rb, line 568
568: def def_children_accessor(accessor_name, plural_name)
569: 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)\nreceiver = self.class.name\nwarn(\"Warning:\\\#{caller.first.sub(/:in `.*'\\z/, '')}: \" \\\n\"Don't use `\\\#{receiver}\\#\#{accessor_name} = XXX'/\" \\\n\"`\\\#{receiver}\\#set_\#{accessor_name}(XXX)'. \" \\\n\"Those APIs are not sense of Ruby. \" \\\n\"Use `\\\#{receiver}\\#\#{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))
570: end
# File lib/rss/rss.rb, line 290
290: def inherit_convert_attr_reader(*attrs)
291: attrs.each do |attr|
292: attr = attr.id2name if attr.kind_of?(Integer)
293: module_eval("def \#{attr}_without_inherit\nconvert(@\#{attr})\nend\n\ndef \#{attr}\nif @\#{attr}\n\#{attr}_without_inherit\nelsif @parent\n@parent.\#{attr}\nelse\nnil\nend\nend\n", *get_file_and_line_from_caller(2))
294: end
295: end
# File lib/rss/rss.rb, line 277
277: def install_element(name, postfix="")
278: elem_name = name.sub('_', ':')
279: method_name = "#{name}_element#{postfix}"
280: add_to_element_method(method_name)
281: 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))
282: end
# File lib/rss/rss.rb, line 435
435: def integer_writer(name, disp_name=name)
436: 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))
437: end
# File lib/rss/rss.rb, line 456
456: def positive_integer_writer(name, disp_name=name)
457: 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))
458: end
# File lib/rss/rss.rb, line 500
500: def text_type_writer(name, disp_name=name)
501: module_eval("def \#{name}=(new_value)\nif @do_validate and\n![\"text\", \"html\", \"xhtml\", nil].include?(new_value)\nraise NotAvailableValueError.new('\#{disp_name}', new_value)\nend\n@\#{name} = new_value\nend\n", *get_file_and_line_from_caller(2))
502: end
# File lib/rss/rss.rb, line 312
312: def uri_convert_attr_reader(*attrs)
313: attrs.each do |attr|
314: attr = attr.id2name if attr.kind_of?(Integer)
315: module_eval("def \#{attr}_without_base\nconvert(@\#{attr})\nend\n\ndef \#{attr}\nvalue = \#{attr}_without_base\nreturn nil if value.nil?\nif /\\\\A[a-z][a-z0-9+.\\\\-]*:/i =~ value\nvalue\nelse\n\"\\\#{base}\\\#{value}\"\nend\nend\n", *get_file_and_line_from_caller(2))
316: end
317: end
# File lib/rss/rss.rb, line 346
346: def yes_clean_other_attr_reader(*attrs)
347: attrs.each do |attr|
348: attr = attr.id2name if attr.kind_of?(Integer)
349: module_eval("attr_reader(:\#{attr})\ndef \#{attr}?\nYesCleanOther.parse(@\#{attr})\nend\n", __FILE__, __LINE__ + 1)
350: end
351: end
# File lib/rss/rss.rb, line 528
528: def yes_clean_other_writer(name, disp_name=name)
529: module_eval("def \#{name}=(value)\nvalue = (value ? \"yes\" : \"no\") if [true, false].include?(value)\n@\#{name} = value\nend\n", __FILE__, __LINE__ + 1)
530: end
# File lib/rss/rss.rb, line 359
359: def yes_other_attr_reader(*attrs)
360: attrs.each do |attr|
361: attr = attr.id2name if attr.kind_of?(Integer)
362: module_eval("attr_reader(:\#{attr})\ndef \#{attr}?\nUtils::YesOther.parse(@\#{attr})\nend\n", __FILE__, __LINE__ + 1)
363: end
364: end