File: bookmark.rb

package info (click to toggle)
amrita 1.0.2-3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 1,880 kB
  • ctags: 1,363
  • sloc: ruby: 9,159; xml: 978; makefile: 116
file content (76 lines) | stat: -rwxr-xr-x 1,568 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/ruby

require 'cgi'
require 'amrita/template'
require 'bmmodel'
include Amrita

DATAFILE_PATH="bookmark.dat"
TEMPLATE_PATH="bookmark.html"
CACHE_PATH="/tmp/bookmark"

class Item
  include Amrita::ExpandByMember

  def link
    e(:a, :href=>@url) { @url }
  end
end

def make_model_data(bm, selected_group)
  groups = bm.groups.keys.sort

  data = {
    :groups => groups.collect do |k|
      {
        :group_name=>k,
        :items=>bm.groups[k].collect do |item|
          {
            :name => item.name,
            :link => e(:a, :href=>item.url) { item.url }
          }
        end
      }
    end ,
    :form => {
      :group_sel=>e(:select, :name=>"group_sel") {
        groups.collect do |g|
          if g == selected_group
            e(:option, :value=>g, :selected=>"selected") { g }
          else
            e(:option, :value=>g) { g }
          end
        end
      },
    }
  }

  data
end

def generate_output(bm, group)
  #Amrita::TemplateFileWithCache::set_cache_dir(CACHE_PATH)
  tmpl = Amrita::TemplateFileWithCache[TEMPLATE_PATH]
  tmpl.use_compiler = true
  tmpl.expand($stdout, make_model_data(bm,group))
end

def main
  bm = BookmarkList.new
  bm.load_from_file(DATAFILE_PATH)
  cgi = CGI.new
  url = cgi['url'][0]
  group = ""
  if url
    group = (cgi['group'][0]).to_s
    group = (cgi['group_sel'][0]).to_s if group == ""
    name = (cgi['title'][0]).to_s 
    name = url if name == ""
    bm.add_new_item(group, name, url)
    bm.save_to_file(DATAFILE_PATH)
  end
  puts cgi.header
  generate_output(bm, group)
end

main