navigasmic 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +53 -1
 - data/VERSION +1 -1
 - data/lib/builders/xml_builder.rb +23 -34
 - data/lib/navigasmic.rb +3 -3
 - data/navigasmic.gemspec +2 -2
 - metadata +2 -2
 
    
        data/README.textile
    CHANGED
    
    | 
         @@ -196,8 +196,60 @@ h3. ERB 
     | 
|
| 
       196 
196 
     | 
    
         | 
| 
       197 
197 
     | 
    
         
             
            h3. XML
         
     | 
| 
       198 
198 
     | 
    
         | 
| 
      
 199 
     | 
    
         
            +
            The XML Builder isn't hashed out completely, but it more or less generates google sitemap style xml.  I don't know if the format is entirely correct in terms of nesting (it would make sense if it is), and I'd invite anyone who would like to hash it out more to do so.
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
            *Simple Usage Using Builder*
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 204 
     | 
    
         
            +
              xml.instruct! :xml, :version => '1.0', :encoding => 'UTF-8'
         
     | 
| 
      
 205 
     | 
    
         
            +
              semantic_navigation :primary, :builder => Navigasmic::XmlNavigationBuilder do |n|
         
     | 
| 
      
 206 
     | 
    
         
            +
                n.group 'Media' do
         
     | 
| 
      
 207 
     | 
    
         
            +
                  n.item 'Image Gallery', :link => {:controller => 'media/images', :action => 'index'}
         
     | 
| 
      
 208 
     | 
    
         
            +
                  n.item 'Videos', :link => {:controller => 'media/videos'}, :changefreq => 'monthly'
         
     | 
| 
      
 209 
     | 
    
         
            +
                end
         
     | 
| 
      
 210 
     | 
    
         
            +
            	end
         
     | 
| 
      
 211 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 212 
     | 
    
         
            +
              ...produces...
         
     | 
| 
      
 213 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 214 
     | 
    
         
            +
              <?xml version="1.0" encoding="UTF-8"?>
         
     | 
| 
      
 215 
     | 
    
         
            +
              <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
         
     | 
| 
      
 216 
     | 
    
         
            +
                <urlset>
         
     | 
| 
      
 217 
     | 
    
         
            +
                  <url>
         
     | 
| 
      
 218 
     | 
    
         
            +
                    <loc>http://host:port/media/images</loc>
         
     | 
| 
      
 219 
     | 
    
         
            +
                    <changefreq>yearly</changefreq>
         
     | 
| 
      
 220 
     | 
    
         
            +
                  </url>
         
     | 
| 
      
 221 
     | 
    
         
            +
                  <url>
         
     | 
| 
      
 222 
     | 
    
         
            +
                    <loc>http://host:port/media/videos</loc>
         
     | 
| 
      
 223 
     | 
    
         
            +
                    <changefreq>monthly</changefreq>
         
     | 
| 
      
 224 
     | 
    
         
            +
                  </url>
         
     | 
| 
      
 225 
     | 
    
         
            +
                </urlset>
         
     | 
| 
      
 226 
     | 
    
         
            +
              </urlset>
         
     | 
| 
      
 227 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
            *Simple Usage Using HAML*
         
     | 
| 
      
 230 
     | 
    
         
            +
             
     | 
| 
      
 231 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 232 
     | 
    
         
            +
              - semantic_navigation :primary, :builder => Navigasmic::XmlNavigationBuilder, :changefreq => 'daily' do |n|
         
     | 
| 
      
 233 
     | 
    
         
            +
                = n.item 'Image Gallery', :link => {:controller => 'media/images', :action => 'index'}
         
     | 
| 
      
 234 
     | 
    
         
            +
                = n.item 'Videos', :link => {:controller => 'media/videos'}, :changefreq => 'monthly'
         
     | 
| 
      
 235 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 236 
     | 
    
         
            +
              ...produces...
         
     | 
| 
      
 237 
     | 
    
         
            +
            <pre>
         
     | 
