Module RSS::BaseModel
In: lib/rss/rss.rb

Methods

Included Modules

Utils

Public Instance methods

[Source]

     # 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
install_have_attribute_element(tag_name, uri, occurs, name=nil, type=nil)

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

Private Instance methods

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # File lib/rss/rss.rb, line 538
538:     def yes_other_writer(name, disp_name=name)
539:       module_eval("def \#{name}=(new_value)\nif [true, false].include?(new_value)\nnew_value = new_value ? \"yes\" : \"no\"\nend\n@\#{name} = new_value\nend\n", __FILE__, __LINE__ + 1)
540:     end

[Validate]