Changeset 1350 for lang/ruby/ekfloras

Show
Ignore:
Timestamp:
11/13/07 01:11:41 (7 years ago)
Author:
cho45
Message:

lang/ruby/ekfloras/plugins/comment.rb,
lang/ruby/ekfloras/ekfloras.rb:

skip フックを追加
full_cache プラグインを追加 (超高速レスポンス)
そのた雑多な修正

Location:
lang/ruby/ekfloras
Files:
2 added
3 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/ekfloras

    • Property svn:ignore
      •  

        old new  
        44config.yaml.sample 
        55config.yaml 
        6  
         6*.marshal 
         7comments.yaml 
  • lang/ruby/ekfloras/ekfloras.rb

    r1057 r1350  
    3636                end 
    3737 
     38                # true をかえすと finish まで一気にとびます 
     39                def skip? 
     40                        false 
     41                end 
     42 
    3843                # 本体の entries のうわがき 
    3944                # 上書きしないなら定義してはいけない 
     
    6166        attr_accessor :path_info, :flavour, :entries 
    6267        attr_accessor :home, :server_root, :opts, :cgi 
    63         attr_accessor :stash 
     68        attr_accessor :stash, :out 
    6469 
    6570        attr_reader :plugins 
     
    8287                @path_info = @path_info.parent if @path_info.basename(".*").to_s == "index" 
    8388                @path_info = @path_info.dirname + @path_info.basename(".*") 
     89                @out       = "" 
    8490 
    8591                # initialize plugins and get priorities 
     
    8793                call_plugins(:start) 
    8894 
    89                 entries_plugin = @plugins.find {|plugin| plugin.respond_to? :entries } 
    90                 @entries   = entries_plugin ? entries_plugin.entries : list_entries() 
    91  
    92                 @entries = @entries.sort_by {|i| 
    93                         i.time 
    94                 }.reverse 
    95  
    96  
    97                 case @path_info.to_s 
    98                 when %r|^/(\d{4})(?:/(\d\d)(?:/(\d\d))?)?| 
    99                         _, year, month, day = *Regexp.last_match 
    100                         @entries.reject! {|i| 
    101                                 ![["%Y", year], ["%m", month], ["%d", day]].all? {|f,k| 
    102                                         !k || i.time.strftime(f) == k 
     95                if @plugins.all? {|plugin| !plugin.skip? } 
     96                        entries_plugin = @plugins.find {|plugin| plugin.respond_to? :entries } 
     97                        @entries   = entries_plugin ? entries_plugin.entries : list_entries() 
     98 
     99                        @entries = @entries.sort_by {|i| 
     100                                i.time 
     101                        }.reverse 
     102 
     103 
     104                        case @path_info.to_s 
     105                        when %r|^/(\d{4})(?:/(\d\d)(?:/(\d\d))?)?| 
     106                                _, year, month, day = *Regexp.last_match 
     107                                @entries.reject! {|i| 
     108                                        ![["%Y", year], ["%m", month], ["%d", day]].all? {|f,k| 
     109                                                !k || i.time.strftime(f) == k 
     110                                        } 
    103111                                } 
    104                         } 
    105                 else 
    106                         only_match = @entries.find {|i| i.name == @path_info.to_s } 
    107                         if only_match 
    108                                 @entries = [only_match] 
    109112                        else 
    110                                 @entries.reject! {|i| 
    111                                         i.name !~ /#{@path_info}/ 
    112                                 } 
     113                                only_match = @entries.find {|i| i.name == @path_info.to_s } 
     114                                if only_match 
     115                                        @entries = [only_match] 
     116                                else 
     117                                        @entries.reject! {|i| 
     118                                                i.name !~ /#{@path_info}/ 
     119                                        } 
     120                                end 
    113121                        end 
    114                 end 
    115  
    116                 # call plugins' filters 
    117                 @entries = call_plugins(:filter, @entries) 
    118  
    119                 @stash.title       ||= @opts[:title] 
    120                 @stash.path_info   ||= @path_info 
    121                 @stash.flavour     ||= @flavour 
    122                 @stash.entries     ||= @entries 
    123                 @stash.home        ||= @home 
    124                 @stash.server_root ||= @server_root 
    125                 @stash.cgi         ||= @cgi 
    126  
    127                 show(@stash) 
    128  
     122 
     123                        # call plugins' filters 
     124                        @entries = call_plugins(:filter, @entries) 
     125 
     126                        @stash.title       ||= @opts[:title] 
     127                        @stash.path_info   ||= @path_info 
     128                        @stash.flavour     ||= @flavour 
     129                        @stash.entries     ||= @entries 
     130                        @stash.home        ||= @home 
     131                        @stash.server_root ||= @server_root 
     132                        @stash.cgi         ||= @cgi 
     133 
     134                        @out = result(@stash) 
     135                end 
    129136                call_plugins :finish 
     137 
     138                puts @out 
     139 
    130140        rescue SystemExit 
    131141        rescue Exception => e 
     
    136146                @stash.error = e 
    137147                @stash.status = "500 Exception raised" 
    138                 show(@stash) 
     148                puts result(@stash) 
    139149        end 
    140150 
     
    178188 
    179189 
    180         def show(stash) 
     190        def result(stash) 
    181191                # erb = (defined? Erubis) ? Erubis::Eruby : MiniERB 
    182192                ret = MiniERB.new(File.read("template#{@flavour}")).result(binding) 
     
    184194                ret = call_plugins(:last, ret) unless stash.error 
    185195 
    186                 puts "Status: #{stash.status}" if stash.status 
    187                 puts ret 
    188                 exit 
     196                ret = "Status: #{stash.status}\n#{ret}"if stash.status 
     197                ret 
    189198        end 
    190199end 
  • lang/ruby/ekfloras/plugins/comment.rb

    r1055 r1350  
    1717                                r 
    1818                        } 
     19 
     20                        return unless params["comment"] 
    1921 
    2022                        if params["comment"]["spam"] == "SPAM"