| 
      
 238 
     | 
    
         
            +
              <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
         
     | 
| 
      
 239 
     | 
    
         
            +
                <url>
         
     | 
| 
      
 240 
     | 
    
         
            +
                  <loc>http://host:port/media/images</loc>
         
     | 
| 
      
 241 
     | 
    
         
            +
                  <changefreq>daily</changefreq>
         
     | 
| 
      
 242 
     | 
    
         
            +
                </url>
         
     | 
| 
      
 243 
     | 
    
         
            +
                <url>
         
     | 
| 
      
 244 
     | 
    
         
            +
                  <loc>http://host:port/media/videos</loc>
         
     | 
| 
      
 245 
     | 
    
         
            +
                  <changefreq>monthly</changefreq>
         
     | 
| 
      
 246 
     | 
    
         
            +
                </url>
         
     | 
| 
      
 247 
     | 
    
         
            +
              </urlset>
         
     | 
| 
      
 248 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 249 
     | 
    
         
            +
             
     | 
| 
      
 250 
     | 
    
         
            +
            Tip: You can check the template_format and use the XML Builder when it's :xml, and the HTML Builder if not.
         
     | 
| 
       199 
251 
     | 
    
         
             
            <pre>
         
     | 
| 
       200 
     | 
    
         
            -
             
     | 
| 
      
 252 
     | 
    
         
            +
              :builder => template_format == :xml ? Navigasmic::XmlNavigationBuilder : nil
         
     | 
| 
       201 
253 
     | 
    
         
             
            </pre>
         
     | 
| 
       202 
254 
     | 
    
         | 
| 
       203 
255 
     | 
    
         
             
            h3. Other
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.3.0
         
     | 
    
        data/lib/builders/xml_builder.rb
    CHANGED
    
    | 
         @@ -1,36 +1,36 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Navigasmic
         
     | 
| 
       2 
2 
     | 
    
         
             
              class XmlNavigationBuilder
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
                @@ 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
                  :highlighted => 'highlighted'
         
     | 
| 
       8 
     | 
    
         
            -
                }
         
     | 
| 
      
 4 
     | 
    
         
            +
                @@wrapper_tag = :urlset
         
     | 
| 
      
 5 
     | 
    
         
            +
                @@group_tag = :urlset
         
     | 
| 
      
 6 
     | 
    
         
            +
                @@item_tag = :url
         
     | 
| 
       9 
7 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                attr_accessor :template, :name, :items
         
     | 
| 
      
 8 
     | 
    
         
            +
                attr_accessor :template, :name, :items, :host
         
     | 
| 
       11 
9 
     | 
    
         | 
| 
       12 
10 
     | 
    
         
             
                def initialize(template, name, options = {}, &proc)
         
     | 
| 
       13 
11 
     | 
    
         
             
                  @template, @name, @items = template, name.to_s, []
         
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
      
 12 
     | 
    
         
            +
                  @host = options[:host] || "http://#{template.request.host_with_port}"
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @changefreq = options[:changefreq] || 'yearly'
         
     | 
| 
      
 14 
     | 
    
         
            +
                  render(options.delete(:xml), &proc)
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                def render(options, &proc)
         
     | 
| 
       18 
18 
     | 
    
         
             
                  buffer = template.capture(self, &proc)
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  options ||= {}
         
     | 
| 
      
 21 
     | 
    
         
            +
                  options['xmlns'] ||= 'http://www.sitemaps.org/schemas/sitemap/0.9'
         
     | 
| 
      
 22 
     | 
    
         
            +
                  options['xmlns:xsi'] ||= 'http://www.w3.org/2001/XMLSchema-instance'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  options['xsi:schemaLocation'] ||= 'http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  template.concat(template.content_tag(@@wrapper_tag, buffer, options))
         
     | 
| 
       20 
26 
     | 
    
         
             
                end
         
     | 
| 
       21 
27 
     | 
    
         | 
| 
       22 
28 
     | 
    
         
             
                def group(label = nil, options = {}, &proc)
         
     | 
