Changeset 1452

Show
Ignore:
Timestamp:
08/04/08 21:35:20
Author:
rsz
Message:

cleanup

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • HTTP/HTTP.lua

    r1416 r1452  
    533533 
    534534        aResponse( aWriter ) 
    535          
     535 
    536536        return self 
    537537    elseif not aResult then 
  • HTTP/Nanoki.lua

    r1451 r1452  
    1313 
    1414-- import dependencies 
     15local debug = require( 'debug' ) 
    1516local io = require( 'io' ) 
    1617local os = require( 'os' ) 
     
    2122local getfenv = getfenv 
    2223local getmetatable = getmetatable 
     24local package = package 
    2325local require = require 
    2426local select = select 
     
    5557end 
    5658 
     59local function Environment( aFunction, aKey, aValue ) 
     60    local anEnvironment = getfenv( assert( aFunction, 'invalid function' ) ) 
     61     
     62    if not anEnvironment or anEnvironment == _G then 
     63        anEnvironment = {} 
     64        setfenv( aFunction, anEnvironment ) 
     65    end 
     66     
     67    if aKey then 
     68        anEnvironment[ aKey ] = aValue 
     69    end 
     70     
     71    return anEnvironment 
     72end 
     73 
    5774local function Log( ... ) 
    5875    local aWriter = io.stderr 
     
    6784end 
    6885 
    69 local function Environment( aFunction, aKey, aValue ) 
    70     local anEnvironment = getfenv( assert( aFunction, 'invalid function' ) ) 
    71      
    72     if not anEnvironment or anEnvironment == _G then 
    73         anEnvironment = {} 
    74         setfenv( aFunction, anEnvironment ) 
    75     end 
    76      
    77     if aKey then 
    78         anEnvironment[ aKey ] = aValue 
    79     end 
    80      
    81     return anEnvironment 
     86local function Path( aName ) 
     87    local aSource = debug.getinfo( 1, 'S' ).source 
     88    local aSeparator = package.path:match( '(%p)%?%.' ) or '/' 
     89    local anIndex = aSource:len() - ( aSource:reverse():find( aSeparator, 1, true ) or aSource:len() ) 
     90    local aPath = ( '%s%s%s' ):format( aSource:sub( 2, anIndex + 1 ), aName, aSeparator ) 
     91 
     92    return aPath 
    8293end 
    8394 
     
    167178    HTTP[ '/' ] = WikiMainService() 
    168179    HTTP[ '/a' ] = WikiAbout() 
    169     HTTP[ '/etc/(.+)' ] = HTTPFile( 'etc/'
     180    HTTP[ '/etc/(.+)' ] = HTTPFile( Path( 'etc' )
    170181     
    171182    aService = HTTPService( '/date', WikiDateService ) 
  • HTTP/WikiContentFileService.lua

    r1439 r1452  
    130130function self:get() 
    131131    local aContent = self.content 
    132     local aName = self.name:lower() 
     132    local aName = self.name 
    133133 
    134134    if aContent and aContent.exists and aName then     
     135        local aName = aName:lower() 
     136         
    135137        if ValidContent( aContent, aName ) then 
    136138            HTTP.response.header[ 'content-type' ] = 'text/plain; charset=utf-8' 
  • HTTP/WikiContentService.lua

    r1443 r1452  
    3636local Tag = WikiService.Tag 
    3737 
     38local debug = require( 'debug' ) 
    3839local os = require( 'os' ) 
    3940local table = require( 'table' ) 
    4041 
    4142local getmetatable = getmetatable 
     43local package = package 
    4244local require = require 
    4345local setmetatable = setmetatable 
     
    6062 
    6163local function Message( self ) 
    62     local aModification = self.content.modification 
     64    local aModification = self.content.modification or 0 
    6365    local aTime = os.time() 
    6466    local anInterval = aTime - aModification 
     
    192194        local WikiRecent = require( 'WikiRecent' ) 
    193195        local WikiSearch = require( 'WikiSearch' ) 
    194         local aDirectory = File( 'Nanoki' ) 
     196        local aSource = debug.getinfo( 1, 'S' ).source 
     197        local aSeparator = package.path:match( '(%p)%?%.' ) or '/' 
     198        local anIndex = aSource:len() - ( aSource:reverse():find( aSeparator, 1, true ) or aSource:len() ) 
     199        local aPath = ( '%sNanoki' ):format( aSource:sub( 2, anIndex + 1 ) ) 
     200        local aDirectory = File( aPath ) 
    195201        local aTemplate = Template[ 'Nanoki.txt' ] 
    196202         
     
    266272 
    267273function self:getHtml() 
    268     local aLayoutTemplate = Template[ 'WikiLayout.txt' ] 
    269     local aTemplate = Template[ 'WikiContentService.txt' ] 
    270     local aLinkTemplate = aTemplate[ 'link' ] 
    271     local aLinkIterator, aLinkCount = ContentIterator( self.content.link ) 
    272     local aDate = os.date( '!*t', self.content.creation ) 
    273     local aDateLink = DateLink( aDate.year, aDate.month, aDate.day ) 
    274      
    275     Referer( self ) 
    276  
    277     aTemplate[ 'editorLink' ] = EditorLink( self ) 
    278     aTemplate[ 'version' ] = Encode(self.content.version ) 
    279     aTemplate[ 'title' ] = Encode( self.content.data.title ) 
    280     aTemplate[ 'dateLink' ] = Encode( aDateLink ) 
    281     aTemplate[ 'creation' ] = Encode( FormatDate( self.content.creation ) ) 
    282     aTemplate[ 'modification' ] = Encode( FormatDateTime( self.content.modification ) ) 
    283     aTemplate[ 'tag' ] = Tag( self.content.modification ) 
    284     aTemplate[ 'by' ] = Encode( URL( self.content.by ).host or 'localhost' ) 
    285     aTemplate[ 'message' ] = Message( self ) 
    286     aTemplate[ 'content' ] = HTML( self.content ) 
    287      
    288     for aContent, aURL in aLinkIterator do 
    289         local aNameTemplate = aLinkTemplate[ 'names' ] 
    290  
    291         aNameTemplate[ 'href' ] = Encode( aURL.path ) 
    292         aNameTemplate[ 'name' ] = Encode( aContent.title ) 
    293          
    294         aLinkTemplate[ 'names' ] = aNameTemplate 
    295     end 
    296      
    297     if aLinkCount == 0 then 
    298         aLinkTemplate = nil 
    299     end 
    300      
    301     aTemplate[ 'link' ] = aLinkTemplate 
    302      
    303     aLayoutTemplate[ 'baseLink' ] = Encode( BaseLink() ) 
    304     aLayoutTemplate[ 'indexLink' ] = Encode( IndexLink( self.content.prefix ) ) 
    305     aLayoutTemplate[ 'dateLink' ] = Encode( aDateLink ) 
    306     aLayoutTemplate[ 'feedLink' ] = FeedLink( self, 1 ) 
    307     aLayoutTemplate[ 'path' ] = Path( self ) 
    308     aLayoutTemplate[ 'query' ] = nil 
    309     aLayoutTemplate[ 'robot' ] = Robot( self.content.modification ) 
    310     aLayoutTemplate[ 'title' ] = Encode( self.content.title ) 
    311     aLayoutTemplate[ 'content' ] = aTemplate 
     274    if self.content and self.content.exists then 
     275        local aLayoutTemplate = Template[ 'WikiLayout.txt' ] 
     276        local aTemplate = Template[ 'WikiContentService.txt' ] 
     277        local aLinkTemplate = aTemplate[ 'link' ] 
     278        local aLinkIterator, aLinkCount = ContentIterator( self.content.link ) 
     279        local aDate = os.date( '!*t', self.content.creation ) 
     280        local aDateLink = DateLink( aDate.year, aDate.month, aDate.day ) 
     281         
     282        Referer( self ) 
     283     
     284        aTemplate[ 'editorLink' ] = EditorLink( self ) 
     285        aTemplate[ 'version' ] = Encode(self.content.version ) 
     286        aTemplate[ 'title' ] = Encode( self.content.data.title ) 
     287        aTemplate[ 'dateLink' ] = Encode( aDateLink ) 
     288        aTemplate[ 'creation' ] = Encode( FormatDate( self.content.creation ) ) 
     289        aTemplate[ 'modification' ] = Encode( FormatDateTime( self.content.modification ) ) 
     290        aTemplate[ 'tag' ] = Tag( self.content.modification ) 
     291        aTemplate[ 'by' ] = Encode( URL( self.content.by ).host or 'localhost' ) 
     292        aTemplate[ 'message' ] = Message( self ) 
     293        aTemplate[ 'content' ] = HTML( self.content ) 
     294         
     295        for aContent, aURL in aLinkIterator do 
     296            local aNameTemplate = aLinkTemplate[ 'names' ] 
     297     
     298            aNameTemplate[ 'href' ] = Encode( aURL.path ) 
     299            aNameTemplate[ 'name' ] = Encode( aContent.title ) 
    312300             
    313     return tostring( aLayoutTemplate ) 
     301            aLinkTemplate[ 'names' ] = aNameTemplate 
     302        end 
     303         
     304        if aLinkCount == 0 then 
     305            aLinkTemplate = nil 
     306        end 
     307         
     308        aTemplate[ 'link' ] = aLinkTemplate 
     309         
     310        aLayoutTemplate[ 'baseLink' ] = Encode( BaseLink() ) 
     311        aLayoutTemplate[ 'indexLink' ] = Encode( IndexLink( self.content.prefix ) ) 
     312        aLayoutTemplate[ 'dateLink' ] = Encode( aDateLink ) 
     313        aLayoutTemplate[ 'feedLink' ] = FeedLink( self, 1 ) 
     314        aLayoutTemplate[ 'path' ] = Path( self ) 
     315        aLayoutTemplate[ 'query' ] = nil 
     316        aLayoutTemplate[ 'robot' ] = Robot( self.content.modification ) 
     317        aLayoutTemplate[ 'title' ] = Encode( self.content.title ) 
     318        aLayoutTemplate[ 'content' ] = aTemplate 
     319                 
     320        return tostring( aLayoutTemplate ) 
     321    end 
     322     
     323    return nil, self.path( 'editor' ) 
    314324end 
    315325 
    316326function self:getLua() 
    317     local Data = require( 'Data' ) 
    318  
    319     HTTP.response.header[ 'content-type' ] = 'text/plain; charset=utf-8' 
    320  
    321     return Data( self.content.data ) 
     327    if self.content and self.content.exists then 
     328        local Data = require( 'Data' ) 
     329     
     330        HTTP.response.header[ 'content-type' ] = 'text/plain; charset=utf-8' 
     331     
     332        return Data( self.content.data ) 
     333    end 
     334     
     335    return nil, self.path( 'editor' ) 
    322336end 
    323337 
    324338function self:getTxt() 
    325     HTTP.response.header[ 'content-type' ] = 'text/plain; charset=utf-8' 
    326  
    327     return self.content.text 
     339    if self.content and self.content.exists then 
     340        HTTP.response.header[ 'content-type' ] = 'text/plain; charset=utf-8' 
     341     
     342        return self.content.text 
     343    end 
     344     
     345    return nil, self.path( 'editor' ) 
    328346end 
    329347 
    330348function self:getXml() 
    331     local WikiFeed = require( 'WikiFeed' ) 
    332     local anIterator = NameIterator( { self.content.name } ) 
    333     local aGenerator = HTML 
    334     local aContext = { title = self.content.data.title, link = HTTP.request.url, creation = self.content.creation } 
    335              
    336     HTTP.response.header[ 'content-type' ] = 'application/atom+xml; charset=utf-8' 
    337  
    338     return tostring( WikiFeed( anIterator, aGenerator, aContext ) ) 
     349    if self.content and self.content.exists then 
     350        local WikiFeed = require( 'WikiFeed' ) 
     351        local anIterator = NameIterator( { self.content.name } ) 
     352        local aGenerator = HTML 
     353        local aContext = { title = self.content.data.title, link = HTTP.request.url, creation = self.content.creation } 
     354                 
     355        HTTP.response.header[ 'content-type' ] = 'application/atom+xml; charset=utf-8' 
     356     
     357        return tostring( WikiFeed( anIterator, aGenerator, aContext ) ) 
     358    end 
     359 
     360    return nil, self.path( 'editor' ) 
    339361end 
    340362 
  • HTTP/WikiIndexService.lua

    r1419 r1452  
    235235     
    236236    if aFirst and aFirst:len() > 0 then 
    237         local aFirst = aFirst:match( '^(%w)' ) 
     237        local aFirst = aFirst:match( '^(%w)' ) or '' 
    238238         
    239239        aService.first = aFirst:lower() 
     
    242242     
    243243    if aSecond and aSecond:len() > 0 then 
    244         local aSecond = aSecond:match( '^(%w)' ) 
     244        local aSecond = aSecond:match( '^(%w)' ) or '' 
    245245         
    246246        aService.second = aSecond:lower() 
  • HTTP/WikiService.lua

    r1419 r1452  
    187187 
    188188function Yesterday( aModification ) 
     189    local aModification = aModification or 0 
    189190    local _, aStartTime, anEndTime = Today( aModification ) 
    190191    local aStartTime = aStartTime - 86400 
     
    196197 
    197198function ThisWeek( aModification ) 
     199    local aModification = aModification or 0 
    198200    local _, aStartTime, anEndTime = Today( aModification ) 
    199201    local aStartTime = aStartTime - ( 7 * 86400 )