Module: Sinatra::Soxer::Helpers
- Defined in:
- lib/soxer/main.rb
Overview
Helper module
This module introduces several helper methods to Soxer application.
Instance Method Summary collapse
-
#atom(doc, options = {}) ⇒ Object
The atom feed generator This method generates an atom entry from a document.
-
#breadcrumb(options = {}) ⇒ Object
The breadcrumb generator This method generates a stylable breadcrumb based on document's directory path.
-
#disqus(options = {}) ⇒ Object
Disquss helper method Returns the code for disqus comments.
-
#get_list(&block) ⇒ Object
Document list generator method This method returns a list of documents filtered by &block statement.
-
#get_page(url = ) ⇒ Object
Document reader This method reads a yaml file from disk and returns a hash.
-
#google_ads(options = {}) ⇒ Object
Google ads generator method Returns the google ads code, according to arguments.
-
#google_analytics(options = {}) ⇒ Object
Google analytics helper method Returns the basic google analytics asynchronous tracking code.
- #link_to(text, url = "/#{text.downcase.gsub(/\s/,'_')}") ⇒ Object
-
#obfuscate(str = nil) ⇒ Object
String obfuscator method Converts strings into a stream of html character codes.
-
#partial(snippet, options = {}) ⇒ Object
Partial snippet generator method Returns a partial from ./views directory as specified in sinatra's manual.
-
#sitemap ⇒ Object
Sitemap generator method This generated an XML sitemap.
Instance Method Details
#atom(doc, options = {}) ⇒ Object
The atom feed generator
This method generates an atom entry from a document.
====Accepts [doc => Hash] The document hash, read from a YAML source [options => hash] Additional options, passed to haml interpreter
====Returns [=> String] Atom feed entry.
197 198 199 200 201 202 |
# File 'lib/soxer/main.rb', line 197 def atom doc, ={} template = File.read File.join( File.dirname(__FILE__), 'views', 'atom.haml' ) haml template, .merge!( { :layout => false, :format => :xhtml, :locals => { :doc => doc } } ) end |
#breadcrumb(options = {}) ⇒ Object
The breadcrumb generator
This method generates a stylable breadcrumb based on document's directory path.
Accepts
[options => Hash] Additional options, passed to haml interpreter
Returns
[ => String] Html string containing breadcrumb path with links.
180 181 182 183 |
# File 'lib/soxer/main.rb', line 180 def ={} template = File.read File.join( File.dirname(__FILE__), 'views', 'breadcrumb.haml' ) haml( template, .merge!( :layout => false ) ) end |
#disqus(options = {}) ⇒ Object
Disquss helper method
Returns the code for disqus comments.
Calling this method without parameters generates javascript code needed
at the end of each page containing disqus comments code.
====Accepts [options => Hash] Hash element :locals containing the following symbols :account = google ads client ID
====Returns [=> String] Html code that includes Disquss comments.
237 238 239 240 |
# File 'lib/soxer/main.rb', line 237 def disqus ={} template = File.read File.join( File.dirname(__FILE__), 'views', 'disqus.haml' ) haml( template, .merge!( :layout => false ) ) end |
#get_list(&block) ⇒ Object
Document list generator method
This method returns a list of documents filtered by &block statement.
====Accepts [&block] A callback method for filtering all available file.
====Returns [=> Array] Array of hashes representing yaml files.
137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/soxer/main.rb', line 137 def get_list &block fileset= Dir.glob File.join( settings.origin, "**", "*.yaml" ) fileset.delete_if {|d| (d=~/\/index.yaml$/ and fileset.include? d[0..-12]+'.yaml') } output = fileset.map! do |f| file = FileReader.new f, settings if block_given? f = block.call file.get_content else f = file.get_content end end.compact end |
#get_page(url = ) ⇒ Object
Document reader
This method reads a yaml file from disk and returns a hash.
====Accepts [url => String] The string url. If empty, url recieved is used.
====Returns [=> Hash] A hash representation of yaml file.
123 124 125 |
# File 'lib/soxer/main.rb', line 123 def get_page url=params[:splat][0] UrlReader.new(url, settings).get_content end |
#google_ads(options = {}) ⇒ Object
Google ads generator method
Returns the google ads code, according to arguments.
====Accepts [options => Hash] Hash element :locals containing the following symbols :client = google ads client ID :slot = google ads ad slot :width = google ads element width :height = google ads element height
====Returns [=> String] Html partial for the particular google ad.
218 219 220 221 222 |
# File 'lib/soxer/main.rb', line 218 def google_ads ={} template = File.read File.join( File.dirname(__FILE__), 'views', 'google_ads.haml' ) pattern = File.join( settings.origin, "**", "*.yaml" ) haml( template, .merge!( :layout => false ) ) end |
#google_analytics(options = {}) ⇒ Object
Google analytics helper method
Returns the basic google analytics asynchronous tracking code.
====Accepts [options => Hash] Hash element :locals containing the following symbols :tracker = google analytics tracker token
====Returns [=> String] Google analytics asynchronous tracking code.
253 254 255 256 |
# File 'lib/soxer/main.rb', line 253 def google_analytics ={} template = File.read File.join( File.dirname(__FILE__), 'views', 'google_analytics.haml' ) haml( template, .merge!( :layout => false ) ) end |
#link_to(text, url = "/#{text.downcase.gsub(/\s/,'_')}") ⇒ Object
289 290 291 292 |
# File 'lib/soxer/main.rb', line 289 def link_to text, url="/#{text.downcase.gsub(/\s/,'_')}" url.gsub!(/^\//, '') if url =~ /.+:\/\// "<a href=\"#{url}\"> #{text}</a>" end |
#obfuscate(str = nil) ⇒ Object
String obfuscator method
Converts strings into a stream of html character codes.
Accepts
[str => string] String of arbitrary length.
Returns
[ => String] Html character string.
304 305 306 307 308 |
# File 'lib/soxer/main.rb', line 304 def obfuscate str=nil out = [] str.each_byte {|c| out << "&##{c};" } out.join end |
#partial(snippet, options = {}) ⇒ Object
Partial snippet generator method
Returns a partial from ./views directory as specified in sinatra's manual.
====Accepts [snippet => Symbol] Symbol, representing a partial in the ./views directory (as specified by Sinatra) Note, that the name of the file follows a RoR convention:
:some_file maps to ./views/_some_file.haml
[options => hash] Additional options, passed to haml interpreter
====Returns [=> String] Html partial.
273 274 275 |
# File 'lib/soxer/main.rb', line 273 def partial(snippet, ={}) haml ('_'+snippet.to_s).to_sym, .merge!(:layout => false) end |
#sitemap ⇒ Object
Sitemap generator method
This generated an XML sitemap.
====Accepts This method does not accept arguments.
====Returns [=> String] An XML representing the contents of the web site.
164 165 166 167 168 |
# File 'lib/soxer/main.rb', line 164 def sitemap template = File.read File.join( File.dirname(__FILE__), 'views', 'sitemap.haml' ) out = '<?xml version="1.0" encoding="UTF-8"?>'+"\n" out << haml( template, :layout => false ) end |