| 
       23 
29 
     | 
    
         
             
                  raise ArgumentError, "Missing block" unless block_given?
         
     | 
| 
       24 
30 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                  options[:html] ||= {}
         
     | 
| 
       26 
     | 
    
         
            -
                  options[:html][:class] = template.add_class(options[:html][:class], @@classnames[:with_group])
         
     | 
| 
       27 
     | 
    
         
            -
                  options[:html][:id] ||= label.to_s.gsub(/\s/, '_').underscore
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
31 
     | 
    
         
             
                  buffer = template.capture(self, &proc)
         
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  template.content_tag(:li, label.to_s + group, options.delete(:html))
         
     | 
| 
      
 32 
     | 
    
         
            +
                  template.concat(template.content_tag(@@group_tag, buffer))
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ''
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
                def item(label, options = {}, &proc)
         
     | 
| 
         @@ -38,24 +38,13 @@ module Navigasmic 
     | 
|
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                  item = NavigationItem.new(label, options, template)
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
       42 
     | 
    
         
            -
                  options[: 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                   
     | 
| 
       45 
     | 
    
         
            -
                   
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
                   
     | 
| 
       48 
     | 
    
         
            -
                  label = template.link_to(label, item.link) unless item.link.empty?
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                  template.content_tag(:li, label + buffer, options.delete(:html))
         
     | 
| 
       51 
     | 
    
         
            -
                end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                def label_for_group(label)
         
     | 
| 
       54 
     | 
    
         
            -
                  template.content_tag(:span, label.to_s)
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                def label_for_item(label)
         
     | 
| 
       58 
     | 
    
         
            -
                  template.content_tag(:span, label.to_s)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  contents = template.content_tag(:loc, @host + template.url_for(item.link))
         
     | 
| 
      
 42 
     | 
    
         
            +
                  contents << template.content_tag(:changefreq, options[:changefreq] || @changefreq)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  contents << template.content_tag(:lastmod, options[:lastmod]) if options[:lastmod]
         
     | 
| 
      
 44 
     | 
    
         
            +
                  contents << template.content_tag(:priority, options[:priority]) if options[:priority]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  
         
     | 
| 
      
 46 
     | 
    
         
            +
                  template.concat(template.content_tag(@@item_tag, contents + buffer, options.delete(:xml)))
         
     | 
| 
      
 47 
     | 
    
         
            +
                  ''
         
     | 
| 
       59 
48 
     | 
    
         
             
                end
         
     | 
| 
       60 
49 
     | 
    
         | 
| 
       61 
50 
     | 
    
         
             
              end
         
     | 
    
        data/lib/navigasmic.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # coding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
            require  
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
      
 2 
     | 
    
         
            +
            require 'builders/html_builder'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'builders/xml_builder'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Navigasmic #:nodoc:
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -41,7 +41,7 @@ module Navigasmic #:nodoc: 
     | 
|
| 
       41 
41 
     | 
    
         
             
                  options[:html][:class] = add_class(options[:html][:class], 'semantic-navigation')
         
     | 
| 
       42 
42 
     | 
    
         
             
                  options[:html][:id] ||= name.to_s.underscore
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
                  builder = options 
     | 
| 
      
 44 
     | 
    
         
            +
                  builder = options.delete(:builder) || HtmlNavigationBuilder
         
     | 
| 
       45 
45 
     | 
    
         
             
                  builder.new(@template, name, options, &proc)
         
     | 
| 
       46 
46 
     | 
    
         
             
                end
         
     | 
| 
       47 
47 
     | 
    
         | 
    
        data/navigasmic.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{navigasmic}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.3.0"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Jeremy Jackson"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2010-02- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2010-02-08}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{Semantic navigation; a semantic way to build beautifully simple navigation structures in Rails.}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{jejacks0n@gmail.com}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: navigasmic
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jeremy Jackson
         
     | 
| 
         @@ -9,7 +9,7 @@ autorequire: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            date: 2010-02- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2010-02-08 00:00:00 -07:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     |