⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helpers.rb

📁 用ruby on rails写的一个博客程序,还不错..ruby on rails的确是个好框架
💻 RB
字号:
require File.dirname(__FILE__) + '/helpers/action_view_mods'module Haml  # This module contains various helpful methods to make it easier to do  # various tasks. Haml::Helpers is automatically included in the context  # that a Haml template is parsed in, so all these methods are at your  # disposal from within the template.  module Helpers    self.extend self        @@action_view = false    @@force_no_action_view = false    # Returns whether or not ActionView is installed on the system.    def self.action_view?      @@action_view    end    # Takes any string, finds all the endlines and converts them to    # HTML entities for endlines so they'll render correctly in    # whitespace-sensitive tags without screwing up the indentation.    def flatten(input)      input.gsub(/\n/, '&#x000A;').gsub(/\r/, '')    end    # Takes an Enumerable object and a block    # and iterates over the object,    # yielding each element to a Haml block    # and putting the result into <tt><li></tt> elements.    # This creates a list of the results of the block.    # For example:    #    #   = list_of([['hello'], ['yall']]) do |i|    #     = i[0]    #    # Produces:    #    #   <li>hello</li>    #   <li>yall</li>    #    # And    #    #   = list_of({:title => 'All the stuff', :description => 'A book about all the stuff.'}) do |key, val|    #     %h3= key.humanize    #     %p= val    #    # Produces:    #    #   <li>    #     <h3>Title</h3>    #     <p>All the stuff</p>    #   </li>    #   <li>    #     <h3>Description</h3>    #     <p>A book about all the stuff.</p>    #   </li>    #    def list_of(array, &block) # :yields: item      to_return = array.collect do |i|        result = capture_haml(i, &block)                if result.count("\n") > 1          result.gsub!("\n", "\n  ")          result = "\n  #{result.strip}\n"        else          result.strip!        end                "<li>#{result}</li>"      end      to_return.join("\n")    end    # Increments the number of tabs the buffer automatically adds    # to the lines of the template.    # For example:    #    #   %h1 foo    #   - tab_up    #   %p bar    #   - tab_down    #   %strong baz    #    # Produces:    #    #   <h1>foo</h1>    #     <p>bar</p>    #   <strong>baz</strong>    #    def tab_up(i = 1)      buffer.tabulation += i    end    # Increments the number of tabs the buffer automatically adds    # to the lines of the template.    #    # See tab_up.    def tab_down(i = 1)      buffer.tabulation -= i    end        # Surrounds the given block of Haml code with the given characters,    # with no whitespace in between.    # For example:    #    #   = surround '(', ')' do    #     %a{:href => "food"} chicken    #    # Produces:    #    #   (<a href='food'>chicken</a>)    #    # and    #    #   = surround '*' do    #     %strong angry    #    # Produces:    #    #   *<strong>angry</strong>*    #    def surround(front, back = nil, &block)      back ||= front      output = capture_haml(&block)            "#{front}#{output.chomp}#{back}\n"    end        # Prepends the given character to the beginning of the Haml block,    # with no whitespace between.    # For example:    #    #   = precede '*' do    #     %span.small Not really    #    # Produces:    #    #   *<span class='small'>Not really</span>    #    def precede(char, &block)      "#{char}#{capture_haml(&block).chomp}\n"    end        # Appends the given character to the end of the Haml block,    # with no whitespace between.    # For example:    #    #   click    #   = succeed '.' do    #     %a{:href=>"thing"} here    #    # Produces:    #    #   click    #   <a href='thing'>here</a>.    #    def succeed(char, &block)      "#{capture_haml(&block).chomp}#{char}\n"    end        # Captures the result of the given block of Haml code,    # gets rid of the excess indentation,    # and returns it as a string.    # For example, after the following,    #    #   .foo    #     - foo = capture_haml(13) do |a|    #       %p= a    #    # the local variable <tt>foo</tt> would be assigned to "<p>13</p>\n".    #    def capture_haml(*args, &block)      capture_haml_with_buffer(buffer.buffer, *args, &block)    end        private        # Sets whether or not ActionView is installed on the system.    def self.action_view(value) # :nodoc:      @@action_view = value    end    # Gets a reference to the current Haml::Buffer object.    def buffer      @haml_stack[-1]    end        # Gives a proc the same local "_hamlout" and "_erbout" variables    # that the current template has.    def bind_proc(&proc)      _hamlout = buffer      _erbout = _hamlout.buffer      proc { |*args| proc.call(*args) }    end        # Performs the function of capture_haml, assuming <tt>local_buffer</tt>    # is where the output of block goes.    def capture_haml_with_buffer(local_buffer, *args, &block)      position = local_buffer.length            block.call(*args)            captured = local_buffer.slice!(position..-1)            min_tabs = nil      captured.each do |line|        tabs = line.index(/[^ ]/)        min_tabs ||= tabs        min_tabs = min_tabs > tabs ? tabs : min_tabs      end            result = captured.map do |line|        line[min_tabs..-1]      end      result.to_s    end        include ActionViewMods if self.const_defined?  "ActionViewMods"  endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -