merged cont.
[opensuse:yast-rest-service.git] / webyast / app / models / online_help.rb
1 #--
2 # Webyast Webclient framework
3 #
4 # Copyright (C) 2009, 2010 Novell, Inc. 
5 #   This library is free software; you can redistribute it and/or modify
6 # it only under the terms of version 2.1 of the GNU Lesser General Public
7 # License as published by the Free Software Foundation. 
8 #
9 #   This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
12 # details. 
13 #
14 #   You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software 
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 #++
18
19 require 'rubygems'
20 require 'nokogiri'
21 require 'open-uri'
22
23 class OnlineHelp
24   def self.find(model)
25     return OnlineHelp.parse(model)
26   end
27   
28   def OnlineHelp.parse(model)
29     Rails.logger.error "***** ONLINE HELP for #{model} *****"
30     
31     unless model == "Area" #TODO: Find better way to navigate through WebYaST documentation
32       html = open("http://doc.opensuse.org/products/other/WebYaST/webyast-user/cha.webyast.user.modules.html")
33     else
34       html = open("http://doc.opensuse.org/products/other/WebYaST/webyast-user/cha.webyast.user.control.html#cha.webyast.user.control.status")
35     end
36     
37     doc = Nokogiri::HTML(html.read)
38     doc.encoding = 'utf-8'
39
40     unless doc.nil?
41       if model == "Limits" #TODO: Find better way to navigate through WebYaST documentation
42         doc.css('div.sect2').each do |link|
43           title = link.attributes['title'].text
44           Rails.logger.error title.inspect
45           link.css('h2.title span.permalink').remove()
46           link.css('a[alt="Permalink"]').remove()
47           link.css('tr.head td:first').remove()
48
49           if title.include? model
50             return link
51           end
52         end
53       else
54         doc.css('div.sect1').each do |link|
55           title = link.attributes['title'].text
56           Rails.logger.error title.inspect
57           link.css('h2.title span.permalink').remove()
58           link.css('a[alt="Permalink"]').remove()
59           link.css('tr.head td:first').remove()
60           link.css('div.sect2').remove()
61
62           if title.include? model
63             return link
64           end
65         end
66       end
67     end
68     Rails.logger.error "***** Document END *****"
69   end
70   
71 end