Class: TagCloud

Inherits:
Object
  • Object
show all
Defined in:
lib/tagcloud.rb

Instance Method Summary collapse

Constructor Details

#initialize(opt) ⇒ TagCloud

Returns a new instance of TagCloud.



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/tagcloud.rb', line 10

def initialize(opt)
  opts = {uri: '', tags: [], public_path: '/tags'}.merge(opt)
  uri, tags, public_path = [:uri, :tags, :public_path].map{|x| opts[x]}

  main(uri, tags, 'tags.xml')
  index(public_path, tags, 'index.xml')

  # add it to rows --> [tag]_rows.xml
  rows(tags, uri)

  # add it to [tag] -> [tag].xml
  tag(public_path, tags)
end

Instance Method Details

#index(public_path, tags = [], filename = 'index.xml') ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/tagcloud.rb', line 35

def index(public_path, tags=[], filename='index.xml')

  if File.exists? filename then
    dynarex = Dynarex.new(filename)
  else
    dynarex = Dynarex.new('tags/entry(tag,url)')  
  end

  tags.each do |tag|
    dynarex.create tag: tag, url: "%s/%s.html" % [public_path, tag]
  end

  dynarex.save filename, pretty: true
end

#main(uri, tags = [], filename = 'tags.xml') ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/tagcloud.rb', line 24

def main(uri, tags=[], filename='tags.xml')

  polyrex = Polyrex.new('entries/entry[tag]/urls[url]')

  tags.each do |tag|
    polyrex.create.entry(tag: tag) {|create|  create.urls(url: uri) }
  end

  polyrex.save filename, pretty: true
end

#rows(tags = [], url) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/tagcloud.rb', line 51

def rows(tags=[], url)

  tags.each do |tag| 

    filename = "%s_rows.xml" % tag

    if File.exists? filename then

      dynarex = Dynarex.new()

    else

      dynarex = Dynarex.new('entries/entry(url)')

    end


    dynarex.create url: url

    dynarex.save filename, pretty: true
  end

end

#tag(public_path, tags = []) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/tagcloud.rb', line 77

def tag(public_path, tags=[])

  tags.length.times do |tag|

    tags.rotate!
    main_tag = tags.first
    filename = "%s.xml" % main_tag

    if File.exists? filename then

      dynarex = Dynarex.new(filename)

    else

      dynarex = Dynarex.new('entries[tag]/entry(tag, url)')  
    end

    dynarex.summary['tag'] = main_tag
    tags[1..-1].each do |tag|
      dynarex.create tag: tag, url: "%s/%s.html" % [public_path, tag]
    end

    dynarex.save filename, pretty: true
  end

end